我是JPA新手请留下来, 我需要一些帮助,因为我无法决定使用什么选项。
选项1: 我将注释放在实体字段上方,并且只允许在创建时通过构造函数对对象进行写访问(然后将其保存到数据库中)。据我了解,JPA经理仍然可以执行更新查询,因为它的字段访问(如hier所述)。 这样,如果我想更新或更改条目,我必须创建一个新查询 但是我必须自己创建这些查询(如hier所述)。
选项2: 我将注释放在getter / setter之上并使用属性访问 然后使用实体管理器的find方法和setter(如hier)。这将为我创建查询,但现在setter允许在创建对象之后更改对象(在我将其添加到数据库之前)。
我的意见 同时hier虽然最佳答案建议使用setter
更新实体的正确方法是您只需设置属性即可 你想通过setter更新并让JPA生成 在刷新期间为您更新SQL而不是手动编写
Hier第二个答案(其中有最多的赞成)表明现场访问是最佳选择。
我很困惑,但可能会将第二个选项与构造函数一起使用,并仅将setter用于Entity管理器并使setter包变为私有。
信息
问题: 我应该使用选项1或2作为JPA新手,还是仅将数据库用于日志记录目的,其条目将在1-30天后删除。 ?
答案 0 :(得分:1)
恕我直言,你应该采取第二种方法。 ORM和JPA的重点是避免处理数据库和编写查询。第一种方法可忽略不计的性能优势不值得您在同步,可读性和代码维护方面遇到的麻烦。
话虽如此,可能会有一些情况可以保证这种黑客行为。例如,如果您所做的只是执行写入操作而从不读取,则您不希望内存充满日志对象。如果您对此不太了解,那么最好使用第二种方法