为了方便的管理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!
分享到:
相关推荐
6. **事件监听**:通过事件监听器,可以在对象的生命周期中执行特定操作,如预加载、后加载、预更新等。 实现这些功能需要深入理解JDBC、数据库理论、反射、设计模式等多个领域的知识。对于源码的阅读和分析,可以...
11. **事件监听器**:Hibernate允许注册事件监听器,对持久化对象的各种操作(如保存、更新、删除等)进行拦截和自定义处理。 以上就是`hibernate3.jar`中所包含的关键知识点。理解并熟练使用这些概念,可以帮助...
13. **事件监听器**:Hibernate允许定义事件监听器来处理特定的数据库操作,如对象的保存、更新、删除等事件。 14. **性能优化**:文档还会涵盖如何通过批处理、预加载、缓存策略等手段优化Hibernate的性能。 以上...
- **Hibernate事件监听器**: 可以通过实现特定的监听器接口,如PreInsertEventListener,来监听和处理对象的生命周期事件。 - **Hibernate拦截器**: 类似于监听器,但更灵活,可以直接修改对象的状态。 总结来说,...
12. **事件监听器**:通过实现特定接口,可以添加监听器来监控对象的生命周期事件,如预加载、加载、保存、更新和删除。 13. **元数据(Metadata)**:Hibernate可以从注解或XML中获取元数据,生成SQL语句,实现了...
高级特性部分可能包含懒加载、缓存机制、二级缓存、性能优化、事件监听器、拦截器等。懒加载是Hibernate优化性能的一种策略,它延迟加载关联的对象,直到真正需要时才执行数据库查询。缓存机制可以提高数据访问速度...
8. **事件和监听器**: Hibernate允许开发者注册监听器,对对象生命周期的各个阶段(如加载、保存、更新、删除)进行自定义操作。 9. **性能优化**: Hibernate提供了多种性能优化手段,如批处理、延迟加载、结果集...
8. **事件和监听器**:Hibernate允许注册监听器来监听持久化操作,如保存、更新、删除等事件,这为实现业务逻辑或扩展功能提供了便利。 9. **性能优化**:Hibernate 3.4版本引入了多种性能优化手段,如延迟加载...
10. **事件监听器**:Hibernate允许添加事件监听器,如SaveOrUpdateEventListener、PreLoadEventListener等,以便在特定操作前或后执行自定义逻辑。 通过分析Hibernate 3.5.6的源码,开发者可以了解到其内部的事务...
9. **事件监听器**:通过事件监听机制,开发者可以在特定操作(如对象的保存、更新或删除)前后执行自定义逻辑。 10. **增强的性能**:通过延迟加载、批处理和缓存机制,Hibernate能够在不牺牲性能的情况下提供强大...
8. **事件监听器**:Hibernate 3.2.5支持事件监听机制,可以通过实现特定接口并注册监听器,对对象的生命周期事件(如加载、保存、更新、删除等)进行自定义处理。 9. **多态性支持**:Hibernate支持多态查询,能够...
10. **事件和监听器**:Hibernate允许注册事件监听器,对特定的持久化操作(如加载、保存、更新、删除)进行拦截,实现定制化的逻辑,如日志记录、数据校验等。 `hibernate-core` jar包是使用Hibernate的基础,它...
10. **事件和监听器**:Hibernate允许注册监听器来监听对象生命周期的各个阶段,如加载、保存、更新和删除,从而实现自定义逻辑。 11. **性能优化**:文档还涵盖了如何优化Hibernate应用,如延迟加载、批处理更新、...
这份文档还涵盖了高级主题,如 Criteria API 的使用、Hibernate事件监听器、实体的懒加载和立即加载策略、多对多关联映射等。对于任何希望深入理解和使用 Hibernate 的开发者来说,这是一份不可或缺的学习资料。通过...
8. **事件和监听器**:Hibernate支持事件监听机制,允许在特定操作(如对象的保存、更新、删除等)前后执行自定义代码,增强了框架的可扩展性。 9. **缓存机制**:为了提高性能,Hibernate3内置了两级缓存机制:第...
此外,Hibernate支持事件监听器和拦截器,允许我们在特定操作前后插入自定义逻辑,如在对象保存前进行验证,或在对象删除后执行清理工作。 总的来说,这篇关于Hibernate的论文可能会深入剖析这些概念,并结合实例...
9. **事件监听器**:允许自定义事件监听器来扩展Hibernate的功能,如在对象保存或更新时触发某些操作。 10. **类型转换**:Hibernate提供了一系列的类型转换器,用于处理Java类型与数据库类型的转换。 通过学习和...
8. **事件监听器和拦截器**:Hibernate允许用户自定义事件监听器或拦截器,以便在特定的生命周期事件(如对象的保存、更新、删除等)发生时执行自定义逻辑。 9. **实体生命周期**:Hibernate定义了几个关键的实体...
七、事件监听器 Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前或后进行自定义处理。 八、持久化操作 - 保存(save()):为新对象生成ID并将其放入一级缓存...