`

hibernate监听器 监听session

阅读更多

为了方便的管理session 可以用hibernate监听器

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateFilter implements Filter {

 private static ThreadLocal<Session> hibernateHolder = new ThreadLocal<Session>();

 private static SessionFactory factory = null;

 public void destroy() {
 }

 public void doFilter(ServletRequest servletRequest,
   ServletResponse servletResponse, FilterChain filterChain)
   throws IOException, ServletException {
  try {
   filterChain.doFilter(servletRequest, servletResponse);
  } finally {
   Session session = (Session) hibernateHolder.get();
   if (session != null) {
    if (session.isOpen()) {
     session.close();
    }
    hibernateHolder.remove();
   }
  }
 }

 public void init(FilterConfig filterConfig) throws ServletException {
  try {
   Configuration cfg = new Configuration().configure();
   factory = cfg.buildSessionFactory();
  } catch (Exception e) {
   e.printStackTrace();
   throw new ServletException(e);
  }
 }

 public static Session getSession() {
  Session session = (Session) hibernateHolder.get();
  if (session == null) {
   session = factory.openSession();
   hibernateHolder.set(session);
  }
  return session;
 }

}

监听器类,可以替换掉HibernateUtil

另外在web.xml里添加如下配置

<filter>
    <filter-name>HibernateFilter</filter-name>
    <filter-class>com.schoolstar.util.HibernateFilter</filter-class>
</filter>

<filter-mapping>
     <filter-name>HibernateFilter</filter-name>
     <url-pattern>/*</url-pattern>

</filter-mapping>

 

 

ok!

分享到:
评论

相关推荐

    实现自己的Hibernate框架之Session 方法实现

    6. **事件监听**:通过事件监听器,可以在对象的生命周期中执行特定操作,如预加载、后加载、预更新等。 实现这些功能需要深入理解JDBC、数据库理论、反射、设计模式等多个领域的知识。对于源码的阅读和分析,可以...

    hibernate3.zip 包含hibernate3.jar

    11. **事件监听器**:Hibernate允许注册事件监听器,对持久化对象的各种操作(如保存、更新、删除等)进行拦截和自定义处理。 以上就是`hibernate3.jar`中所包含的关键知识点。理解并熟练使用这些概念,可以帮助...

    hibernate 3.6 中文 chm

    13. **事件监听器**:Hibernate允许定义事件监听器来处理特定的数据库操作,如对象的保存、更新、删除等事件。 14. **性能优化**:文档还会涵盖如何通过批处理、预加载、缓存策略等手段优化Hibernate的性能。 以上...

    hibernate框架基本包

    - **Hibernate事件监听器**: 可以通过实现特定的监听器接口,如PreInsertEventListener,来监听和处理对象的生命周期事件。 - **Hibernate拦截器**: 类似于监听器,但更灵活,可以直接修改对象的状态。 总结来说,...

    hibernate5.2.9

    12. **事件监听器**:通过实现特定接口,可以添加监听器来监控对象的生命周期事件,如预加载、加载、保存、更新和删除。 13. **元数据(Metadata)**:Hibernate可以从注解或XML中获取元数据,生成SQL语句,实现了...

    Hibernate实战

    高级特性部分可能包含懒加载、缓存机制、二级缓存、性能优化、事件监听器、拦截器等。懒加载是Hibernate优化性能的一种策略,它延迟加载关联的对象,直到真正需要时才执行数据库查询。缓存机制可以提高数据访问速度...

    hibernate4.3.11所需jar包

    8. **事件和监听器**: Hibernate允许开发者注册监听器,对对象生命周期的各个阶段(如加载、保存、更新、删除)进行自定义操作。 9. **性能优化**: Hibernate提供了多种性能优化手段,如批处理、延迟加载、结果集...

    hibernate3.4的jar包

    8. **事件和监听器**:Hibernate允许注册监听器来监听持久化操作,如保存、更新、删除等事件,这为实现业务逻辑或扩展功能提供了便利。 9. **性能优化**:Hibernate 3.4版本引入了多种性能优化手段,如延迟加载...

    hibernate-3.5.6 源码

    10. **事件监听器**:Hibernate允许添加事件监听器,如SaveOrUpdateEventListener、PreLoadEventListener等,以便在特定操作前或后执行自定义逻辑。 通过分析Hibernate 3.5.6的源码,开发者可以了解到其内部的事务...

    Hibernate3的依赖包

    9. **事件监听器**:通过事件监听机制,开发者可以在特定操作(如对象的保存、更新或删除)前后执行自定义逻辑。 10. **增强的性能**:通过延迟加载、批处理和缓存机制,Hibernate能够在不牺牲性能的情况下提供强大...

    hibernate 3,25

    8. **事件监听器**:Hibernate 3.2.5支持事件监听机制,可以通过实现特定接口并注册监听器,对对象的生命周期事件(如加载、保存、更新、删除等)进行自定义处理。 9. **多态性支持**:Hibernate支持多态查询,能够...

    hibernate-core 核心jar包

    10. **事件和监听器**:Hibernate允许注册事件监听器,对特定的持久化操作(如加载、保存、更新、删除)进行拦截,实现定制化的逻辑,如日志记录、数据校验等。 `hibernate-core` jar包是使用Hibernate的基础,它...

    Hibernate 4.1.1中文文档

    10. **事件和监听器**:Hibernate允许注册监听器来监听对象生命周期的各个阶段,如加载、保存、更新和删除,从而实现自定义逻辑。 11. **性能优化**:文档还涵盖了如何优化Hibernate应用,如延迟加载、批处理更新、...

    hibernate3中文官方文档

    这份文档还涵盖了高级主题,如 Criteria API 的使用、Hibernate事件监听器、实体的懒加载和立即加载策略、多对多关联映射等。对于任何希望深入理解和使用 Hibernate 的开发者来说,这是一份不可或缺的学习资料。通过...

    hibernate3所需JAR包

    8. **事件和监听器**:Hibernate支持事件监听机制,允许在特定操作(如对象的保存、更新、删除等)前后执行自定义代码,增强了框架的可扩展性。 9. **缓存机制**:为了提高性能,Hibernate3内置了两级缓存机制:第...

    有关hibernate的论文

    此外,Hibernate支持事件监听器和拦截器,允许我们在特定操作前后插入自定义逻辑,如在对象保存前进行验证,或在对象删除后执行清理工作。 总的来说,这篇关于Hibernate的论文可能会深入剖析这些概念,并结合实例...

    hibernate-release-5.2.10

    9. **事件监听器**:允许自定义事件监听器来扩展Hibernate的功能,如在对象保存或更新时触发某些操作。 10. **类型转换**:Hibernate提供了一系列的类型转换器,用于处理Java类型与数据库类型的转换。 通过学习和...

    Hibernate\hibernate3.2官方中文参考手册PDF

    8. **事件监听器和拦截器**:Hibernate允许用户自定义事件监听器或拦截器,以便在特定的生命周期事件(如对象的保存、更新、删除等)发生时执行自定义逻辑。 9. **实体生命周期**:Hibernate定义了几个关键的实体...

    hibernate-3.2源代码

    七、事件监听器 Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前或后进行自定义处理。 八、持久化操作 - 保存(save()):为新对象生成ID并将其放入一级缓存...

Global site tag (gtag.js) - Google Analytics