在没有注释的情况下将 Hibernate 迁移到 JPA

2024-03-12

我有一个大型的非 Java EE、基于 JSF 的 Web 应用程序项目。我们的系统是分层的(在源代码意义上):有一个数据模型包,其上构建的是 DAO 包。我们在 DAO 包中专门使用 Hibernate 的 XML 配置映射。我们确实不想用注释来混淆数据模型,但又不专门依赖 Hibernate(除了映射相当复杂)。

我正在强烈考虑转向 Java EE 并将我们的 DAO 对象构建为 EJB。但由于我们不愿意放弃 Hibernate 的 XML,这让我想到了几个问题:

  • 是否可以在模型上不使用 JPA 注释的情况下将 Hibernate 与 JPA 结合使用?
  • 如果不是,我的 EJB 是否可以与 Hibernate 进行事务处理?我认为这就是所谓的JTA支持,但不确定。我喜欢“免费”进行交易的想法;现在我们有一个自定义编码的阶段侦听器,我想删除它处理 Hibernate 事务。
  • 有没有办法从 Hibernate 的 XML 映射配置迁移到某种 JPA XML 映射?我看不出有什么办法可以做到这一点,但显然减少与 Hibernate 的耦合会更好。

Thanks!


是否可以在模型上不使用 JPA 注释的情况下将 Hibernate 与 JPA 结合使用?

是的,这是很有可能的。您可以在 JPA 标准映射文件中指定对象模型类的所有相关属性 -orm.xml。您也可以拥有自己的映射文件,但您需要在persistence.xml.

如果不是,我的 EJB 是否可以与 Hibernate 进行事务处理?我认为这就是所谓的JTA支持,但不确定。

如果您使用 EJB,您会发现容器管理的事务非常有用。您所需要做的就是用所需的注释来注释您的 EJB@TransactionManagement http://download.oracle.com/javaee/6/api/javax/ejb/TransactionManagement.html and @TransactionAttribute http://download.oracle.com/javaee/6/api/javax/ejb/TransactionAttribute.html注解,容器会自动为您管理事务,包括在方法结束时提交事务(如果适用),以及在发生运行时异常或应用程序异常时回滚事务。

All EntityManager http://download.oracle.com/javaee/6/api/javax/persistence/EntityManager.html实例(即注入到此类 EJB 中的所有持久性上下文)将自动与底层 JTA 事务关联。请注意,只有当您允许容器注入时,这才是正确的EntityManager实例。如果您自己管理持久性上下文(通过从EntityManagerFactory http://download.oracle.com/javaee/6/api/javax/persistence/EntityManagerFactory.html实例),那么你可能需要调用EntityManager.joinTransaction() http://download.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#joinTransaction%28%29将持久化上下文中执行的所有工作与底层 JTA 事务相关联。这是必要的,因为EntityManager如果您已将持久性上下文配置为使用 JTA 数据源,则通常会将其自身与底层 JTA 事务相关联。如果不存在 JTA 事务,则不会发生此类关联,因此如果要将更改刷新到数据库,则必须加入活动的 JTA 事务。

有没有办法从 Hibernate 的 XML 映射配置迁移到某种 JPA XML 映射?

我不知道有任何这样的工具,因为我从来没有迁移过项目,但这并不意味着没有任何工具可以达到这个目的。您可能想看看休眠工具 http://www.hibernate.org/subprojects/tools.html项目,它确实支持 JPA,尽管我不确定它是否允许您从 Hibernate XML 格式转换为 JPA 格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在没有注释的情况下将 Hibernate 迁移到 JPA 的相关文章

  • 同一服务器上的许多应用程序具有相同的 JMX Mbean 类

    我有超过 5 个 Spring Web 应用程序 它们都在使用另一个通用库 这个公共库有它自己的 MBean 由于强制的唯一 objectName 约束 我的应用程序无法部署在同一服务器上 我使用 MBean 的方式是这样的 Managed
  • 连接外部 Accumulo 实例和 java

    我正在尝试使用 Accumulo 连接到虚拟机 问题是 我无法将其连接到 Java 中 我可以看到 Apache 抛出的网页 但我无法让它与代码一起工作 我认为这是缺乏知识的问题而不是真正的问题 但我找不到这方面的文档 所有示例都使用 lo
  • 使用 Hibernate 和 MySQL、全局和本地进行 Spring 事务管理

    我正在使用 MySQL Server 5 1 Spring 3 0 5 和 Hibernate 3 6 开发 Web 应用程序 我使用 Springs 事务管理 我是新手 所以如果我问一个容易回答的问题 请耐心等待 1 我读到了有关全局 x
  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch

