はじめに
Hibernate EntityManager?は、Hibernateを利用したEJB3 Persistence APIの実装です。EJB3のO/Rマッピング機能を利用することができます。
必要なもの
Hibernateを利用してEJB3 Persistence APIを利用するには、hibernateのサイトからダウンロードできる次のソフトウェアが必要になります。
- 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]