使用休眠会话工厂或 JPA 实体管理器?
我正在开发一个使用Hibernate 4.1,Spring 3.1和JPA 2.0的项目,我想验证我从互联网上收集到的是正确的。
我正在尝试决定是使用 JPA 实体管理器还是特定于休眠的 sessionFactory。
起初,我计划使用entityManager和完整的JPA规范,这样我的项目就会与Hibernate分离,如果花哨的东西把我带走了,或者后来有什么东西说服了我,我可以把它换成别的东西,比如EclipseLink。
但是,实体管理器似乎有一些非常重要的限制。
我的问题:
我想使用完整的JPA规范和entityManager的唯一原因是能够相对容易地为不同的JPA 2.0兼容ORM切换Hibernate,对吧?使用entityManager真的没有性能/功能/易于编程的好处吗?
其次,休眠会话工厂似乎比实体管理器有很多好处。到目前为止,我已经遇到了实体管理器无法执行实体列表的批量插入的问题,我已经阅读了会话Factory可以。我还读到,sessionFactory可以自动返回自动生成的实体ID,而使用entityManager,您需要结束事务/刷新持久性上下文以提取新生成的id。
我喜欢我的项目与Hibernate相对分离的想法,但我宁愿能够从一开始就编写有效的数据库更新。所以我应该切换到我的项目配置为休眠和会话工厂,对吧?