这个问题是专门关于编程创建JPA EntityManagerFactory由Hibernate支持5,这意味着无需配置XML文件并没有使用Spring.此外,这个问题具体是关于EntityManagerFactory 使用Hibernate Interceptor创建一个.
我知道如何以SessionFactory我想要的方式创建Hibernate ,但我不想要Hibernate SessionFactory,我想要一个EntityManagerFactory由Hibernate支持的JPA SessionFactory.鉴于EntityManagerFactory有一种方法可以获得底层证券SessionFactory,但如果你拥有的是一个SessionFactory并且所有你想要的东西都是EntityManagerFactory它的包装,看起来你运气不好.
Hibernate版本4.2.2 Ejb3Configuration已被弃用,但似乎没有其他方式以编程方式创建EntityManagerFactory,所以我做了这样的事情:
@SuppressWarnings( "deprecation" )
EntityManagerFactory buildEntityManagerFactory(
UnmodifiableMap<String,String> properties,
UnmodifiableCollection<Class<?>> annotatedClasses,
Interceptor interceptor )
{
Ejb3Configuration cfg = new Ejb3Configuration();
for( Binding<String,String> binding : properties )
cfg.setProperty( binding.key, binding.value );
for( Class<?> annotatedClass : annotatedClasses )
cfg.addAnnotatedClass( annotatedClass );
cfg.setInterceptor( interceptor ); …Run Code Online (Sandbox Code Playgroud)