java – Hibernate是否必须推动数据库设计?

前端之家收集整理的这篇文章主要介绍了java – Hibernate是否必须推动数据库设计?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我昨天花了很多时间阅读关于Hibernate的各种文章/教程,尽管我对它的强大程度感到震惊,但我还是有一个主要关注点.

似乎标准的做法是让Hibernate为你设计/生成你的数据库架构,这是一个令人窒息的新概念.从我读过的教程中,你只需在你的hibernate.cfg.xml配置文件添加一个新实体,用@Entity注释你想要的任何POJO,并且瞧 – Hibernate为你创建表.虽然这很酷,但我想知道一些场景:

>如果您已经拥有数据库架构并且Hibernate想要为您生成的一个架构并不符合它,该怎么办?如果你有一个疯狂的DBA拒绝在预定义(非Hibernate)架构上让步怎么办?
>如果您的参考表中包含数万条记录(如世界上所有城市),该怎么办?你是否必须实例化并保存()成千上万的独特POJO,或者有没有办法配置Hibernate,以便它会尊重而不是覆盖表中已存在的数据?
>如果您想对架构/表进行性能调整,该怎么办?这包括索引,标准化超出Hibernate自动创建的内容
>如果要向表中添加约束或触发器,该怎么办?指标?

我想根本就是以下内容

看起来Hibernate会在您的数据库上创建并强制使用特定的架构/配置.我想知道这个议程将如何与我们的平台标准,我们的DBA哲学以及我们对Hibernate与之交互的表调整/调整表的能力发生冲突.

提前致谢.

解决方法

Hibernate提供了一种将对象映射到表的默认方式 – 比如几个工具/库,为了简单起见,它倾向于使用约定优于配置.

但是,如果要以不同方式将实体映射到数据库表,可以显式告诉Hibernate如何映射这些表(从简单的属性,如更改表名,再到重新定义相关实体之间的外键关系以及如何保持这些关系) ).

如果你正确地执行此操作,则不需要实例化和保存现有数据,因为这没有意义 – 数据库已经包含了与Hibernate理解的形式完全相同的实体信息. (考虑一下 – 加载然后立即保存实体应始终是无操作,因此可以完全跳过.)

所以对你的问题的简短回答是“不”.如果你不关心设计表,你可以让Hibernate采用合理的默认值.如果您确实想要显式设计架构,则可以执行此操作,然后将该精确架构描述为Hibernate.

猜你在找的Java相关文章