gpt4 book ai didi

java - 配置 Hibernate 以适应现有的数据库约束?

转载 作者:行者123 更新时间:2023-12-01 04:32:26 25 4
gpt4 key购买 nike

过去几天,我卷起了袖子,第一次深入研究 Hibernate。我非常惊讶地发现 Hibernate 的默认行为实际上是驱动数据库本身的 DDL:

<property name="hbm2ddl.auto">create</property>
or
<property name="hbm2ddl.auto">update</property>

这与我习惯的相反,由某人(通常是 DBA)创建数据库结构:模式、表、键约束、索引、触发器等;然后我(开发人员)对我的应用程序进行编码以遵守这些限制。

这提出了一些类似相关的问题:

  1. 如何与基于 Hibernate 的应用程序一起创建/维护索引?选择您最喜欢的关系数据库 - MySQL、Postgres、Oracle 等等。您是否通过 Hibernate 指定索引(如果是,如何指定),还是必须在数据库中指定它们(如果是,如何让 Hibernate 尊重这些索引而不覆盖它们)?
  2. 与上面#1 相同的问题,但使用多列键而不是索引。
  3. 如何在 Hibernate 中指定列顺序?它只是基于实体内 Java 字段的顺序吗? Hibernate 添加的列(例如在进行连接或实现继承策略时)怎么样?
  4. 如果我在 Hibernate 创建的表上手动安装触发器,如何防止 Hibernate 覆盖/删除它?
  5. 如何指定在什么数据库/架构中创建 Hibernate 表?

提前致谢!

最佳答案

  1. 您可以在实体字段上使用@Index注释
  2. 请参阅此问题/答案:How to define index by several columns in hibernate entity?
  3. 是的,它只是基于实体中 Java 字段的顺序
  4. 您可以将 hbm2ddl.auto 设置为“验证”,使其仅验证您的架构,而不进行任何更新。
  5. 您可以使用@Table(name = "..") 注解为您的实体/表指定自定义名称

关于java - 配置 Hibernate 以适应现有的数据库约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847838/

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