我正在开发JavaEE应用程序,我使用JPA / Hibernate作为持久性引擎。在开发应用程序时,我想到了一些问题。
应用程序由用户及其在N:M关系中的角色组成。这是上表的数据库子集。
我对Hibernate相对较新,起初我要求IntelliJ IDEA为我生成映射。它的作用是生成以下Java类:
因此,它生成了关系表和两个1:N关系的映射,一个在user
和userXrole
之间,一个在role
和userXrole
之间。
经过一些研究,我发现通过使用@ManyToMany
注释,我可以省略将userXrole
表映射到Java类,并在注释中将其声明为@JoinTable
所以问题是:
它是一种更通用的方式,有助于生成,还是有其他任何优势。你会赞成这种或那种方式吗?
答案 0 :(得分:1)
它是一种更通用的方式,有助于生成,还是有其他任何优势。
JPA不知道某个表是否只是一个连接表,这就是你必须告诉它的原因(使用@JoinTable
)。生成器可能会猜测,但如果您的表名与JPA默认值匹配,它可能只生成@ManyToMany
。
你会支持这种或那种方式吗?
我使用@ManyToMany,如果我没有理由(对于懒惰/渴望获取更精细的控制可能?)用于单独的映射实体,主要是因为代码少=错误少。