休止状態の概要
Hibernate は、パフォーマンスを向上させるためにキャッシュとスナップショットのメカニズムを提供します。
そのキャッシュは、一次キャッシュと二次キャッシュに分かれています。
Hibernate 1 次キャッシュ: SQL ステートメントがトランザクションで実行されると、返された結果はセッションの Map コレクションに保存されます (もちろん、スナップショットもあります)。
テスト: (以下のコードはすべてtry/catchブロック内にあります)
Configuration config=new Configuration().configure();//configure()方法是加载src/hibernate.cfg.xml配置文件 SessionFactory sf=config.buildSessionFactory(); Session s=sf.openSession();//Session是高一级的对Connection的封装 Transaction tran=null; try { tran=s.beginTransaction(); //代码在此 tran.commit(); } catch (HibernateException e) { if(tran!=null){ tran.rollback(); } e.printStackTrace(); } finally{ s.close(); sf.close(); }
Query: get()、load()、ネイティブSQL、HQL、Criteria(HQLよりもオブジェクト指向のクエリメソッドを含む)
//1.get(),load()方法测试 User u=(User) s.get(User.class, 1);//第一次查询生成SQL语句,并将结果放入缓存 User u1=(User) s.get(User.class, 1);//第二次查询并无生成SQL语句,但结果取自缓存 p(u==u1);//true //2.HQL查询 Query q=s.createQuery("from domain.User where id=1"); User u2=(User) q.uniqueResult();//第三次查询生成了SQL语句,但结果取自缓存 p(u2==u);//true //3.原生Sql SQLQuery q1=s.createSQLQuery("select * from User where id=1"); q1.addEntity(User.class); User u3=(User) q1.uniqueResult();//第四次查询生成了SQL语句,但结果取自缓存 p(u3==u);//true //4.Criteria查询 Criteria c=s.createCriteria(User.class); c.add(Restrictions.eq("id", 1)); User u4=(User) q1.uniqueResult();//第五次查询生成了SQL语句,但结果取自缓存 p(u4==u);//true
概要クエリ:
追加: save()、persistent()
User user = new User();//对象的瞬态 user.setName("xiaobai"); user.setAge(121); s.save(user);//对象的持久态 s.persist(user);
ここでの 2 つのメソッドの違いは、メソッドを実行する前に主キーを設定する問題と、メソッドの実行後に主キーを返す問題です。その方法。
1、persist() は、一時的なインスタンスを永続化しますが、識別子 (識別子の主キーに対応する属性) が永続的なインスタンスに直ちに埋められること、および識別子の埋め込みが「保証」されるわけではありません。洗い流す時間が遅れる場合があります。
2. save() は、一時的なインスタンスの永続化識別子を生成し、その識別子を返すため、SQL 挿入がすぐに実行されます。
User u = new User(); u.setName("xiaobai"); u.setAge(121); s.save(u);//插入数据库,并将对象瞬态转为持久态,将返回对象存入缓存 User u1=(User) s.get(User.class, u.getId());//这次查询没有生成SQL语句,结果取自Session的缓存 p(u1==u);//true
Delete: delete()
User u=(User) s.get(User.class, 10);//クエリ操作を実行します
s.delete(u);//オブジェクトの永続状態をフリー状態に変換しますstate
もちろん、データを削除するためにクエリ操作を実行するとパフォーマンスが低下すると思われる場合は、次のようにすることもできます。
s.delete(u);
Update: update()
u.setName("set");
でも時々 s.update( Object) メソッドを実行する必要はありません。これには、オブジェクトの永続状態の機能が含まれます ([スナップショット] もその役割を果たします)。
//当然,也可以这么做 User u=new User();//对象的瞬态,不具备自动更新功能,需要我们手动update() u.setAge(1); u.setId(1); u.setName("1"); s.update(u);
* 永続的な状態: 休止状態に関連する、データベース テーブルに対応する ID---OID がある
* 無料state : Hibernate とは関係ありませんが、データベーステーブルに対応する ID があります
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











SpringBoot プロジェクトへの Hibernate の統合 はじめに Hibernate は、Java オブジェクトをデータベース テーブルにマップして永続化操作を容易にする、人気のある ORM (オブジェクト リレーショナル マッピング) フレームワークです。 SpringBoot プロジェクトでは、Hibernate を統合すると、データベース操作をより簡単に実行できるようになります。この記事では、SpringBoot プロジェクトに Hibernate を統合する方法と、対応する例を示します。 1.依存関係の導入pom.xml ファイルに次の依存関係を導入します: org.springframework.bootspring-boot-starter-data-jpam