随机推荐

  • msdeploy 上的嵌套虚拟目录已删除

    我的项目使用 msdeploy 将包发布到 IIS 它部署在项目的现有版本上 在Web应用程序中 我有一个虚拟目录 但每次部署项目时 虚拟目录都会消失 我通过以下方式调用 MSDepoly source package d 9 1 0 67
  • 将文件直接从 FTP 传输到 Azure 文件存储,无需将它们保存在本地内存或磁盘中

    我必须将文件从 FTP 传输到 Azure 文件存储 我的代码工作正常 但我正在内存中传输这些文件 这不是最佳实践 所以首先我将流读取到Byte内存中的数组 然后我将输出上传到 Azure 文件存储 现在我知道最好异步执行此操作 但我不知道
  • google.script.run 不返回字符串

    试图找出用于制作 Google 文档插件的 Google Apps 脚本 我有 Code gs function helloWorld return Hello World 在我调用的 code gs 下 侧边栏 html console
  • 播放时拔掉耳机会导致 iPhone 应用程序出现错误

    我正在创建一个基于的应用程序在这里说话示例应用程序 如果耳机已插入或默认通过扬声器播放 我希望音频通过耳机播放 我使用了底部的代码来实现这一点 并且除非在播放过程中拔掉耳机 否则它工作正常 此时播放结束 没关系 问题是 当我再次点击播放时
  • Dockerfile 还是注册表?哪种分配策略是首选?

    如果您使用 Dockerfile 制作服务 您是否更愿意使用 Dockerfile 构建镜像并将其推送到注册表 而不是分发 Dockerfile 和存储库 供人们构建镜像 哪些用例有利于 Dockerfile repo 分发 哪些用例有利于
  • 可嵌入的 jpa 类应该实现 equals 和 hashCode 吗?

    假设我有以下场景 Entity public class Person Id private Long id Surrogate key Embedded private Name name Natural key public int h
  • C++:平台相关类型 - 最佳模式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 JavaCV 从网络摄像头捕获和录制视频

    我是 JavaCV 新手 我很难找到关于我感兴趣的主题的不同问题的好教程 我已经成功地从我的网络摄像头实现了某种实时视频流 但问题是我使用我在网上找到的这段代码片段 Override public void run FrameGrabber
  • 如何设置 UIDatePickerModeCountDownTimer 的最大时间?

    我想问一下iOS倒计时最大时间怎么设置 例如最多1小时30分钟 倒数计时器是从UIDatePicker s mode Thanks EDIT 有人说我必须设置最小 最大日期 我只是在故事板中设置它们 但我没有看到任何区别 设置的时间是我当地
  • 通过 ssh 启动时 Docker 容器 mongod 错误

    我已经在 docker 容器上安装了 mongodb 并在 ubuntu 14 04 上安装了 openssh 容器正在使用 ssh 运行 但是当我 ssh 进入容器时 尝试启动 mongod 时出现以下错误 root 430f9502ba
  • 位置侦听器超时

    我当前正在使用计时器来确定位置监听器是否超时 问题是 GPS 仍然打开 我不知道为什么 当位置侦听器超时时 是否有一种可以重写的方法或更优雅的方法 考虑向您的位置管理器添加 GPS 状态侦听器 当 GPS 启动 停止 接收第一次定位或卫星状
  • Javascript - 在一页上复制多个文本区域的文本按钮

    我已经搜索过该网站的类似问题 但我仍然不知所措 基本上 我正在为一位即将离职的同事接手一个项目 他的 Intranet 页面计划应该有多个文本区域 每个文本区域都有自己的预定义文本和自己的 复制文本 按钮 单击时 它会复制到用户的剪贴板 我
  • DrawerLayout 和多窗格布局

    我的应用程序使用多窗格布局 http developer android com design patterns multi pane layouts html显示作业列表 每个Assignment可以放在一个AssignmentCateg
  • 我的自动装配数据源在 Spring 中返回 null,这是怎么回事?

    我正在尝试设置我的 dataSource 以获取连接 但它在 conn dataSource getConnection 上返回 null 这是我的 DAO 中的相关代码 Autowired public void setDataSourc
  • 无法登录部署在 Tomcat7 上的 Apache Usergrid

    我在 Ubuntu 14 04 LTS 上下载并构建了 Apache Usergrid 并按照以下给出的说明在本地 tomcat7 服务器上部署了 ROOT warhttps usergrid incubator apache org do
  • Bittorrent:为什么peers字段的值是二进制的,而不是Bencoded列表?

    我正在尝试用 C 语言实现 Bittorrent 首先 在编写代码片段之前 我尝试使用网络浏览器将以下消息 URL 发送到跟踪器服务器 你可以试试这个网址 http torrent ubuntu com 6969 announce info
  • 如何使用 Spark Scala 将 CSV 行拆分为元组

    这是我想通过 Scala 检索的数据 数据如下 用户ID 电影ID 1 1172 1 1405 1 2193 1 2968 2 52 2 144 2 248 首先我想跳过第一行 然后通过 split 分割用户和电影并映射到 userID m
  • 如何从 UITestControl 获取 ItemStatus?

    The UI自动化框架 http msdn microsoft com en us library ms747327 aspx有一个基类 自动化元件 http msdn microsoft com en us library system
  • md5(file_contents_as_string) 等于 md5_file(/path/to/file) 吗?

    If I do 这将始终产生与以下内容相同的哈希值 是的 他们返回相同的 var dump md5 file get contents FILE var dump md5 file FILE 在我的例子中返回这个 string 32 4d2
  • 在没有注释的情况下将 Hibernate 迁移到 JPA

    我有一个大型的非 Java EE 基于 JSF 的 Web 应用程序项目 我们的系统是分层的 在源代码意义上 有一个数据模型包 其上构建的是 DAO 包 我们在 DAO 包中专门使用 Hibernate 的 XML 配置映射 我们确实不想用