JavaEE(16) - JPA生命周期及监听器
1. 理解实体的生命周期
2. 为实体生命周期事件定义监听器
3. 通过监听实现回调
4. 排除默认监听器和父类上定义的监听器
1. 理解实体的生命周期(Net Beans创建Java Project, 项目名称:Lifecycle)
aaarticlea/png;base64,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" alt="" />
Person.java
package org.crazyit.model; import javax.persistence.*; @Entity
@Table(name = "person_table")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; @Column(name = "person_name", length = 50)
private String name;
private String email;
private String phone; // constructor // setter
// getter @PrePersist
public void prePersist() {
System.out.println("--Before Persisting--");
//简单加密
this.setEmail(reverse(this.getEmail()));
} @PreUpdate
public void preUpdate() {
System.out.println("--Before Updating--");
//简单加密
this.setEmail(reverse(this.getEmail()));
} @PostUpdate
public void postUpdate() {
System.out.println("--Post Updating--");
} @PostLoad
public void postLoad() {
System.out.println("--Post Loading--");
//简单地恢复
this.setEmail(reverse(this.getEmail()));
} private String reverse(String raw) {
StringBuffer sb = new StringBuffer(raw);
return sb.reverse().toString();
}
}
persistence.xml(参见12.2)
JpaQs.java(参见12.2)
2. 通过监听实现回调(Net Beans创建Java Project, 项目名称:EntityListener)
Person.java
package org.crazyit.model; import javax.persistence.*;
import org.crazyit.listener.*; @Entity
@Table(name="person_table")
@EntityListeners(PersonPersistListener.class)
public class Person
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id; @Column(name="person_name" , length=50)
private String name; private String email;
private String phone; // constructor // setter
// getter
}
PersonPersistListener.java
package org.crazyit.listener; import javax.persistence.*;
import org.crazyit.model.*; public class PersonPersistListener { @PrePersist
public void prePersist(Object entity) {
if (entity.getClass() == Person.class) {
System.out.println("--Before Persisting--");
Person person = (Person) entity;
//简单加密
person.setEmail(reverse(person.getEmail()));
}
} @PreUpdate
public void preUpdate(Object entity) {
if (entity.getClass() == Person.class) {
System.out.println("--Before Updating--");
Person person = (Person) entity;
//简单加密
person.setEmail(reverse(person.getEmail()));
}
} @PostUpdate
public void postUpdate(Object entity) {
System.out.println("--Post Updating--");
} @PostLoad
public void postLoad(Object entity) {
if (entity.getClass() == Person.class) {
System.out.println("--Post Loading--");
Person person = (Person) entity;
//简单加密
person.setEmail(reverse(person.getEmail()));
}
} private String reverse(String raw) {
StringBuffer sb = new StringBuffer(raw);
return sb.reverse().toString();
}
}
persistence.xml(参见12.2)
JpaQs.java(参见12.2)
3. 为全部实体配置默认监视器(Net Beans创建Java Project, 项目名称:DefaultListener)
Person.java
package org.crazyit.model; import javax.persistence.*; @Entity
@Table(name = "person_table")
public class Person { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; @Column(name = "person_name", length = 50)
private String name; private String email;
private String phone; // constructor // setter
// getter
}
orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<!-- 配置默认监听器 -->
<entity-listeners>
<!-- class属性指定监听器类 -->
<entity-listener class="org.crazyit.listener.DefaultPersistListener">
<!-- 下面4个子元素指定监听器类中哪个方法作为监听方法 -->
<pre-persist method-name="prePersist"/>
<pre-update method-name="preUpdate"/>
<post-update method-name="postUpdate"/>
<post-load method-name="postLoad"/>
</entity-listener>
</entity-listeners>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
DefaultPersistListener.java
package org.crazyit.listener; public class DefaultPersistListener {
public void prePersist(Object entity) {
System.out.println("--Before Persisting--");
} public void preUpdate(Object entity) {
System.out.println("--Before Updating--");
} public void postUpdate(Object entity) {
System.out.println("--Post Updating--");
} public void postLoad(Object entity) {
System.out.println("--Post Loading--");
}
}
persistence.xml(参见12.2)
JpaQs.java(参见12.2)
4. 排除默认监听器(Net Beans创建Java Project, 项目名称:ExcludeDefaultListeners)
Person.java
package org.crazyit.model; import javax.persistence.*;
import org.crazyit.listener.*; @Entity
@Table(name = "person_table")
//指定默认监听器对该实体类不起作用
@ExcludeDefaultListeners
public class Person { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; @Column(name = "person_name", length = 50)
private String name; private String email;
private String phone; // constructor // setter
// getter
}
orm.xml(参见#3)
DefaultPersistListener(参见#3)
persistence.xml(参见12.2)
JpaQs.java(参见12.2)
5. 排除父类上定义的监听器(Net Beans创建Java Project, 项目名称:ExcludeSupperclassListeners)
Person.java
package org.crazyit.model; import javax.persistence.*;
import org.crazyit.listener.*; @Entity
@Table(name = "person_table")
@Inheritance(strategy = InheritanceType.JOINED)
@EntityListeners(PersonPersistListener.class)
public class Person { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; @Column(name = "person_name", length = 50)
private String name; private String email;
private String phone; // constructor // setter
// getter
}
Student.java
package org.crazyit.model; import javax.persistence.*; @Entity
@Table(name = "student_table")
//指定父类上声明的监听器不对实体起作用
@ExcludeSuperclassListeners
public class Student extends Person { private int grade; // constructor // setter
// getter
}
PersonPersistListener.java(参见#2)
persistence.xml(参见12.2)
JpaQs.java(参见12.2)
JavaEE(16) - JPA生命周期及监听器的更多相关文章
- 16、生命周期-BeanPostProcessor原理
16.生命周期-BeanPostProcessor原理 16.1 打断点运行postProcessBeforeInitialization 可以看到先执行的顺序为: applyBeanPostProc ...
- React 16.4 生命周期
补一下 React 16.4版本的生命周期图
- JAVA学习笔记16——线程生命周期
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Blocking)和 ...
- 16.Android-activity生命周期与启动模式
1.activity共有4个状态 如下图所示: 运行状态 如果一个活动位于屏幕的前台(可见的),那么它就是活动的或正在运行的. 暂停状态 如果一个活动失去了焦点,但仍然可见(也就是说,一个新的非全尺寸 ...
- 深入浅出Tomcat/3 - Tomcat生命周期
在上面的部分,其实我们已经接触到Tomcat的生命周期了,接下来我们将仔细讨论和学习Tomcat的生命周期的具体实现. LifeCycle接口 这个LifeCycle接口上面在讲解Server和Ser ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Spring Data JPA实体的生命周期总结
目录 四种状态 API示例 persist remove merge refresh 参考链接 四种状态 首先以一张图,简单介绍写实体生命周期中四种状态之间的转换关系: 瞬时(New):瞬时对象,刚N ...
- ASP.NET MVC请求处理管道生命周期的19个关键环节(1-6)
ASP.NET和ASP.NET MVC的HttpApplication请求处理管道有共同的部分和不同之处,本系列将体验ASP.NET MVC请求处理管道生命周期的19个关键环节. ①以IIS6.0为例 ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
随机推荐
- 使用NSCondition实现多线程同步
iOS中实现多线程技术有非常多方法. 这里说说使用NSCondition实现多线程同步的问题,也就是解决生产者消费者问题(如收发同步等等). 问题流程例如以下: 消费者取得锁,取产品,假设没有,则wa ...
- TaintDroid:智能手机监控实时隐私信息流跟踪系统(一)
1.1 摘要 现今,智能手机操作系统不能有效的提供给用户足够的控制权并且很清楚的了解到第三方的应用程序是如何使用其的隐私数据.我们使用了TaintDroid来阐明这个缺点,其是一个高效的,全系 ...
- C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!!
原文:C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!! 一般我们在开发Windows Phone 8 时,会考虑到各国语言的问题,但是你有想过吗?用实体手机 ...
- Embedding Lua, in Scala, using Java(转)
LuaJ I was reading over the list of features that CurioDB lacks compared to Redis , that I’d previou ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- ubuntu 14.04设备OVS虚拟OpenFlow交换机配置汇总
一.设备OVS sudo apt-get install openvswitch-controller openvswitch-switch openvswitch-datapath-source ( ...
- 区分内边距与外边距padding和margin
以两个并排显示的div为例说明. 现在两个div都有背景颜色, 右边的div中有几行p, 若是想要使两个div之间有间隔, 即两块带了颜色区域之间产生空隙, 则给div的css中外边距margin赋值 ...
- 认识mongoDB数据库
mongodb中有三元素:数据库,集合,文档,其中“集合”对应关系型数据库中的“表”,“文档”对应“行”. 安装mongoDB: 去官网下载对应系统的mongoDB压缩包,解压后将文件夹重命名为mon ...
- 开发一个Swing功能时的一点总结
对JTextField进行效验,有两个途径:(1)是使用javax.swing.InputVerifier在获取焦点时进行校验(2)在点击“确定”按钮的监听事件中对控件的值进行校验 鉴于涉及的业务比较 ...
- HDU 4864Task(更多的联合培训学校1)(贪婪)
职务地址:pid=4864">HDU4864 这题又是一上来觉得是最小费用流,可是边太多.果然,敲完交上去后不断TLE.. 小优化了两次也没过. . . sad.. 后来看了题解才发现 ...