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

Spring 集成Hibernate不用OpenSessionInView而防止session close

阅读更多

1、Spring可以通过配置

 

<!-- 解决@ResponseBody返回字符串时的乱码问题 -->

 

 

 

bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">	
<property name="messageConverters">
		<list>
			<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
			<bean class="org.springframework.http.converter.FormHttpMessageConverter" />
			<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
			<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
			<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
	   			<property name="supportedMediaTypes">
					<list><value>text/plain;charset=UTF-8</value></list>
	   			</property>
	   		</bean>
	  	</list>
	</property>
</bean>

来控制Controller将返回值做包装,例如List,Map等数据包装成Json格式的数据,但是包装过程中会将去加载pojo对象中的实例对象,如List,Object等信息,但是这些对象是延迟加载的,到了Controller层session已经关闭了,只返回其Porxy,如果要加载就需要加载数据库load其信息,这样就会出现session close,无法加载的错误。

 

解决方式有n种,但是涉及到一个问题,如果过滤我们不想加载的数据,在pojo上加上如下属性:

 

 

 

@Entity
@Table(name="xxx")
@JsonFilter("xxxfilter")
public class XXX{
}
 

Controller

 

 

 

@RequestMapping(value = "x")
@ResponseBody
public String x(HttpServletRequest request) throws JsonGenerationException, JsonMappingException, IOException {
	
	List<X> orgs = 后台查询返回的结果集;
	ObjectMapper objectMapper = new ObjectMapper();
	SimpleFilterProvider filterProvider = new SimpleFilterProvider();
	filterProvider.addFilter("xxxfilter", SimpleBeanPropertyFilter.serializeAllExcept("要过滤的属性"));
	
	return objectMapper.filteredWriter(filterProvider).writeValueAsString(orgs);
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Struts Spring Hibernate 整合 OpenSessionInView 例子

    为了练手培训,给大家准备的 Open Session In View 的简单例子,纯代码,大家可以参考,其中主要说了六部分内容: 1.通过接口编程 2.通过spring注入dao到 action 3.通过 open session in view filter 支持 延迟加载...

    Spring hibernate opensessioninview

    ### Spring + Hibernate OpenSessionInView 模式的理解和应用 在Java Web开发中,Spring与Hibernate作为两个重要的框架,经常被一起使用来实现业务逻辑与数据持久化的处理。而在使用这两个框架时,为了更好地管理...

    Struts+Spring+Hibernate开发实例.pdf

    - **OpenSessionInView** 是Hibernate的一个重要概念,它允许在视图层打开一个Session,这样就可以在渲染视图的时候访问数据库。 - **get() 和 set() 方法** 用于对象属性的获取和设置,在文档中被用于封装实体类...

    struts+spring+hibernate面试题

    在Java Web开发中,Struts、Spring和Hibernate是最常见的三大框架,它们各自承担着不同的职责。以下将分别介绍这些框架的核心概念以及在面试中可能涉及的知识点。 1. Struts作为MVC框架,负责控制层的处理。MVC模式...

    SSH整合 struts+hibernate+spring

    为了更好地利用这些框架的优势,开发者通常会采用SSH(Struts + Spring + Hibernate)集成开发模式。 **SSH整合**主要是指通过一系列的技术手段,将Struts、Spring 和 Hibernate 这三个独立的框架融合到一起,形成...

    struts+spring+hibernate面试题.doc

    在Spring中使用Hibernate时,可以利用`HibernateTemplate`简化常见的CRUD操作,同时Spring的事务管理器能无缝集成Hibernate的事务处理,提供统一的事务控制。通过Spring配置,可以轻松管理Hibernate的SessionFactory...

    韩顺平spring 雇员管理系统hibernate jar包

    韩顺平老师的"Spring雇员管理系统"教学资源,重点关注了使用Hibernate ORM框架与Spring集成来处理数据库操作。这个教程通过一个具体的雇员管理系统实例,深入浅出地讲解了Hibernate的核心概念和实践技巧。 ...

    spring管理struts和hibernate

    ### Spring管理Struts与Hibernate详解 #### 一、Spring整合Struts 在Web开发中,Struts是一个基于MVC设计模式的开源框架,它能够帮助开发者构建可维护性高、结构清晰的应用系统。Spring框架则提供了强大的依赖注入...

    spring+spingmvc+hibernate整合总结

    OpenSessionInView过滤器在Web请求的整个生命周期内保持一个Hibernate Session,使得在视图渲染阶段也能访问到数据库对象,避免了懒加载异常。 五、配置文件 1. `jdbc.properties`:存放数据库连接信息,如URL、...

    jsf + spring +hibernate 自己做的一个例子,主要是看一些基本配置

    JSF是用于构建用户界面的MVC(Model-View-Controller)框架,Spring提供了依赖注入和面向切面编程的能力,而Hibernate则是Java领域中的一个流行ORM(对象关系映射)工具,用于简化数据库操作。下面我们将详细探讨...

    收集的struts+spring+hibernate面试题借鉴.pdf

    Struts是一个经典的MVC(Model-View-Controller)框架,Spring则是提供了一个全面的企业级应用开发框架,包括依赖注入(DI)、面向切面编程(AOP)、事务管理等功能,而Hibernate则是一个强大的对象关系映射(ORM)...

    收集的struts+spring+hibernate面试题.doc

    ### Struts + Spring + Hibernate 面试题解析 #### 1. AOP 和 IOC 的概念以及在 Spring 中的应用 **AOP(Aspect Oriented Programming,面向切面编程)**: 是一种编程思想,它允许程序员定义“切面”来封装那些...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    在基于Hibernate或其他ORM框架的Spring应用中,由于HTTP请求的无状态性,一次数据库操作可能跨多个方法调用,这就需要数据库会话(Session)在整个请求处理过程中保持打开状态。`OpenSessionInViewFilter`就是为了...

    struts spring hibernate面试题

    - **集成方法**:在 Spring 中,可以通过 `SessionFactory` 和 `HibernateTemplate` 或 `JpaTemplate` 简化 Hibernate 的使用。`SessionFactory` 提供了创建 Session 的工厂,而 `HibernateTemplate` 或 `...

    OpenSessionInView项目整合jar包

    在Java Web开发中,OpenSessionInView(OSIV)模式是一种常见的解决数据持久化问题的设计模式,主要用于Spring框架与Hibernate等ORM工具的集成。这个模式的主要目的是解决在HTTP请求处理过程中,由于Session范围内的...

    Hibernate延迟加载以及利用Spring

    ### Hibernate延迟加载以及利用Spring #### 一、Hibernate延迟加载概念与原理 在理解Hibernate的延迟加载机制之前,我们首先需要了解什么是延迟加载。延迟加载(Lazy Loading)是一种设计模式,其核心思想是在真正...

    SSH整合示例项目 hibernate5.2.3+struts2.5.2+spring4.3.3.zip

    通过合理配置,Spring能够管理Hibernate Session,使得在视图层(如JSP)仍能访问到数据库对象,而无需重新打开新的Session。 综上所述,这个SSH整合示例项目展示了如何高效地集成这三个框架,以构建一个功能完备、...

    struts-2.3.24.1+spring4.2.1+hibernate5.0

    6. **整合 Spring 和 Hibernate**:配置数据源,创建 SessionFactory,通过 Spring 的 HibernateTemplate 或者 SessionFactory 的 OpenSessionInView 模式进行数据访问。 7. **测试与调试**:确保所有组件能够正常...

Global site tag (gtag.js) - Google Analytics