0

我是 JPA 新手,请和我在一起,我需要一些帮助,因为我无法决定使用什么选项。

选项1: 我将注释放在实体字段上方,并仅在创建时通过构造函数允许对对象的写访问(然后将其保存到数据库中)。据我了解,JPA 管理器仍然可以执行更新查询,因为它的字段访问(如hier所述)。这样,如果我想更新或更改条目,我必须创建一个新查询,然后我必须自己创建这些查询(如hier所述)。

选项 2: 我将注释放在 getter/setter 上方并使用属性访问,然后将实体管理器的 find 方法与 setter 一起使用(如hier)。这将为我创建查询,但现在设置器允许在创建对象后更改对象(在我将其添加到数据库之前)。

我的意见 另外,虽然最好的答案建议使用二传手

更新实体的正确方法是您只需通过设置器设置要更新的属性,并让 JPA 在刷新期间为您生成更新 SQL,而不是手动编写它

第二个答案(拥有最多的赞成票)指出,字段访问是要走的路。

我很困惑,但可能会将第二个选项与构造函数一起使用,并将设置器仅用于实体管理器并将设置器包设为私有。

信息

  • 我使用 eclipseLink 2.5+ 作为持久性提供程序和 JPA 2.0 与 Java EE6
  • 我应该提到我使用 SAPs Hana Cloud Platform,并且教程使用第一个选项和 setter 而不是构造函数。

问题: 作为 JPA 新手,我应该使用选项 1 还是 2,并且仅用于数据库,其条目将在 1-30 天后被删除。?

4

1 回答 1

1

恕我直言,您应该采用第二种方法。ORM 和 JPA 的全部意义在于避免处理数据库和编写查询。第一种方法的性能优势微不足道,不值得您在同步、可读性和代码维护方面遇到麻烦。

话虽如此,可能存在需要这种黑客攻击的情况。例如,如果您所做的只是执行写入操作而从不读取,您不希望内存被日志对象淹没。如果您对此不太确定,那么最好使用第二种方法

于 2017-02-15T13:44:03.313 回答