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有比较大的意义,开发过程中减少很多不必要的错误。 |
本文介绍如何在Hibernate中实现对数据库字段值的包装,通过示例展示如何将加密的密码字段转换为明文形式,以便在应用程序中直接使用。讨论了@Transient注解的作用及其与持久化状态的关系。

&spm=1001.2101.3001.5002&articleId=82372468&d=1&t=3&u=88848288fa5e451b8eea4cd976fa3e3d)
2万+

被折叠的 条评论
为什么被折叠?



