在POJO Java bean中,这样的代码可能是有益的,尤其是对于集合:
class POJO {
private Collection<X> col;
public Collection<X> getCol() {
if (col == null)
col = new SomeCollection<X>();
return col;
}
}
Run Code Online (Sandbox Code Playgroud)
它使代码可以POJO
在pojo.getCol().isEmpty()
没有额外空值检查的情况下调用,从而使代码更清晰.
假设POJO
该类是JPA实体,这样做是否仍然安全?通过将集合从null初始化为空的集合,持久性数据将不会被更改,但是,我们仍在修改对象,因此持久性提供程序可能会在刷新持久性上下文时产生一些副作用.我们有什么风险?便携性可能吗?
Mik*_*unu 20
我认为这不是一种好的做法,更像是一些很少需要的优化.如果SomeCollection的创建非常繁重,也许懒惰的初始化是有意义的.相反,你可以在声明时初始化它(代码更清洁至少对我来说):
class POJO {
private Collection<X> col = new SomeCollection<X>();
public Collection<X> getCol() {
return col;
}
}
Run Code Online (Sandbox Code Playgroud)
在刷新或可移植性问题中没有副作用,并且您有一个空检查更少.
dig*_*oel 12
我强烈反对ORM实体中属性的延迟初始化.
当使用Hibernate进行实体属性的延迟初始化时,我们遇到了一个严重的问题,所以我强烈反对它.我们看到的问题表现在我们发出搜索请求时发生的保存.这是因为当加载对象时属性为null,但是当调用getter时它将返回延迟初始化对象,因此hibernate(正确地)将对象视为脏对象并在发出搜索之前将其保存.
归档时间: |
|
查看次数: |
8023 次 |
最近记录: |