我正在开发JavaEE应用程序,并使用JPA/Hibernate作为持久性引擎。在开发应用程序时,我想到了一些问题。JPA /休眠ManyToMany vs双面OneToMany/ManyToOne
该应用程序由用户及其在N:M关系中的角色组成。这是上表的数据库子集。
我是比较新的休眠并在第一次我问IntelliJ IDEA的产生为我的映射。它的所作所为是生成以下Java类:
- UserEntity.java
- RoleEntity.java
- UserXRoleEntity.java
- UserXRoleEntityPK.java
因此,它生成的映射关系表和两个1:N关系,一个在user
和userXrole
之间,另一个在role
和userXrole
之间。
经过一番研究,我发现,通过使用@ManyToMany
注释,我可以省略userXrole
表映射到Java类,只是标注为@JoinTable
内申报。
所以,问题是:
- 为什么的IntelliJ生成实体方式?
它只是一个更通用的方式,有助于代或它有任何其他优点。你会赞成这种或那种方式吗?
感谢您的回复。您能否提供任何源链接,说明JPA的数据库命名约定? – errikos
http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-eval-oth-JSpec/ - 对于本案2.10.4(pdf中的第48页) – duckstep