JPAやHibernateのEntityManagerのインタフェースSessionインターフェースの比較

本論文では、セッションのEntityManagerインターフェースおよびJPAインターフェースを休止状態は、参照ここで比較されSunweiqin:著者、2020年に出版され、第3版「を堪能JPAやHibernateはJavaオブジェクトの永続化技術の説明」。

EntityManagerのインターフェース及びこれら二つのインタフェース・メソッドの表1-1に非常に類似セッションインタフェースの多くの特徴を比較しました。
1-1比較のEntityManagerインターフェース・セッション・インターフェース・テーブルが
JPAやHibernateのEntityManagerのインタフェースSessionインターフェースの比較
上記の表から分かるように、EntityManagerのインターフェース方法のほとんどは雪村の方法で対応するインターフェースを有しています。アクションのEntityManagerの削除()メソッドとセッション削除()メソッドは、実質的に同じである差が小さい:セッションは、方法は、永続オブジェクトとフリーオブジェクトを削除することができ、EntityManagerの削除)(削除する()メソッドあなただけの永続オブジェクトを削除することができます。
主にJPA APIを介してプログラムがデータベースにアクセスすることではなく、個々のケースであなたはHibernateのAPIにアクセスする必要がある場合は、基本となるのEntityManagerインターフェースからSessionオブジェクトを取得できます。

//获得Hibernate API中的Session
Session session = entityManager.unwrap( Session.class );

以下は、更新データベース内のデータと、2つの一般的な方法まとめた
永続オブジェクトのプロパティを変更し、ロードする(1)永続オブジェクトを、そしてそれは自動的に掃除しながら、対応するセッションデータベースキャッシュ内のデータの根底に更新します。
JPAのAPIにより永続オブジェクトを更新するには、次のコード:

//使用JPA API
tx = entityManager.getTransaction(); 
tx.begin(); //开始一个事务
Customer customer=(Customer)entityManager.find(Customer.class,
                                            Long.valueOf(1));
customer.setName("Jack"); //修改Customer持久化对象的name属性
tx.commit(); //清理持久化缓存,更新数据库中的相应数据

HibernateのAPIを介して永続オブジェクトを更新するには、次のコード:

//使用Hibernate API
tx = session.beginTransaction(); 
Customer customer=(Customer)session.get(Customer.class,
                                         Long.valueOf(1));
customer.setName("Jack"); //修改Customer持久化对象的name属性
tx.commit(); //清理持久化缓存,更新数据库中的相应数据

(2)遊離のオブジェクトのプロパティを変更し、遊離標的永続オブジェクトに変換されます。
マージJPA APIのEntityManager()メソッドによって更新をデータベース内の対応するデータを更新するために、次のコード

//使用JPA API
Customer customer=…  //假定customer为游离对象
customer.setName("Jack"); //修改Customer游离对象的name属性

tx = entityManager.getTransaction(); 
tx.begin(); //开始一个事务

//计划执行一条SQL update语句
Customer mergedCustomer=entityManager.merge(customer);  
tx.commit();  //清理持久化缓存,更新数据库中的相应数据

:HibernateのAPIのupdate()メソッドではセッションによってデータベース内の対応するデータを更新するために、次のコード

//使用Hibernate API
Customer customer=…  //假定customer为游离对象
customer.setName("Jack"); //修改Customer游离对象的name属性

tx = session.beginTransaction(); 
session.update(customer);  //计划执行一条SQL update语句
tx.commit();  //清理持久化缓存,更新数据库中的相应数据

おすすめ

転載: blog.51cto.com/sunweiqin/2418795