问题
我是Hibernate的新手,不知道是否使用aSessionFactory
或EntityManagerFactory
获取hibernate会话。两者有什么区别?优点缺点?
#1 热门回答(301 赞)
PreferEntityManagerFactory
andEntityManager
。它们由JPA标准定义。
SessionFactory
和Session
是特定于hibernate的。 EntityManager
在引擎盖下启动了休眠会话。如果你需要EntityManager
中未提供的某些特定功能,你可以通过以下方式获取会话:
Session session = entityManager.unwrap(Session.class);
#2 热门回答(28 赞)
我想补充一点,你也可以通过从266640921调用getDelegate()
方法获得Hibernate的会话。
例如:
Session session = (Session) entityManager.getDelegate();
#3 热门回答(19 赞)
使用EntityManagerFactory方法允许我们使用回调方法注释,如@ PrePersist,@ PostPersist,@ PreUpdate,无需额外配置。
使用SessionFactory时使用类似的回调将需要额外的努力。
相关的Hibernate文档可以找到9236371717和here。
Related SOF QuestionandSpring Forum discussion