gpt4 book ai didi

java - 使用 JPA 时的标准工作流程

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:23 24 4
gpt4 key购买 nike

我目前正在努力全神贯注地使用 JPA。我忍不住觉得我错过了什么或者做错了。到目前为止,它似乎是被迫的。

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

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

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

最佳答案

从带注释的实体生成数据库模式并不总是一种好方法。虽然在理论上这听起来不错 - 但在实践中生成的模式通常不是最优的并且不会满足和有经验的 DBA。

我在工作流程中遵循的方法是分别创建实体和数据库模式,同时仍然使用非常智能的工具来创建模式——类似于 Liquibase 之类的工具。 ,即与数据库无关,支持修订、回滚等......或者是一个定制的烘焙迁移工具,它只运行高度优化的数据库特定的 sql 脚本。

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

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

关于java - 使用 JPA 时的标准工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2918325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com