2017-02-15 54 views
0

我是一个新手JPA请留下来陪我, 我需要一些帮助,因为我不能决定使用什么样的选择。JPA我应该使用字段访问,create.query,update.query或属性访问,发现和setter

选项1: 我把注释上面的实体领域,只允许在创建时通过构造函数对象写访问(然后将其保存到数据库中)。据我所知,JPA管理器可以在其字段访问后执行更新查询(如hier所述)。 这样,我要创建一个新的查询,如果我想更新或更改的条目 但后来我要创建这些查询自己(如规定hier)。

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

我的意见 也同时hier顶端回答推荐使用setter方法

更新实体正确的做法是,你只需设置 您想通过制定者更新的属性,让JPA产生 为您更新SQL冲洗,而不是手工编写它

Hier第二个答案中(其中有大多数提议)表示,现场访问是一种方式。

我很困惑,但可能会使用构造一起使用第二个选项,并使用setter方法只对实体管理器和使制定者包专用。使用2.5+的EclipseLink作为持久性提供和JPA 2.0 与Java EE6

信息

  • 我应该提到,我与SAP的花云平台工作, 有tutorial用途第一个选项是用setter而不是 的构造函数。

问题: 我应该使用选项1或2的JPA新手和只用于记录的目的,它的元素后1-30天将被删除的数据库。 ?

+1

参见http://stackoverflow.com/questions/4188048/why-should-anybody-put-annotations-on-the-getters-or-setters -when-using-jpa-to-m – perissf

+0

我已经阅读过它,它支持第二个选项,现在我看到特定的访问部分,但是对于我的场景会发生什么变化? – MADforFUNandHappy

回答

1

恕我直言,你应该采取第二个方法。 ORM和JPA的全部要点是避免必须处理数据库和写入查询。第一种方法的性能优势微乎其微,不值得在同步,可读性和代码维护方面面临的麻烦。

话虽如此,有可能的情况,这将保证这个技巧。例如,如果你所做的只是执行写入操作并且从不读取,你就不希望内存充斥着日志对象。如果你不太确定,那么最好使用第二种方法

+0

我同意这一点,让我们看看是否有人有一个很好的理由不要。 – MADforFUNandHappy