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