当前位置: 首页 > 面试题库 >

使用Hibernate或JPA批注

袁奇文
2023-03-14
问题内容

我在我们的项目和Hibernate Domain Pojo对象的基于注释的配置中使用Hibernate。对于基于注释的配置,我们有两个选择

  1. 使用基于JPA的注释 javax.persistence.*
  2. 使用Hibernate本机注释 org.hibernate.annotations.*

当前,我们对POJO文件使用基于JPA的注释配置,并使用Hibernate本机API(如SessionFactory,Session等)打开会话并执行数据库操作。

我有以下问题:

  1. 混合使用JPA注释和使用Hibernate本机API是否有问题?
  2. 此链接说明了一个此类问题(级联-jpa-hibernate-annotation-common-mistake)
  3. 请提供您的专业知识,使用哪种类型的注释
    1. JPA
    2. hibernate原生
    3. 混合两者?

问题答案:

Hibernate提供了一种JPA实现。如果您在代码中使用纯JPA,则在出现需求时可以随意更改为其他实现。例如,EclipseLink /
TopLink
和OpenJPA是不同客户可能需要的实现。完整的实现列表在这里。

如果您被迫使用hibernate提供的任何异国功能,而JPA规范中没有这些功能,则应在代码库中使用hibernate特定的API。hibernate论坛的相关讨论在这里。



 类似资料:
  • 我正在从事一个使用Hibernate4.1、Spring3.1和JPA2.0的项目,我想验证我从互联网上收集到的信息是否正确。 我正在尝试决定是使用JPA entityManager还是特定于hibernate的sessionFactory。 起初,我计划使用entityManager和完整的JPA规范,因此我的项目将与Hibernate脱钩,如果这种想法吸引了我,或者后来有什么东西说服了我,我可

  • 问题内容: 我需要从每日CSV文件中消耗大量数据。CSV包含约12万条记录。使用hibernate模式时,这会减慢爬行速度。基本上,当使用saveOrUpdate()时,hibernate似乎在每个单独的INSERT(或UPDATE)之前执行SELECT。对于使用saveOrUpdate()持久存储的每个实例,在实际的INSERT或UPDATE之前发出SELECT。我能理解为什么要这样做,但是在进

  • 问题内容: 我有一个返回sys-refcursor的Oracle函数,当我使用Hibernate调用此函数时,出现以下异常。 我该如何解决? Oracle功能 我的实体班 在DAO中 问题答案: 可以按以下方式使用EntityManager调用Oracle函数或存储过程。 对于Oracle功能 创建一个以sys_refcursor作为返回类型的函数 在实体类中,将函数定义为 对于Oracle存储过

  • 问题内容: 我已经与Hibernate启动了一个新项目。Hibernate注释是更好的选择还是Hibernate XML映射更好? 我已经在XML配置中使用了Hibernate,但是我不了解注释。 进行基于注释的实施时有什么问题吗? 基于注释的应用程序维护更容易或更复杂吗? 哪一种更好(即注释或XML映射),哪一种被广泛使用?为什么? 如果我在不同的级别(即生产或集成或开发级别)使用另一个数据库,

  • 问题内容: 如何 在Hibernate / JPA中使用? 问题答案: JPQL / JPA没有Straight_join。 您将需要在NativeQuery中使用它。 entityManager.createNativeQuery(…);

  • 问题内容: 我有一个返回sys-refcursor的Oracle函数,当我使用Hibernate调用此函数时,出现以下异常。 我该如何解决? Oracle功能 我的实体班 在DAO中 问题答案: 可以通过以下方式使用EntityManager调用Oracle函数或存储过程。 对于Oracle功能 创建一个以sys_refcursor作为返回类型的函数 在实体类中,将函数定义为 对于Oracle存储