我目前正在尝试与 JPA 合作。我情不自禁地觉得自己错过了一些东西或者以错误的方式做事。到目前为止,这似乎是被迫的。
我想到目前为止我所知道的是,有几种使用 JPA 的方法和支持这一点的工具。
- 您可以使用注释在 Java 中完成所有操作,并让 JPA(无论您决定使用什么实现)创建您的模式并在发生更改时更新它。
- 您可以使用工具对数据库进行逆向工程并为您生成实体类。当架构更新时,您必须重新生成这些类,或手动更新它们。
似乎两者都有缺点,也都有优点(就像所有事情一样)。我的问题是,在理想情况下,JPA 的标准工作流程是什么?大多数模式在维护阶段,特别是在开发阶段都需要更新,那么如何处理呢?
从带注释的实体生成数据库模式并不总是一个好方法。尽管理论上听起来不错,但实际上生成的模式通常不是最佳的,并且无法满足经验丰富的 DBA。
我在工作流程中遵循的方法是分别创建实体和数据库模式,同时仍然使用非常智能的工具来创建模式 - 或者类似液体碱 http://www.liquibase.org,即与数据库无关,支持修订、回滚等...或自定义烘焙迁移工具,仅运行高度优化的数据库特定 SQL 脚本。
这对您来说可能听起来不太理想,但我可以保证它可以完成工作并保持与模式相关的代码一致,因为正如 grigory 指出的那样 - 无论如何,并不是与数据库相关的所有内容都可以从实体生成。
但是,我可以从正在运行单元和集成测试的测试数据库的实体生成模式。假设您使用的是 PostgreSQL 生产环境,您可能会决定加快运行某些嵌入式内存数据库(例如 H2)的单元测试的速度,该数据库是在测试开始之前从实体创建的,并自动消失(因为它位于内存中) )测试完成执行后。这是一种非常常见的做法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)