spring的openSessionInViewFilter能将session的生命周期延长到请求完成后结束。 解决了在hibernate的load方法中,并未把数据真正获取时就关闭了session,导致出现了异常的问题。
在web.xml中,openSessionInViewFilter要配载struts的过滤器之前才能起作用;另外还需要注意的是:若用到hibernateTemplate,但未声明事务边界,openSessionInView即默认认为事务是readyOnly,所以此时save数据会抛出异常:
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition
我的解决办法是在service的set方法上加 @Transactional
分享到:
相关推荐
同时,需要注意的是,OpenSessionInView模式虽然方便,但也会带来潜在的问题,如事务边界不清晰和会话泄漏。因此,在实际应用中,应结合具体需求谨慎使用,并考虑使用更现代的解决方案,如Spring Data JPA的...
- 分层架构:Spring允许开发者选择需要的模块,提高了灵活性,避免了不必要的复杂性。 - POJO编程:Spring鼓励使用Plain Old Java Objects (POJOs),使得应用程序更易于管理和测试。 - 依赖注入(DI)和控制反转...
1. 分层架构:Spring允许开发者选择需要的模块,避免了不必要的复杂性。 2. POJO(Plain Old Java Object)编程:它鼓励使用简单的Java对象,增强了代码的可测试性和可维护性。 3. 依赖注入(DI)和控制反转(IOC)...
总结来说,`lazy="true"` 是一种有效的性能优化策略,但需要注意其与Web环境的兼容性问题,这时OSIV模式可以提供解决方案。然而,OSIV也存在潜在的问题,因此在实际应用中需要权衡利弊,合理设计数据模型和事务管理...
以下是一些关于Spring的重要知识点,包括其优点、依赖注入(DI)的实现方式、控制反转(IoC)的理解、ORM框架的支持以及事务管理。 1. **Spring的优点**: - **分层架构**:Spring允许开发者选择使用需要的模块,避免...
1. 分层架构:Spring允许开发者选择需要的模块,无需关注不必要的部分,增强了代码的可维护性。 2. POJO编程:Spring鼓励使用Plain Old Java Objects(POJOs),这使得应用程序更易于测试和持续构建。 3. 依赖注入...
根据提供的文件信息,我们可以归纳出一系列关于Spring框架的关键知识点,主要围绕着面向接口编程、IOC/DI、AOP以及Spring框架的基本使用等几个方面展开。 ### 面向接口编程 面向接口编程(面向抽象编程)是一种...
添加Spring库,包括`spring2 core`, `spring2 persistence core`, `spring2 aop`, `spring2 persistence jdbc`, `spring2 web`, 和 `spring2 testing`。这些库提供了Spring的核心功能,持久化支持,面向切面编程,...
7. **最佳实践**:在实际项目中,要注意事务边界管理,避免长时间打开Session导致内存泄漏。另外,对于性能优化,可以考虑使用二级缓存,或者使用HQL和Criteria API代替直译SQL,以减少数据库交互。 以上就是SSH...
3,在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题) 1,配置 <!-- 配置 spring 的 OpenSessionInView 过滤器 --> <filter-name>OpenSessionInView ...
这有助于提高性能,减少不必要的数据加载。 - **OpenSessionInView**: 通过Web层的Filter在一次请求周期内保持Session打开,确保所有延迟加载的属性能在Session关闭前完成加载。 #### 八、Spring事务管理 **问题:*...
综上所述,SSH框架的整合涉及到多个层面的技术要点,开发者需要对Spring、Hibernate和Struts有深入的理解才能顺利完成整合。此外,在实际开发过程中还需不断实践和完善,以达到最佳的应用效果。
-- Hibernate OpenSessionInView 过滤器 --> <filter-name>OpenSessionInViewFilter <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter <param-name>singleSession ...
【百度面试题】中的知识点涵盖了Java开发中的多个关键领域,包括Spring框架、Hibernate持久化、事务管理、前端AJAX、消息队列MQ、并发控制、Web会话管理以及软件设计模式。以下是对这些知识点的详细解释: 1. **...