Java JPA/Hibernate ManyToMany vs双面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面
我正在开发一个JavaEE应用程序,并使用JPA/Hibernate作为持久性引擎。在开发应用程序时,我想到了一些问题 应用程序由N:M关系中的用户及其角色组成。下面是上述表的数据库子集 我对Hibernate比较陌生,起初我让IntelliJ IDEA为我生成映射。它所做的是生成以下Java类:Java JPA/Hibernate ManyToMany vs双面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面单面,java,database,hibernate,jpa,intellij-idea,Java,Database,Hibernate,Jpa,Intellij Idea,我正在开发一个JavaEE应用程序,并使用JPA/Hibernate作为持久性引擎。在开发应用程序时,我想到了一些问题 应用程序由N:M关系中的用户及其角色组成。下面是上述表的数据库子集 我对Hibernate比较陌生,起初我让IntelliJ IDEA为我生成映射。它所做的是生成以下Java类: UserEntity.java RoleEntity.java UserXRoleEntity.java UserXRoleEntityPK.java 因此,它生成了关系表和两个1:N关系的映射
- UserEntity.java
- RoleEntity.java
- UserXRoleEntity.java
- UserXRoleEntityPK.java
user
和userXrole
之间,一个在role
和userXrole
之间
经过一些研究,我发现,通过使用@ManyToMany
注释,我可以省略将userXrole
表映射到Java类中,而只是在注释中将其声明为@JoinTable
因此,问题是:
- 为什么IntelliJ会以这种方式生成实体
@JoinTable
)。生成器可能会猜测,但它可能只会在表名与JPAs默认值匹配的情况下生成@ManyToMany
你会赞成一种方式还是另一种方式
如果我没有理由的话,我会使用@ManyToMany(可能是对延迟/急切抓取的细粒度控制?)作为单独的映射实体,这主要是因为代码越少,错误就越少。谢谢你的回复。您能否提供任何说明JPA数据库命名约定的源链接本案例2.10.4(pdf第48页)