JPA应该使用字段访问,create.query,update.query或属性访问,查找和设置

时间:2017-02-15 13:30:11

标签: java jpa eclipselink jpa-2.0 hana-cloud-platform

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

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

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

我的意见 同时hier虽然最佳答案建议使用setter

  

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

Hier第二个答案(其中有最多的赞成)表明现场访问是最佳选择。

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

信息

  • 我使用eclipseLink 2.5+作为持久性提供程序和JPA 2.0 使用Java EE6
  • 我应该提到我使用SAPs Hana Cloud Platform和 tutorial使用setter的第一个选项代替 构造函数。

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

1 个答案:

答案 0 :(得分:1)

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

话虽如此,可能会有一些情况可以保证这种黑客行为。例如,如果您所做的只是执行写入操作而从不读取,则您不希望内存充满日志对象。如果您对此不太了解,那么最好使用第二种方法