Hibernate中对从数据库中取出的字段值进行包装(修饰)
如,在数据库有个加密的字段,但事实上我们使用的时候想得出的是明文的值。
例:
@Entity
@Table(name = "EMPLOYEE")
public class Employee implements java.io.Serializable {
...
private String password;
private String passwordStr;
public Employee() {
}
@Transient
public String getPassword() {
return SAED.decrypt1(this.passwordStr);
}
public void setPassword(String password) {
this.password = password;
this.passwordStr = SAED.encrypt1(password);
}
@Column(name = "PASSWORD", nullable = false, length = 256)
public String getPasswordStr() {
return passwordStr;
}
public void setPasswordStr(String passwordStr) {
this.passwordStr = passwordStr;
}
}
@Transient 大概意思是让Hibernate不理会该getXXX()方法,具体@Transient使用解释如下:
transient、persistent、detached状态关系图如下:
1、transient状态的特征: * 在数据库中没有与之匹配的数据 * 没有纳入session的管理 2、persistent状态的特征: * persistent状态的对象在数据库中有与之匹配的数据 * 纳入了session的管理 * 在清理缓存(脏数据检查)的时候,会和数据库同步 3、detached状态的特征: * 在数据库中有与之匹配的数据 * 没有纳入session的管理 PS:了解这几种状态对深入使用hibernate有比较大的意义,开发过程中减少很多不必要的错误。 |