我是否总是需要在休眠中为多条关系创建单独的类

5 java mapping hibernate

我正在阅读这篇文章

http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example/

但是他创建了三个类

Stock
Category
stock_category
Run Code Online (Sandbox Code Playgroud)

我是否总是需要单独的关系表,或者这可以在 2 个表中完成,也可以只在库存、类别中完成

And*_*rov 3

没有永不。这是我从很多人那里听到的常见问题。答案是,当您设计实体时:

你不能用关系(RDBMS)来思考,而必须用对象(Java)来思考

更多细节。Hibernate 试图实现一项相当困难的任务:将 Java 的面向对象世界与关系世界连接起来。在大多数情况下,它以混淆两种范式为代价来实现这一目标。

最好的策略(并且不那么痛苦)是设计您的实体并让 Hibernate 为您创建模式。所以假设

Stock entity refers to many categories (Set of Categories)
and
Category entity has a set of Stock ids
Run Code Online (Sandbox Code Playgroud)

我们有一个可以从两个实体导航的多对多关系。这里你只需要两节课

然后你需要注释(这里我假设你使用注释而不是.hbm.xml)这些集合作为多对多属性(阅读Hibernate Annotation Manual)。

编译代码。然后配置 Hibernate以自动生成模式(hbm2ddl.auto 是启用模式生成的属性)。如果一切正常,您将在数据库中看到3 个表,其中 2 个实体表和 1 个多对多关联表(这是模式的第三范式,例如最干净的一种)。

然后坚持一些实体并享受。并且永远不要忘记在使用 hibernate 时以 OO 术语进行思考(没有 JOIN 操作)