`

使用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可以提供...

    Spring Integration + Spring WS 整合

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

    基于Spring MVC+Spring JPA技术使用Spring全注解实战开发大型商业ERP项目

    本课程将会以项目功能为驱动 以功能为载体依次从浅入深的讲解目前Java Web开发中使用的最新技术 课程中除了数据增删改查这种传统功能外 还涉及到权限设计 树形菜单 站内聊天 报表开发等实用的设计方法或技术实现 ...

    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` ...

    使用Spring的JdbcTemplate实现分页功能

    使用Spring的JdbcTemplate实现分页功能

    SpringCloud中文文档

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

    idea spring assistant插件

    IntelliJ IDEA是一款广受欢迎的Java开发集成环境,它提供了丰富的功能来提升开发效率。Spring Assistant是专门为IntelliJ IDEA设计的...如果你是Spring框架的使用者,安装并熟练使用这个插件将极大地提升你的开发体验。

    最简单的用户登录与注册系统 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 开发个人博客项目

    spring4.2.0对应jdk1.8spring,springMVC所有依赖包以及文档

    在Spring 4.2.0中,开发者可以使用JDK 1.8的Lambda表达式来编写简洁的回调函数,特别是在使用Spring的事件监听或者AOP切面时。此外,Stream API的引入使得集合操作变得更加高效和简洁,尤其在数据过滤、转换和聚合...

    SpringCloud项目实战各组件源代码案例

    Spring Cloud Config使用Oracle数据库作为后端配置存储 Spring Cloud Config + Spring Cloud Bus + kafka实现配置中心 SpringCloud微服务远程调用组件Feign的使用 springcloud-circuitbreaker.zip springcloud-...

    mybatis在非spring环境下如何使用

    一般使用mybatis的环境,大多都是别人已经配置...我文章中的方法不基于spring,一般很少会在真实项目中直接使用。我把我的搭建过程记录下来给有用的人吧。 https://blog.csdn.net/lxyoucan/article/details/126162493

    Eclipse 搭建Spring 开发环境

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

Global site tag (gtag.js) - Google Analytics