📄 jpaflushinterceptor.java
字号:
package test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.jpa.SharedEntityManagerCreator;
/**
* 供完成基于JPA的集成测试使用,保证在目标方法调用结束后立即调用.flush()方法,
* 从而保证测试结果的正确性.
* <li>使得目标DAO方法不用显式调用flush(),从而不会为了“测试”而测试,并不会对应用有任何影响。
* <li>对于其他ORM引擎,可以提供类似的拦截器
*
* @author worldheart
*
*/
public class JpaFlushInterceptor implements MethodInterceptor {
protected static final Log log = LogFactory.getLog(JpaFlushInterceptor.class);
private EntityManager em;
public void setEmf(EntityManagerFactory emf) {
//获得当前活动事务征集的EntityManager
this.em = SharedEntityManagerCreator.createSharedEntityManager(emf);
}
public Object invoke(MethodInvocation invocation) throws Throwable {
Object object = invocation.proceed();
//在调用DAO方法或其他事务性方法后,立即调用.flush()
em.flush();
log.info("returned from...." + invocation.getClass());
return object;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -