`
forlab
  • 浏览: 133436 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate_拦截器与日志文件

 
阅读更多

自定义拦截器要实现Interceptor接口,拦截器也是用观察者模式来设计的,重写Interceptor里面的方法,在特定条件下,这些方法就会被调用。

在Interceptor对象的方法中不能直接使用Session对象执行持久化操作,如果需要在拦截的同时使用Session对象完成持久化,可以使用Hibernate中事件监听.

下面举例拦截器,将数据的增,删,改信息保存到日志文件中,其中要用到log4j.

编写自定义拦截器LogInterceptor.java:

复制代码
 1 public class LogInterceptor extends EmptyInterceptor {
 2     //对LogInterceptor这个类的日志进行处理
 3     private Logger logger = Logger.getLogger(LogInterceptor.class);
 4     
 5     @Override
 6     public boolean onSave(Object entity, Serializable id, Object[] state,
 7             String[] propertyNames, Type[] types) {
 8         logger.info("保存数据");
 9         //如果修改了持久化对象的状态,返回true;否则返回false
10         return false;
11     }
12     
13     @Override
14     public void onDelete(Object entity, Serializable id, Object[] state,
15             String[] propertyNames, Type[] types) {
16         logger.info("删除数据");
17     }
18     
19     @Override
20     public boolean onFlushDirty(Object entity, Serializable id,
21             Object[] currentState, Object[] previousState,
22             String[] propertyNames, Type[] types) {
23         logger.info("修改数据");
24         //如果修改了持久化对象的状态,返回true;否则返回false
25         return false;
26     }
27 }
复制代码

拦截器的加载可以在解析配置文件之前进行加载,也可以在打开Session的时候进行加载:

在解析配置文件配置文件之前加载:

复制代码
 1 static {
 2         Configuration cfg = null;
 3         // 解析配置文件
 4         try {
 5             cfg = new Configuration();
 6             //在解析配置文件时加载过滤器
 7             cfg.setInterceptor(new LogInterceptor());
 8             cfg.configure();
 9         }
10         catch (Exception e) {
11             e.printStackTrace();
12         }
13         factory = cfg.buildSessionFactory();
14     }
复制代码

在打开Session的时候进行加载:

1      Configuration cfg = new Configuration();
2         cfg.configure();
3         SessionFactory factory = cfg.buildSessionFactory();
4         Session session = factory.openSession(new LogInterceptor());
5         Transaction ts = session.beginTransaction();

注意:在打开Session的时候进行拦截器加载,这个拦截器只在当前session中有效.

 

配置log4j.properties:

log4j.rootLogger=info,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%c] %m%n
log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss}][%c] %m%n
log4j.appender.appender2.File=HongtenLog4j.log

分享到:
评论

相关推荐

    Hibernate_3.2.0_Reference_zh_CN

    14. **事件监听器和拦截器**:允许在特定的生命周期事件中插入自定义代码,用于实现业务逻辑或日志记录。 15. **CGLIB和JPA支持**:介绍Hibernate对CGLIB代理和Java Persistence API(JPA)的集成。 总之,...

    hibernate_persistence第02-16章书中源码

    Hibernate拦截器允许我们在实体的生命周期事件中插入自定义行为,如在保存、更新或删除实体前/后执行某些操作。这在日志记录、权限控制等场景非常有用。 5. **hibernate_09_006_Procedure**: 在这一章,可能会...

    Hibernate_3.2.0中文手册

    7. **事件和拦截器**:讲解了如何利用Hibernate的事件机制和拦截器来实现自定义的行为,如对象的生命周期事件监听、数据访问的前处理和后处理等。 8. **性能优化**:提供了关于如何优化Hibernate应用的建议,包括...

    Hibernate事件框架之拦截器使用源代码

    在配置文件 `hibernate.cfg.xml` 或者 `Configuration` 实例中,可以通过 `setProperty` 方法设置 `hibernate.event.interceptor` 属性为拦截器的全限定类名。 ```java Configuration configuration = new ...

    springboot-hibernate-strruts2_springboot_struts2_hibernate_整合_源码

    它通过Action类处理请求,使用OGNL(Object-Graph Navigation Language)进行数据绑定,支持拦截器机制,能方便地进行权限控制和日志记录等。 再者,Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用Java...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    - **Interceptor拦截器**:用于在Action执行前后进行预处理和后处理,例如权限验证和日志记录。 2. **Spring框架**: - **依赖注入(DI)**:通过Spring管理Bean的生命周期,实现组件间的解耦。 - **事务管理**...

    Struts2_hibernate_spring_bbs论坛项目源码

    Struts2提供了丰富的拦截器、结果类型和插件机制,使得开发者可以轻松地实现表单验证、国际化、日志记录等功能。在本项目中,你可以看到Action类的定义,以及配置文件struts.xml中的相关配置,了解如何定义Action与...

    struts2_hibernate_spring整合(一)

    - **Interceptor拦截器**:Struts2提供了拦截器机制,可以在Action执行前后进行额外的操作,比如登录检查、日志记录等。 2. **Hibernate**: - **实体类**:Hibernate通过注解或XML配置将数据库表映射为Java对象...

    Spring_Hibernate_Struts2整合

    3. **Struts2配置**:配置struts.xml文件,定义Action的入口点、结果类型、拦截器栈等。 **五、测试与优化** 1. 编写测试用例,对DAO、Service和Action进行单元测试和集成测试,确保每个层次的功能正常。 2. 调整...

    SSH.rar_s2sh_ssh struts2_ssh+mysql_struts2 hibernate_struts2 mys

    Struts2提供了强大的拦截器机制,允许开发者自定义行为,实现业务逻辑与表现层的解耦。此外,Struts2还支持多种视图技术,如JSP、FreeMarker等,以及丰富的插件系统,使得开发者可以轻松扩展功能。 接下来是Spring...

    图书管理系统-BookM_Struts2_Hibernate_Spring.rar

    Struts2提供了强大的表单验证、国际化支持和丰富的拦截器,使得开发者可以方便地控制应用程序的行为。在这个图书管理系统中,Struts2负责接收用户的请求,处理业务逻辑,并将结果返回给用户,起到了承上启下的桥梁...

    hibernate_reference(中文文档)

    9. **事件监听与拦截器**:Hibernate允许用户自定义事件监听器和拦截器,以扩展其功能,例如实现数据校验、日志记录等。 10. **CGLIB和JPA支持**:Hibernate不仅支持标准的Java Persistence API(JPA),还通过...

    Struts2_Hibernate_Spring基础教程

    Struts2提供了丰富的拦截器机制,可以方便地实现日志记录、权限控制、异常处理等功能。此外,它还支持OGNL(Object-Graph Navigation Language)表达式语言,使得在视图和模型之间的数据传递更为便捷。 **Hibernate...

    Struts2+Spring+Hibernate_Demo

    Struts2还支持拦截器(Interceptors),可以方便地添加日志、事务管理等通用功能。 Spring框架则是一个全面的企业级应用框架,它不仅支持依赖注入(DI)和面向切面编程(AOP),还提供了大量的模块,如Spring MVC、...

    hibernate显示不带?的完整sql

    综上所述,通过正确配置Hibernate的`hibernate.show_sql`、`hibernate.format_sql`以及日志框架的设置,我们可以得到不带问号的完整SQL输出,以辅助开发和调试工作。在实际项目中,可以参考上述步骤进行设置,确保你...

    ssh+aop+log4j+日志拦截器+注解

    在本例中,AOP与日志拦截器结合,可以实现在方法执行前后自动插入日志记录,提高代码的可维护性和可读性。 3. Log4j:Log4j是Apache的一个开源项目,它是一个广泛使用的日志记录工具,提供灵活的日志记录配置,包括...

    SSH项目整理的全部jar包_struts2_hibernate_ssh_

    Struts2提供了强大的拦截器机制,可以方便地进行AOP(面向切面编程)操作,如日志记录、权限验证等。此外,它还支持多种结果类型和模板技术,如FreeMarker、JSP等,使得视图层的构建更加灵活。 2. Hibernate:...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    12. 拦截器与事件(Interceptors and events) 12.1. 拦截器(Interceptors) 12.2. 事件系统(Event system) 12.3. Hibernate的声明式安全机制 13. 批量处理(Batch processing) 13.1. 批量插入(Batch inserts) ...

    struts2+spring2.5+hibernate_框架完整jar包

    Struts2是一个强大的MVC框架,它提供了丰富的控制器组件和拦截器机制,可以处理HTTP请求并转发到相应的业务逻辑。Struts2的核心在于Action和Result,Action代表用户的一个操作,Result则是操作后的返回结果。此外,...

Global site tag (gtag.js) - Google Analytics