1.拦截器的两个功能,拦截和返回标志符
我们在操作session时,由于session是完成整个数据操作的主干部分,所以我们有时难免会对session进行检测,doc中给我们提供了个接口EmptyInterceptor
我们只要在session中注册EmptyInterceptor接口实现类就可以达到拦截session"动作的作用了"
具体
package common;
import java.io.Serializable;
import java.util.Iterator;
import org.hibernate.EmptyInterceptor;
import org.hibernate.type.Type;
public class SimpleInterceptor extends EmptyInterceptor {
private static final long serialVersionUID = 1L;
@Override
public void onDelete(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
// TODO Auto-generated method stub
super.onDelete(entity, id, state, propertyNames, types);
}
@Override
public boolean onSave(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
if (entity instanceof Employee) {
System.out.println("Create Operation");
return true;
}
return false;
}
@Override
public boolean onFlushDirty(Object entity, Serializable id,
Object[] currentState, Object[] previousState,
String[] propertyNames, Type[] types) {
// TODO Auto-generated method stub
return super.onFlushDirty(entity, id, currentState, previousState,
propertyNames, types);
}
@Override
public boolean onLoad(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
// TODO Auto-generated method stub
return super.onLoad(entity, id, state, propertyNames, types);
}
@Override
public void preFlush(Iterator entities) {
System.out.println("preFlush");
super.preFlush(entities);
}
@Override
public void postFlush(Iterator entities) {
System.out.println("postFlush");
super.postFlush(entities);
}
}
接着注册
Session session = factory.openSession(new SimpleInterceptor());