Java 在数据库中思考还是在Hibernate中思考?
我是Hibernate新手,在设计从数据库到Hibernate代码生成的关系时遇到了几个问题。我更喜欢使用外键约束来设计一对一、一对多、多对多的关系,因为它更直观、更清晰。但是,当使用DB Browser生成代码时,我发现关系混乱,我必须大量手动重写xml以获得所需的关系。若表发生变化,那个么可能很难保持数据库和Hibernate之间的一致性 你能给我一些建议来弥补数据库设计和面向对象编程之间的差距吗?可能有不同的方法,例如,我认识的一些人不使用约束在数据库中设计关系,而是依赖Hibernate中的xml来定义关系换句话说,Hibrate中的关系(部分)独立于数据库?Java 在数据库中思考还是在Hibernate中思考?,java,hibernate,orm,Java,Hibernate,Orm,我是Hibernate新手,在设计从数据库到Hibernate代码生成的关系时遇到了几个问题。我更喜欢使用外键约束来设计一对一、一对多、多对多的关系,因为它更直观、更清晰。但是,当使用DB Browser生成代码时,我发现关系混乱,我必须大量手动重写xml以获得所需的关系。若表发生变化,那个么可能很难保持数据库和Hibernate之间的一致性 你能给我一些建议来弥补数据库设计和面向对象编程之间的差距吗?可能有不同的方法,例如,我认识的一些人不使用约束在数据库中设计关系,而是依赖Hibernate
非常感谢 当使用ORM时,您的领域模型有3个“真相来源”:
- 数据库
- 映射
- 班级
hbm2ddl
为我生成数据库。无论我想让数据库做什么,我都要确保在映射中正确描述它(例如键、索引、列长度和约束)。如果我需要在我的数据库中做一些“自定义”的事情,我会确保用各种hibernate结构来描述它,例如:
- 数据库对象:
- 扩展方言:
- 用户类型:
- 拦截器:
- 等
最终的结果是,新开发人员只需签出代码,运行hbm2ddl“导出”,并立即开始处理项目,确保他/她的数据库架构与我的数据库架构100%相同。如果xml中的hibernate映射让您感到不适,请检查以下内容:
在我看来,注释要干净得多,而且很容易重构 是的,我想要数据库的低级控制。在我的例子中,注释可能是正确的方式。谢谢。如果整体数据库设计(内部数据库结构)本身发生了变化(很少发生),那么它通常不独立于环境的其他部分(回想一下DBMS中的逻辑数据独立性,这总是很难实现)。它不仅限于Hibernate或任何其他ORMs,而且如果使用普通JDBC,同样的事情也会发生。