gpt4 book ai didi

java - JPA 我应该使用字段访问、create.query、update.query 或属性访问、查找和 setter

转载 作者:行者123 更新时间:2023-12-01 08:53:05 24 4
gpt4 key购买 nike

我是一名 JPA 新手,请跟着我,我需要一些帮助,因为我无法决定使用哪个选项。

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

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

我的看法同时hier最佳答案建议使用 setter

The right way to update an entity is that you just set the properties you want to updated through the setters and let the JPA to generate the update SQL for you during flushing instead of writing it manually

Hier第二个答案(获得最多赞成票)指出,现场访问是正确的选择。

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

信息

  • 我使用 eclipseLink 2.5+ 作为持久性提供程序和 JPA 2.0使用 Java EE6
  • 我应该提到我与 SAP Hana Cloud Platform 合作并且那里tutorial将第一个选项与 setter 一起使用构造函数。

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

最佳答案

恕我直言,你应该采取第二种方法。 ORM 和 JPA 的全部目的是避免处理数据库和编写查询。第一种方法的性能优势可以忽略不计,不值得您在同步、可读性和代码维护方面面临麻烦。

话虽如此,在某些情况下可能会发生这种黑客攻击。例如,如果您所做的只是执行写入操作而不是读取,那么您不希望内存中充满日志对象。如果您对此不太确定,那么最好使用第二种方法

关于java - JPA 我应该使用字段访问、create.query、update.query 或属性访问、查找和 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42250778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com