加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:49:25 所属栏目:Java 来源:网络整理
导读:我昨天花了很多时间阅读关于Hibernate的各种文章/教程,尽管我对它的强大程度感到震惊,但我还是有一个主要关注点. 似乎标准的做法是让Hibernate为你设计/生成你的数据库架构,这是一个令人窒息的新概念.从我读过的教程中,你只需在你的hibernate.cfg.xml配置文
我昨天花了很多时间阅读关于Hibernate的各种文章/教程,尽管我对它的强大程度感到震惊,但我还是有一个主要关注点.

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

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

我想根本就是以下内容:

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

提前致谢.

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读