1

在过去的几天里,我卷起袖子第一次深入研究了 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 表?

提前致谢!

4

1 回答 1

0
  1. 您可以@Index在实体字段上使用注释
  2. 请看这个问题/答案:如何在休眠实体中按几列定义索引?
  3. 是的,它只是基于实体中 Java 字段的顺序
  4. 您可以将 hbm2ddl.auto 设置为“验证”,使其仅验证您的架构,而不进行任何更新。
  5. 您可以使用@Table(name = "..")注释为您的实体/表指定自定义名称
于 2013-07-25T02:35:29.277 回答