正如我们所知,Java日期/时间类型是可变的。因此,如果我们想要避免副作用,我们应该封装它们。
我正在寻找一种方法,允许我在JPA2.0中使用这些数据类型,同时实现封装目标。
在我的实践中,我经常使用类似下面这段代码的模式:
// imports are omitted
@Entity
@Access(AccessType.PROPERTY)
public class MyEntity {
private Integer id;
@Access(AccessType.FIELD)
private Calendar createdAt;
public MyEntity() {
createdAt = Calendar.getInstance();
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Transient
public Date getCreatedAt() {
return createdAt.getTime();
}
public void setCreatedAt(Date createdAt) {
this.createdAt.setTime(createdAt);
}
}有没有更好的方法呢?
提前谢谢。祝您今天愉快。
发布于 2012-11-13 21:12:33
日期可变是一个我们都不得不接受的设计怪癖。我们已经学会了接受它,通过假装Date是不可变的,并且从来没有操纵过它( Sun还通过在上面加上一些不赞成的词来让它变得更容易)。
https://stackoverflow.com/questions/13360667
复制相似问题