博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA2.0回调函数的使用
阅读量:6937 次
发布时间:2019-06-27

本文共 1909 字,大约阅读时间需要 6 分钟。

  hot3.png

欢迎加入JPA讨论群:234134357

JPA的生命周期时间可以分为4类:持久化,更新,删除和加载。在系统中我们便可以利用回调函数触发指定事件执行特定操作,例如需要区分对象是否为新建。如下:

@Component@Scope("prototype")@Entity(name = "_User")public class User implements Serializable{	private static final long serialVersionUID = 1417900800633538392L;	// 业务属性	private String name, phoneticCode;	private String loginName, password;	// 数据持久相关的辅助属性	private String id;	private Date createdTime;	private int objectVersion;	@Id	@Column(length = 40)	public String getId() {		return id;	}	public void setId(String id) {		this.id = id;	}	@Column(nullable = false)	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	@Column(length = 30, nullable = false, unique = true)	public String getLoginName() {		return loginName;	}	public void setLoginName(String loginName) {		this.loginName = loginName;	}	@Column(length = 30, nullable = false)	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	/**	 * 拼音码	 * 	 *  	 */	@Column(length = 20)	public String getPhoneticCode() {		return phoneticCode;	}	public void setPhoneticCode(String phoneticCode) {		this.phoneticCode = phoneticCode;	}	@Temporal(TemporalType.TIMESTAMP)	public Date getCreatedTime() {		return createdTime;	}	public void setCreatedTime(Date createdTime) {		this.createdTime = createdTime;	}	@Version	public int getObjectVersion() {		return objectVersion;	}	public void setObjectVersion(int objectVersion) {		this.objectVersion = objectVersion;	}	/**	 * 使用回调函数验证以及创建默认必要属性	 */	@PrePersist	@PreUpdate	public void dataCompleted() {		if (StringUtil.isEmpty(id)) {			setId(UUID.randomUUID().toString());		}		if (null == getCreatedTime()) {			setCreatedTime(new Date());		}		setPhoneticCode(PinYinTool.getPinYinCode(name));	}}

我们将id的 创建时间等赋值操作交给回调函数处理,该函数只有在持久或更新之前才会被调用所以我们可以通过实体是否具有id来区分对象是否属于新建

转载于:https://my.oschina.net/maymin/blog/63997

你可能感兴趣的文章
我的友情链接
查看>>
char、varchar的区别
查看>>
[操作系统作业]os实验三:进程的管道通信
查看>>
numpy 读取txt为array 一行搞定
查看>>
linux上监控磁盘使用情况并发送邮件
查看>>
EF6 秘籍 2th:实体数据建模基础 (四)生成一个简单模型
查看>>
我的友情链接
查看>>
计算机与操作系统(一)
查看>>
Spring事务处理
查看>>
oracle 查询结果对空值的排序
查看>>
常见HTTP错误代码解析
查看>>
网上的东西,不能什么都学
查看>>
我的友情链接
查看>>
Context域从web.xml获取数据学习笔记
查看>>
Docker Registry v2 + Token Auth Server (Registry v2 认证)实例。
查看>>
参考---------正确安装MySQL5.6的配置文件
查看>>
Pthon Matplotlib 画图
查看>>
第四章 DNS域名解析服务
查看>>
C# internal关键字
查看>>
RocketMQ集群搭建
查看>>