我昨天一整天都在阅读有关 Hibernate 的各种文章/教程,尽管我对它的强大感到震惊,但我对它有一个主要关注点。
似乎标准做法是允许 Hibernate 为您设计/生成您的 DB 模式,这是一个令我窒息的新的和可怕的概念。从我阅读的教程中,您只需将一个新实体添加到您的hibernate.cfg.xml
配置文件中,使用 注释任何您想要的 POJO @Entity
,然后瞧——Hibernate 会为您创建表。虽然这很酷,但它让我想知道一些场景:
- 如果你已经有一个 DB 模式并且 Hibernate 想要为你生成的那个不符合它怎么办?如果您有一个疯狂的 DBA 拒绝在预定义的(非 Hibernate)模式上让步怎么办?
- 如果您有包含数万条记录的引用表(就像世界上所有的城市一样)怎么办?您是否必须实例化
save()
数以万计的唯一 POJO,或者是否有办法配置 Hibernate,以便它尊重而不覆盖表中已经存在的数据? - 如果你想对你的模式/表进行性能调优怎么办?这包括索引、规范化,超出 Hibernate 自动创建的内容?
- 如果您想向表中添加约束或触发器怎么办?索引?
我想这的根源如下:
看起来 Hibernate 在您的数据库上创建并强制执行特定的模式/配置。我想知道这个议程将如何与我们的平台标准、我们的 DBA 理念以及我们对与 Hibernate 交互的表进行优化/调整的能力相冲突。
提前致谢。