使用 JPA 时的标准工作流程

2024-01-09

我目前正在尝试与 JPA 合作。我情不自禁地觉得自己错过了一些东西或者以错误的方式做事。到目前为止,这似乎是被迫的。

我想到目前为止我所知道的是,有几种使用 JPA 的方法和支持这一点的工具。

  • 您可以使用注释在 Java 中完成所有操作,并让 JPA(无论您决定使用什么实现)创建您的模式并在发生更改时更新它。
  • 您可以使用工具对数据库进行逆向工程并为您生成实体类。当架构更新时,您必须重新生成这些类,或手动更新它们。

似乎两者都有缺点,也都有优点(就像所有事情一样)。我的问题是,在理想情况下,JPA 的标准工作流程是什么?大多数模式在维护阶段,特别是在开发阶段都需要更新,那么如何处理呢?


从带注释的实体生成数据库模式并不总是一个好方法。尽管理论上听起来不错,但实际上生成的模式通常不是最佳的,并且无法满足经验丰富的 DBA。

我在工作流程中遵循的方法是分别创建实体和数据库模式,同时仍然使用非常智能的工具来创建模式 - 或者类似液体碱 http://www.liquibase.org,即与数据库无关,支持修订、回滚等...或自定义烘焙迁移工具,仅运行高度优化的数据库特定 SQL 脚本。

这对您来说可能听起来不太理想,但我可以保证它可以完成工作并保持与模式相关的代码一致,因为正如 grigory 指出的那样 - 无论如何,并不是与数据库相关的所有内容都可以从实体生成。

但是,我可以从正在运行单元和集成测试的测试数据库的实体生成模式。假设您使用的是 PostgreSQL 生产环境,您可能会决定加快运行某些嵌入式内存数据库(例如 H2)的单元测试的速度,该数据库是在测试开始之前从实体创建的,并自动消失(因为它位于内存中) )测试完成执行后。这是一种非常常见的做法。

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

使用 JPA 时的标准工作流程 的相关文章

  • Java - 为什么不允许 Enum 作为注释成员?

    It says 原始 String Class an Enum 另一个注释 上述任何一个的数组 只有这些类型才是合法的 Annotation 成员 为什么泛型 Enum 不能成为 Annotation 的成员 例如 Retention Re
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Java整数双除法混淆[重复]

    这个问题在这里已经有答案了 方案1 int sum 30 double avg sum 4 result is 7 0 not 7 5 VS 方案2 int sum 30 double avg sum 4 0 Prints lns 7 5
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • JPA OneToMany 列名称

    JPA中建立一对多关系时如何设置外键的列名 我想将 items id 的名称更改为 item id OneToMany private List
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi

