且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

JPA/休眠键和复合键

更新时间:2021-12-13 09:42:24

我已经尝试了这两种方法,并且由于某些原因,我个人更喜欢避免使用复合主键:

I've tried both methods, and personally I prefer avoiding composite primary keys for several reasons:

  • 您可以创建一个包含id字段的超类,因此您不必在所有实体中都麻烦它.
  • 创建实体变得容易得多
  • JPA总体上表现更好
  • 引用实体变得更加容易.例如,只需要使用一个数字就可以大大简化在一个集合中存储一堆ID或在网页的查询字符串中指定单个ID的过程.
  • 您可以使用在超类中指定的单个equals方法,该方法适用于所有实体.
  • 如果您使用JSF,则可以创建一个通用转换器
  • 使用数据库客户端时更容易指定对象

但是它也会带来一些不好的地方:

But it brings some bad parts aswell:

  • 少量非正规化
  • 使用非持久对象(如果应该使用自动生成的ID,应该使用它)在某些情况下可能会带来麻烦,因为相等方法和此类方法需要ID才能正常工作