在过去的几天里,我卷起袖子第一次深入研究了 Hibernate。得知 Hibernate 的默认行为实际上是驱动数据库本身的 DDL,我感到非常惊讶:
<property name="hbm2ddl.auto">create</property>
or
<property name="hbm2ddl.auto">update</property>
这与我习惯的相反,有人(通常是 DBA)创建数据库结构:模式、表、键约束、索引、触发器等;然后我(开发人员)对我的应用程序进行编码以遵守这些限制。
这引发了一些类似的相关问题:
- 如何与基于 Hibernate 的应用程序一起创建/维护索引?选择你最喜欢的关系数据库——MySQL、Postgres、Oracle 等等。您是通过 Hibernate 指定索引(如果是,如何),还是必须在数据库中指定它们(如果是,如何让 Hibernate 尊重这些索引而不覆盖它们)?
- 与上面的 #1 相同的问题,但使用多列键而不是索引。
- 如何在 Hibernate 中指定列顺序?它只是基于实体内Java字段的顺序吗?Hibernate 添加的列(例如在进行连接或实现继承策略时)呢?
- 如果我在 Hibernate 创建的表上手动安装触发器,如何防止 Hibernate 覆盖/删除它?
- 如何指定在哪个数据库/模式中创建 Hibernate 表?
提前致谢!