随机推荐

  • MongoDB 选择不同的和其中

    所以我正在做一个选择不同的工作 但我还想添加另一个键 data this gt db gt command array distinct gt scores key gt target user 我需要这样的东西 SELECT DISTIN
  • 使用 VSCode 调试 Electron 渲染器进程

    I tried 这个文件 https github com Microsoft vscode recipes tree master Electron 但是遇到了问题 我一张一张地浏览了指南 一切都很好 直到 1 将renderer js的
  • git:谁推入了 post-receive 挂钩

    如何确定谁推送到存储库 IE 有人这样做git push origin master并在 post receive 挂钩中originrepo 我需要使用某人的姓名或电子邮件 如果您使用 SSH 协议将更改推送到服务器 并且每个用户在服务器
  • 显示 UILabel 的文本

    继iOS 编程 大书呆子牧场指南 第六版的指南 我尝试使用 swift 制作一个测验项目 ViewController 代码在这里 import UIKit class ViewController UIViewController IBO
  • Java中的垃圾收集器是什么?

    我是 Java 新手 对 Java 中的垃圾收集器感到困惑 它实际上有什么作用以及何时发挥作用 请描述Java中垃圾收集器的一些属性 The 垃圾收集器 http en wikipedia org wiki Garbage collecti
  • 如何从 IDE 运行/调试 Streamlit 应用程序

    我真的很喜欢 Streamlit 作为研究环境 混合笔记本 仪表板式的输出 我可以使用纯代码快速设计其定义 无单元等 并且能够在运行时通过小部件影响我的代码 这是一个游戏规则改变者 为此 我正在寻找一种运行甚至调试 Streamlit 应用
  • 使用 LINQ 计算列表中给定对象的数量

    我有一个列表 其中可以包含同一对象的多次出现 现在我需要计算给定对象包含在该列表中的频率 int count 0 foreach IMyObject item in myList if item object2Count count 我确信
  • 如何修复致命错误:无效的标记压缩接近堆限制分配失败 - JavaScript 堆内存不足

    I got an error which is FATAL ERROR Ineffective mark compacts near heap limit Allocation failed JavaScript heap out of m
  • Hive 查询为匹配条件的行序列生成标识符

    假设我有以下配置单元表作为输入 我们称之为connections userid timestamp 1 1433258019 1 1433258020 2 1433258080 2 1433258083 2 1433258088 2 143
  • 已安装软件包,但出现找不到函数的错误 R [重复]

    这个问题在这里已经有答案了 可能的重复 错误 在 R 中找不到函数 https stackoverflow com questions 7027288 error could not find function in r 我正在尝试在 R
  • 如何创建 Kotlin 比较类型?

    刚刚学习定义 DateRange 类型 val wholeYear2017 Date 2017 1 1 Date 2017 12 31 所以我创建了如下类型 class DateRange
  • 删除特定用户代理的所有流量

    有没有办法排除所有属性和所有视图Google Analytics 的访问者特定用户代理 注意 这不是为了防止垃圾邮件 机器人 我已经检查过该功能管理 gt 查看设置 gt 机器人过滤 gt 排除来自已知机器人和蜘蛛的所有点击 就是去掉一部分
  • 从全局 Facebook ID 或用户名获取 Facebook 应用范围内的用户 ID

    如果您有 Facebook 例如 Zuckerbergs 用户 id 4 或用户名 zuck 您如何获取新的应用程序范围 idGraph v2 0使用应用程序的访问令牌 在文档中似乎找不到任何有关此内容的信息 这基本上是对相反问题的答案 从
  • TypeScript 1.3 受保护的错误

    最近在VS2013中安装了新的TS版本并尝试使用protected修饰符 然而 TS 验证器向我显示一个错误 并下划线protected带红线的词 我收到类似的错误 使用未来保留字 预期的 看起来它正在研究旧的 TS 定义 检查了项目文件
  • JSpec 不再受支持?

    来自 Ruby 社区 我正在寻找 Javascript Node js 的 BDD 测试框架 我是 JSpec 并且认为它是正确的选择 因为我在 Ruby 中使用了 RSpec 但在他们的 GitHub 页面上http github com
  • 是否可以在不显示原始数据的情况下内联管理?

    在 django 管理中 我有一个带有内联的模型 我希望能够仅显示内联的 添加新 行 而不显示属于内联的表中任何预先存在的原始数据 这可能吗 我尝试过每种组合max num and extra 并且它总是显示现有的表数据 Thanks 我认
  • D3 力定向图节点上的标签/文本

    我仍然不明白为什么下面的代码不显示其标签 文本 我已经定义了 css 并设置了当移动到节点上时的标题之类的属性 Json nodes name t1 group 1 name t2 group 1 name t3 group 1 name
  • 多行字符串文字的正则表达式会产生“StackOverflowError”

    我想匹配三元组中包含的字符串 可能包含换行符的引号 以及不包含任何换行符的引号 除了最开始和最后的子字符串 有效示例 foo bar baz blah 无效示例 foo bar baz 我尝试使用以下正则表达式 如 JavaString文字
  • Rcpp包DLL可以在不重新启动R的情况下卸载吗?

    在 Windows 上安装 Rcpp 软件包时 需要确保软件包 DLL 已卸载 否则在复制新 DLL 时会出现 权限被拒绝 错误 这意味着每次重新编译时都要重新启动 R 这非常烦人 有没有办法在不杀死R的情况下卸载包DLL 我已经尝试过de
  • 使用 JPA 时的标准工作流程

    我目前正在尝试与 JPA 合作 我情不自禁地觉得自己错过了一些东西或者以错误的方式做事 到目前为止 这似乎是被迫的 我想到目前为止我所知道的是 有几种使用 JPA 的方法和支持这一点的工具 您可以使用注释在 Java 中完成所有操作 并让