Java は、ソフトウェア開発の分野で広く使用されているオブジェクト指向プログラミング言語です。 Hibernate は、Java オブジェクトの永続性を管理するためのシンプルかつ効率的な方法を提供する、人気のある Java 永続性フレームワークです。ただし、開発プロセス中に Hibernate エラーが発生することが多く、これらのエラーによりプログラムが異常終了したり、不安定になったりする可能性があります。 Hibernate エラーを処理および回避する方法は、Java 開発者が習得しなければならないスキルとなっています。この記事では一般的な Hib を紹介します。

Hibernate と mybatis の違い: 1. 実装方法、2. パフォーマンス、3. オブジェクト管理の比較、4. キャッシュのメカニズム。詳細な紹介: 1. 実装方法、Hibernate はオブジェクトをデータベース テーブルにマップする完全なオブジェクト/リレーショナル マッピング ソリューションですが、MyBatis では開発者が SQL ステートメントと ResultMap を手動で記述する必要があります; 2. パフォーマンス、開発速度の点で Hibernate は可能です。 MyBatis は、Hibernate が DAO 層などを簡素化するためです。

Hibernate の 1 対多および多対多 Hibernate は、Java アプリケーションとリレーショナル データベース間のデータ アクセスを簡素化する優れた ORM フレームワークです。 Hibernate では、1 対多および多対多の関係を使用して、複雑なデータ モデルを処理できます。 Hibernate の 1 対多 Hibernate では、1 対多の関係は、1 つのエンティティ クラスが他の複数のエンティティ クラスに対応することを意味します。たとえば、1 つの注文は複数の注文アイテム (OrderItem) に対応することができ、1 人のユーザー (User) は複数の注文 (Order) に対応することができます。 Hibernate で 1 対多の関係を実装するには、エンティティ クラスでコレクション属性を定義して格納する必要があります。

この記事では、Hibernate で一括挿入/更新を実行する方法を説明します。 SQL ステートメントを実行するときは、データベースに対してネットワーク呼び出しを行うことによって実行されます。ここで、データベース テーブルに 10 個のエントリを挿入する必要がある場合、10 回のネットワーク呼び出しを行う必要があります。代わりに、バッチ処理を使用してネットワーク呼び出しを最適化できます。バッチ処理を使用すると、単一のネットワーク呼び出しで一連の SQL ステートメントを実行できます。これを理解して実装するには、エンティティを定義しましょう- @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Java フレームワーク テクノロジ スタック: SpringMVC、Hibernate、MyBatis など、一般的に使用される Java フレームワークを紹介します。Java の継続的な開発に伴い、開発プロセスを簡素化するために、ますます多くのフレームワークが開発されています。その中でも、SpringMVC、Hibernate、MyBatis などは、Java 開発で最もよく使用されるフレームワークの 1 つです。この記事では、読者がこれらのフレームワークをよりよく理解し、適用できるように、これらのフレームワークの基本概念と使用法を紹介します。まずはSPを紹介します

Hibernate は、リレーショナル データベースと Java プログラムの間のデータ マッピングを相互にバインドするオープン ソースの ORM フレームワークで、開発者がデータベース内のデータに簡単にアクセスできるようにします。 Hibernate フレームワークを使用すると、SQL ステートメントを作成する作業が大幅に軽減され、アプリケーションの開発効率と再利用性が向上します。以下の観点から Hibernate フレームワークを紹介していきます。 1. Hibernate フレームワークの利点: オブジェクト リレーショナル マッピング、データベース アクセスの詳細の隠蔽、開発の容易化

キャッシュは、クエリ実行時のデータベース ネットワーク呼び出しを減らすのに役立ちます。レベル 1 キャッシュとセッション リンク。これは暗黙的に実装されます。 1 次キャッシュは、セッション オブジェクトが存在するまで存在します。セッション オブジェクトが終了または閉じられると、キャッシュされたオブジェクトはなくなります。 2 次キャッシュは複数のセッション オブジェクトに対して機能します。セッションファクトリーとリンクされています。 2 次キャッシュ オブジェクトは、単一のセッション ファクトリを使用するすべてのセッションで使用できます。これらのキャッシュ オブジェクトは、特定のセッション ファクトリが閉じられると終了します。 2 次キャッシュを実装するには、2 次キャッシュを使用するための次の依存関係を追加する必要があります。 <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de
