`

使用spring的OpenEntityManagerInView

    博客分类:
  • SSH
阅读更多


OpenEntityManagerInView和Hibernate的OpenSessionInView一样,服务端在接收到一个请求的时候开启EntityManager,在请求结束的时候才去关闭这个EntityManager,和JpaDaoSupport一起可以很好地工作。

使用OpenEntityManagerInView可以解决JPA延迟加载出现的LazyInitialize异常。如果不使用JPA的OpenEntityManagerInViewFilter,那么当使用玩getJpaTemplate().persist()或者remove()方法后,Spring就会自动关闭EntityManager,因此,你使用了延迟加载的对象加载属性的时候将会出现LazyInitialize异常。

OpenEntityManagerInViewFilter会把连接放到线程池里面,不是马上关闭。因此,在请求的过程当中,我们可以随时使用这个EntityManager。当请求结束之后才会关闭这个EntityManager。

不过在高并发的时候,EntityManager的生命周期会比较长(因为请求开始到请求结束这段时间长),EntityManager不会立刻关闭,导致连接池连接数占用的问题。因此高并发的系统最好不要使用OpenEntityManagerInView模式。

配置如下,在web.xml里面添加一个filter:

<filter> 

<filter-name>jpaFilter</filter-name> 

<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> 

</filter> 

<filter-mapping> 

<filter-name>jpaFilter</filter-name> 

<url-pattern>/*</url-pattern> 

</filter-mapping>
分享到:
评论
1 楼 86614009 2014-04-01  
如何在service层,如何获取绑定到当前线程的entitnamager?
也就是OpenEntityManagerInViewFilter开启的这个entityManager

相关推荐

    IDEA中使用Spring的简单入门(加小案例)

    在本文中,我们将深入探讨如何在IntelliJ IDEA(IDEA)中使用Spring框架进行简单的入门。Spring是一个广泛使用的开源Java框架,它为构建企业级应用程序提供了强大的支持,包括依赖注入、面向切面编程(AOP)、事务...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效...通过学习和实践这个示例,你不仅可以掌握如何在Spring Boot中使用Spring Batch,还能了解批处理的最佳实践,这对于处理大数据量的应用场景非常有价值。

    SpringBlade开发手册基础版

    该手册主要讲解如何使用SpringBlade开发微服务系统平台,涵盖了从环境准备到生产部署的所有步骤。 环境准备 在开始使用SpringBlade之前,需要安装Nacos、Sentinel、Seata、Redis等必要的组件。同时,也需要安装...

    spring_in_action-sixth-edition.pdf

    Spring 实战包括使用 Spring Boot 构建 Web 应用程序、使用 Spring Data 构建数据访问层、使用 Spring Security 构建安全应用程序等。 10. Spring 生命周期 Spring 生命周期是指 Spring 应用程序从启动到关闭的...

    使用Spring Boot的小型诊所信息系统,毕业设计Java版.zip

    使用Spring Boot的小型诊所信息系统,毕业设计Java版.zip使用Spring Boot的小型诊所信息系统,毕业设计Java版.zip使用Spring Boot的小型诊所信息系统,毕业设计Java版.zip使用Spring Boot的小型诊所信息系统,毕业...

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...

    play20-spring-demo, 在播放 2.0应用程序中使用 spring.zip

    play20-spring-demo, 在播放 2.0应用程序中使用 spring 在播放 2.0应用程序中使用 spring的这是一个简单的应用程序演示如何将播放 2.0应用程序组件与 Spring Framework 应用程序集成。请注意,同样的技术可以应用到...

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...

    使用spring batch需要在数据库建立的几个表——建表语句

    使用spring batch需要在数据库建立的几个表——建表语句(BATCH_JOB_INSTANCE、BATCH_JOB_EXECUTION、BATCH_JOB_EXECUTION_CONTEXT、`BATCH_JOB_EXECUTION_PARAMS` 、`BATCH_JOB_EXECUTION_SEQ` 、`BATCH_JOB_SEQ` ...

    SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    SpringBoot+SpringSecurity处理Ajax登录请求问题是SpringBoot开发中的一個常见问题,本文将详细介绍如何使用SpringBoot+SpringSecurity处理Ajax登录请求问题。 知识点1:SpringBoot+SpringSecurity框架简介 ...

    SpringCloud中文文档

    Spring Cloud Context 提供了 ApplicationContext 的实用程序和特殊服务,而 Spring Cloud Commons 则是一组在不同的 Spring Cloud 实现中使用的抽象和常用类。 在使用 Spring Cloud 时,需要注意到由于“非法密钥...

    最简单的用户登录与注册系统 spring mvc spring jdbc

    该项目使用的是Spring 4.0.5版本,这是一个稳定且广泛使用的版本。通过Spring MVC,开发者可以将业务逻辑、视图和控制器分离,使代码结构更加清晰。Spring JDBC则提供了模板方法和事务管理,使得数据库操作变得更加...

    spring cloud和spring boot两个完整项目

    核心技术采用Eureka、Fegin、Ribbon、Zuul、Hystrix、Security、OAth、Mybatis、Ace-cache等主要框架和中间件,UI采用Bootstrap、jquery等前端组件 spring boot项目是使用spring boot + thymeleaf 开发个人博客项目

    使用Spring的JdbcTemplate实现分页功能

    使用Spring的JdbcTemplate实现分页功能

    Spring Integration + Spring WS 整合

    为了将 Spring Integration 和 Spring WS 整合在一起,我们需要使用 Spring Integration 的 Web 服务 gateway。这个 gateway 允许我们将 Web 服务和 Spring Integration 集成在一起,使得我们可以使用 Spring ...

    使用MyEclipse查看Spring的依赖视图

    ### 使用MyEclipse查看Spring的依赖视图 #### 一、引言 随着软件开发的复杂度不断提高,项目之间的依赖关系变得越来越复杂。在这种背景下,有效地管理这些依赖关系成为了一个非常重要的任务。Spring框架作为Java...

    Eclipse 搭建Spring 开发环境

    本文主要介绍了如何使用 Eclipse 搭建 Spring 开发环境,包括软件准备、软件安装和 Spring 示例三个部分。 一、软件准备 要搭建 Spring 开发环境,需要准备三个软件:Eclipse、Spring IDE 和 Spring Framework。...

    spring2.0升级到spring3.0.5的开发包

    7. **AspectJ集成加强**:Spring 3.0进一步强化了与AspectJ的集成,使得AOP的使用更加简便,可以通过注解轻松定义切面。 8. **国际化支持**:Spring 3.0的MessageSource接口提供了更好的国际化支持,可以更方便地...

    Spring Framework 6 中文文档

    此外,文档还涵盖了Bean之间的依赖注入、自动装配以及AOP等高级特性,这些内容对于理解和使用Spring框架进行实际开发至关重要。Spring的API设计使得开发者能够轻松地实现业务逻辑,同时保持代码的整洁和可维护性。 ...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    Hibernate和Spring Data JPA共同负责数据持久化,Hibernate提供ORM能力,Spring Data JPA进一步简化了JPA的使用,提高了开发效率。通过这样的集成,开发者可以快速地构建出高效、可扩展的Java Web应用。

Global site tag (gtag.js) - Google Analytics