LogEntityInterceptor .java
代码:
/** * */ package com.b510.examplex;
import java.io.Serializable;
import org.apache.log4j.Logger; import org.hibernate.EmptyInterceptor; import org.hibernate.type.Type;
/** * * @author XHW * * @date 2011-7-15 * */ public class LogEntityInterceptor extends EmptyInterceptor {
private static final long serialVersionUID = -3556584943170985808L;
private final Logger logger = Logger.getLogger(LogEntityInterceptor.class);
public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { logger.info("删除数据"); }
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] preState, String[] propertyNames, Type[] types) { logger.info("修改数据"); return false; }
public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { logger.info("保存数据"); return false; }
}
log4j.propertices
代码:
log4j.logger.com.b510.examplex=info,appender1 log4j.appender.appender1=org.apache.log4j.FileAppender log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout log4j.appender.appender1.File=logfile.txt
HibernateTest.java
代码:
/** * */ package com.b510.examplex;
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;
/** * * @author XHW * * @date 2011-7-15 * */ public class HibernateTest {
/** * @param args */ public static void main(String[] args) { new HibernateTest().testInterceptor(); }
public void testInterceptor(){ LogEntityInterceptor interceptor=new LogEntityInterceptor(); Configuration config=new Configuration(); config.setInterceptor(interceptor); config.configure(); SessionFactory sf=config.buildSessionFactory(); Session session=sf.openSession(); Guestbook gb=new Guestbook(); gb.setName("HOngten"); gb.setContent("content: test interceptor"); gb.setCreatedTime(new java.util.Date()); gb.setEmail("hongtenzone@foxmail.com"); gb.setPhone("123456"); gb.setTitle("title:hello world"); session.beginTransaction(); session.save(gb); session.getTransaction().commit(); session=sf.openSession(); gb.setName("hanyuan"); session.beginTransaction(); session.update(gb); session.getTransaction().commit(); session=sf.openSession(); session.beginTransaction(); session.delete(gb); session.getTransaction().commit(); } }
运行效果:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Hibernate: select max(id) from guestbook Hibernate: insert into users.guestbook (version, name, email, phone, title, content, created_time, id) values (?, ?, ?, ?, ?, ?, ?, ?) Hibernate: update users.guestbook set version=?, name=?, email=?, phone=?, title=?, content=?, created_time=? where id=? and version=? Hibernate: delete from users.guestbook where id=? and version=?
并且在logfile.txt文件中有如下记录:
[main] INFO com.b510.examplex.LogEntityInterceptor - 保存数据 [main] INFO com.b510.examplex.LogEntityInterceptor - 修改数据 [main] INFO com.b510.examplex.LogEntityInterceptor - 删除数据