*はじめに
Hibernate EntityManagerは、Hibernateを利用したEJB3 Persistence APIの実装です。EJB3のO/Rマッピング機能を利用することができます。
*必要なもの
Hibernateを利用してEJB3 Persistence APIを利用するには、[[hibernateのサイト:http://www.hibernate.org/]]からダウンロードできる次のソフトウェアが必要になります。
-Hibernate3.1rc1
-Hibernate EntityManager3.1beta4
EntityManager 3.1beta4はHibernate3.1rc2、rc3では動作しないので注意してください。Hibernate3.1rc1からは下記のjarが必要です。
-asm.jar
-asm-attrs.jar
-commons-collections-2.1.1.jar
-commons-logging-1.0.4.jar
-hibernate3.jar
-jboss-common.jar
-dom4j-1.6.1.jar
-jta.jar
EntityManagerからは下記のjarが必要です。
-ejb3-persistence.jar
-hibernate-entitymanager.jar
-hibernate-annotations.jar
-javassist.jar
*統計情報の取得
Hibernateには、エンティティクラス毎にCRUDの操作の統計情報を取るAPIが用意されている。下記のようにすると、そのAPIを利用して、統計情報を出力できる。
***コード
EntityManagerFactoryImpl factoryImpl = (EntityManagerFactoryImpl)factory;
Statistics stat = factoryImpl.getSessionFactory().getStatistics();
String[] entities = stat.getEntityNames();
System.out.println("[dump]");
for(int i=0;i<entities.length;i++){
System.out.println(entities[i]+":"+stat.getEntityStatistics(entities[i]));
}
***実行結果
org.ultimania.ejb.Purchaseorder:EntityStatistics
[loadCount=0,updateCount=0,insertCount=0,deleteCount=0,fetchCount=0,optimisticLockFailureCount=0]
org.ultimania.ejb.Orderdetail:EntityStatistics
[loadCount=0,updateCount=0,insertCount=0,deleteCount=0,fetchCount=0,optimisticLockFailureCount=0]
org.ultimania.ejb.Customer:EntityStatistics
[loadCount=0,updateCount=0,insertCount=0,deleteCount=0,fetchCount=0,optimisticLockFailureCount=0]
org.ultimania.ejb.Item:EntityStatistics
[loadCount=2,updateCount=0,insertCount=0,deleteCount=0,fetchCount=0,optimisticLockFailureCount=0]