2012-03-02 70 views
0

我的Java應用程序使用Hibernate和SessionFactory範圍的攔截器,以便在存儲到數據庫之前更改數據。Hibernate 4 SessionFactory作用域攔截器

myConfiguration.setInterceptor(new MyInterceptor()); 
SessionFactory sf = myConfiguration.buildSessionFactory(); 

隨着hibernate 4.0的發佈,他們改變了使用類Configuration的概念。

所以我的新做法是:

final ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); 
srb.configure(...);    // Hibernate configuration 
final ServiceRegistry sr = srb.buildServiceRegistry(); 
final MetadataSources mds = new MetadataSources(sr); 
mds.add...();      // All the meta data configurations 
final Metadata md = mds.buildMetadata(); 
SessionFactory sf = md.buildSessionFactory(); 

我還沒有找到一個點,用這種新方法設置的攔截器。 關於如何設置SessionFactory作用域攔截器的任何建議?

回答

0

什麼:

final Metadata md = mds.buildMetadata(); 
SessionFactory sf = md.getSessionFactoryBuilder().with(interceptor).buildSessionFactory(); 
+0

是的,這似乎是解決方案。不幸的是,Hibernate中沒有記錄這個特性的Javadocs。非常感謝,dimitrijer! – WLanger 2012-04-02 11:35:34