- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Hibernate EntityManager 文档 states ,即:
You may use a combination of all three together, annotations without JPA programming interfaces and lifecycle, or even pure native Hibernate Core, depending on the business and technical needs of your project. You can at all times fall back to Hibernate native APIs, or if required, even to native JDBC and SQL.
使用 JPA API (EntityManager) 的代码显然更易于移植(即使偶尔回退到 Hibernate Core)。
但是当我使用纯粹的 Hibernate Core 时会有什么优势吗?我想知道,JPA 2 模型是否真的适用于 Hibernate Core 而没有任何矛盾? IOW,回退到 Core 是否总是容易且没有问题?
我主要担心的是:
也许差异不仅在于 API,还在于底层语义?! (例如,可能会发生冲突的不同事务/版本控制/锁定语义:Core 文档中提到了悲观锁定,但 EntityManager 文档中没有提到 - 所以我仍然可以通过回退到 Core 来使用悲观锁定而不会引起问题吗?类似的事情...... .)
最佳答案
But would I have any advantages when using purely Hibernate Core?
如果 JPA 2.0 支持您的需求,我认为直接使用 Hibernate Core 没有任何优势(并且使用 JPA 2.0,差距变得更小,使得需要回退到 Core 成为异常(exception),而不是规则,这是一件非常好的事情)。
I wonder, if the JPA 2 model really fits on top of Hibernate Core without any contradictions?
自 JPA 1.0 以来,Hibernate 开发人员在创建 Hibernate3 时就“牢记 JPA”,并在 Hibernate3 中采用了 JPA 语义、默认值等。您可能想在这个 Tech Talk: Gavin King on Hibernate3 and EJB3 中听听 Gavin :
In this tech talk King discusses how Hibernate3 builds upon and extends EJB3, addressing such topics as:
- New features of Hibernate3
- The relationship between Hibernate3 and the EJB3 container in JBoss
- What differentiates Hibernate3 from the EJB3 specification
- Hibernate's custom annotations available outside EJB
- The future of Hibernate
并且根据我的实践经验,Hibernate 与 EJB 3 并不矛盾这一事实是正确的。
IOW, is a fallback to Core always easy and without problems?
无论您是否直接使用 Core,您都正在使用它(EntityManager
是Session
的包装器)。所以,是的,如果你真的需要的话,回到 Core 是很容易的(例如,对于那些仍然不在规范中的东西,比如 Query By Example)。而且,不,这不会导致任何问题(因为您实际上是在 JPA 中使用它或它的一个子集)。
关于java - 使用 Hibernate EntityManager(与 Hibernate Core 相比)有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440532/
有一些使用多个数据源的示例: @Inject @DataSource("users") AgroalDataSource dataSource1; @Inject @DataSource("inven
我试图使用持久性和 servlet guice 扩展,让简单的 webapp 在 Jetty 上与 Guice 和 JPA 一起工作。 我写了这个服务实现类: public class PersonS
我使用 Hibernate 5.1.0.Final、Guice、Jersey。我有创建 EntityManagerFactory 的 HibernateModule并管理EntityManager实例
我正在使用 ThreadLocal 和请求/实体模式来获取实体。这种情况发生时,我关闭了一个实体管理器,并且在后台有一些实体可以编辑、复制和修改,然后我想将其保留或与新的实体管理器合并。我不知道这是一
好的,我正在使用 EJB 3.0 和 hibernate,我们将 .ear 文件放入嵌入 Apache Tomcat 6.0.18 的 Easy-Beans 1.0.1(带有 Hibernate)部署
我正在使用 Spring + JPA + Hibernate + EntityManager 与数据库对话。我收到“A JTA EntityManager cannot use getTransact
更新数据库时我应该更喜欢什么?这两种方法的优缺点是什么?我什么时候应该使用其中一种? public void disemployEmployee(Integer employeeId, Date en
我正在尝试在存储库中注入(inject) EntityManager。 编译成功,但是当我运行应用程序并发送一个发布请求时,我收到了这个错误: Unexpected error occurred: F
我正在尝试在 Spring Tools Suite 和 Pivotal tc Server Developer Edition 上开发 Spring+Hibernate+EntityManager+S
我有一个使用 spring boot + spring data JPA 的示例项目。在日志中,我观察到 EntityManagers 在我进行第一次 rest 调用之前被创建了几次。请澄清为什么会发
给定网络应用程序中的以下情况: // EntityManager em, one per Request with Spring's OpenEntityManagerInViewFilter //
当我们在 JAVA EE 环境中的 EntityManager 上使用 @PersistenceContext 注释时,容器将创建 entityManagerFactory(我猜是整个 session
我遇到了一种情况(我认为这很奇怪,但可能很正常),我使用 EntityManager.getReference(LObj.getClass(), LObj.getId()) 来获取数据库实体,然后通过
我有以下服务... @Stateless @LocalBean public class RandomService { @EJB RandomString stringTokenizer;
我在实体类中有这个函数,但 getDoctrine 不喜欢...... public function getObject() { $em = $this->getDoctrine()->ge
我正在尝试以级联方式保存某个对象并检索它。 我有 3 个对象超过 3 个实体。 实体: class Order { /** * @var integer $id *
我正在开发一个 JPA 应用程序(使用 hibernate ),我正在与 作斗争。自动冲洗 特征。 默认情况下,每当我们处理对任何实体的查询时,完整的 实体管理器 被冲洗。在大多数情况下这是可以的:我
我刚刚建立了一个到目前为止仍然非常小的项目 maven/jpa/hibernate 项目,我试图在其中持久化一个对象。 我的类(class)是一个非常简单的类(class): @Entity publ
我当前的项目使用 HSQLDB2.0 和 JPA2.0 。 场景是:我查询数据库以获取 contactDetails 的列表的 person .我删单contactInfo在 UI 中,但不保存该数据
我是 jpa 和 spring 世界的新手,我目前正在对一个简单的方法进行一些单元测试,但只有当我在单元测试模式下运行我的测试类时才会继续收到此错误消息: java.lang.IllegalState
我是一名优秀的程序员,十分优秀!