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 - 删除数据