Java 不同数据库和域模型之间的Hibernate映射
我已经创建了一个域和数据库模型。域模型用于RESTAPI。两者都有类似的组成部分,如产品、类别、客户、零售商等。。。但如果你仔细看看这两种模型。你可以看到一些不同。例如,您可以在数据库模型中看到零售商有多个产品。但在域模型中,您可以看到每个产品都有一个零售商。这样做的原因是因为我需要能够返回不同零售商的多个产品列表 您还可以在域模型中看到产品具有productproperties。在数据库中,这也是以与域模型不同的方式完成的。数据库模型有一列属性(例如:高度、重量、分辨率等)。在数据库中,产品有一个productproperty,它有一个值和一个属性 域模型: 数据库模型/设计: 我对Hibernate做了一些研究,并做了一个测试项目来看看这个映射是如何工作的。我做了一个简单的项目。但当我开始用这些模型创建一个项目时,我陷入了困境。我找不到一种方法让它工作。我确实读了一些关于“POJO”的书,所以也许一个解决方案可以是为数据库创建POJO,然后将它们映射到我的域模型,但我不确定这一点。所以我的问题是,如何创建一个数据库,比如带有hibernate映射的域模型的模型Java 不同数据库和域模型之间的Hibernate映射,java,hibernate,intellij-idea,nhibernate-mapping,Java,Hibernate,Intellij Idea,Nhibernate Mapping,我已经创建了一个域和数据库模型。域模型用于RESTAPI。两者都有类似的组成部分,如产品、类别、客户、零售商等。。。但如果你仔细看看这两种模型。你可以看到一些不同。例如,您可以在数据库模型中看到零售商有多个产品。但在域模型中,您可以看到每个产品都有一个零售商。这样做的原因是因为我需要能够返回不同零售商的多个产品列表 您还可以在域模型中看到产品具有productproperties。在数据库中,这也是以与域模型不同的方式完成的。数据库模型有一列属性(例如:高度、重量、分辨率等)。在数据库中,产品有
PS:我知道数据库模型与域模型不完全一致。对于Hibernate映射,您应该使用数据库模型,因为这些模型直接映射到数据库字段。域模型/POJO应在控制器方法中使用,这也提供了一层安全性,因为如果您决定修改数据库表,您的API不会受到影响。对于Hibernate映射,您应该使用数据库模型,因为这些模型直接映射到数据库字段。域模型/POJO应在控制器方法中使用,控制器方法还提供了一层安全性,因为如果您决定修改数据库表,您的API不会受到影响。这是一个没有简单答案的问题,因为您要求的是以下内容: 请让这一切顺利 您应该从HibernateJava类生成DDL(自上而下),或者从DB模式生成HibernateJava类(自下而上) 自上而下的方法由hibernate直接支持——只需google使用hibernate生成DDL IntelliJ IDEA支持自底向上的方法。本博客文章解释了如何做到这一点: 我建议您采用自上而下的方法,因为这是一种独立于工具的方法,并且支持得更好 为不同的目的开发hibernate类和数据库模式会导致不希望出现的映射问题 此外,您正在谈论用于RESTAPI的
域
模型。
我建议,您使用HibernateJava类模型作为内部域模型——可能并不完美,但已经足够好了。RESTAPI类模型对外公开,对该模型的更改应谨慎,因为更改该模型时可能会破坏某些使用者
你应该如何继续
你应该采取自上而下的方法。
创建尽可能反映实体关系图的java类,向它们添加hibernate注释,使用drop Create
在启动时删除并重新接收模式(读取),并确保应用程序启动,尽快成功创建模式
使用这种方法,如果映射有效,您将立即得到反馈
更高级:对真实数据库使用单元测试,以确保您的hibernate模型按预期工作。这是一个没有简单答案的问题,因为您要求的是以下内容: 请让这一切顺利 您应该从HibernateJava类生成DDL(自上而下),或者从DB模式生成HibernateJava类(自下而上) 自上而下的方法由hibernate直接支持——只需google使用hibernate生成DDL IntelliJ IDEA支持自底向上的方法。本博客文章解释了如何做到这一点: 我建议您采用自上而下的方法,因为这是一种独立于工具的方法,并且支持得更好 为不同的目的开发hibernate类和数据库模式会导致不希望出现的映射问题 此外,您正在谈论用于RESTAPI的
域
模型。
我建议,您使用HibernateJava类模型作为内部域模型——可能并不完美,但已经足够好了。RESTAPI类模型对外公开,对该模型的更改应谨慎,因为更改该模型时可能会破坏某些使用者
你应该如何继续
你应该采取自上而下的方法。
创建尽可能反映实体关系图的java类,向它们添加hibernate注释,使用drop Create
在启动时删除并重新接收模式(读取),并确保应用程序启动,尽快成功创建模式
使用这种方法,如果映射有效,您将立即得到反馈
更高级:对真实数据库进行单元测试,以确保您的hibernate模型按预期工作。谢谢您的回复。你可能有一个如何做到这一点的例子吗?谢谢你的回答。你能举个例子来说明如何做到这一点吗?非常感谢你的回复。我将研究一下自上而下和自下而上的方法。但是你会建议哪一个呢?@dirk.z查看hibernate:
虽然