-
@PersistenceContext 线程安全的疑问10
在spring+jpa情况下,经常这么写service层或dao层
public class BrandServiceDao implements BrandDao { @PersistenceContext protected EntityManager entityManager; // business }
一般service和dao都被是singleton 但这种情况下,
entityManager没有线程安全问题么
或者说这么证明不同线程拿到的entityManager是不同的实例对象
我自己做了下模拟,也许方式不对,拿到的entityManager(代理对象)的hashcode都是一样的
嗯 原模原样的输出是:Shared EntityManager proxy for target factory [org.springframework.orm.jpa.LocalEntityManagerFactoryBean@1b64ef8]
共享的entityManager代理?
2013年4月25日 16:02
1个答案 按时间排序 按投票排序
-
采纳的答案
entityManager 线程不安全的
共享的entityManager代理?
你猜对了 spring提供了EntityManager 的 代理 EntityManagerProxy
SharedEntityManagerCreator来创建代理
return (EntityManager) Proxy.newProxyInstance(
(cl != null ? cl : SharedEntityManagerCreator.class.getClassLoader()),
ifcs, new SharedEntityManagerInvocationHandler(emf, properties));2013年4月25日 16:18
相关推荐
EJB(Enterprise JavaBeans)3.0 是Java EE(Java Platform, Enterprise Edition)中的一个核心组件,用于构建可扩展、安全且易于管理的企业级应用程序。EJB 3.0 版本是在EJB 2.x的基础上进行重大改进,旨在简化开发...
EJB(Enterprise JavaBeans)是Java平台上的一个核心组件,用于构建可扩展的、安全的、事务性的企业级应用。EJB 3.0是其一个重要版本,引入了许多改进,简化了API,提高了开发效率。本教程将深入探讨EJB 3.0的基础...
其次,Spring 实现了部分在 EJB 容器环境下才具有的功能,比如对 @PersistenceContext、@PersistenceUnit 的容器注入支持。 第三,也是最具意义的,Spring 将 EntityManager 的创建与销毁、事务管理等代码抽取出来...
EJB3通过`@PersistenceContext`注解注入实体管理器,如下所示: ```java import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless public...
在Spring中,主要的注解类别包括@Autowired、@Qualifier、@CommonAnnotation、@PersistenceContext和@PersistenceUnit等。通过使用`<context:annotation-config/>`元素,可以在配置文件中一次性声明这些注解处理器,...
* 使用 @PersistenceContext 注解 * 依赖于 JTA 的事务 可扩展的 EntityManager: * 使用 @PersistenceContext 注解 * 绑定有状态的会话 bean JPA 是一个功能强大且灵活的持久化机制,提供了一个通用的持久化机制...
8. **安全性**:EJB 3.0提供了基于角色的访问控制(Role-Based Access Control, RBAC)和其他安全特性,确保应用的安全性。 9. **持久化**:`@PersistenceContext`和`@PersistenceUnit`注解用于管理和访问持久化上...
企业级JavaBean(Enterprise JavaBeans,EJB)是Java平台上用于构建可扩展、安全且事务处理能力强大的企业级应用的框架。EJB3.0是EJB技术的一个重大革新,它极大地简化了开发过程,降低了对开发者的要求,使其更加...
9. **安全性**:EJB 3.0允许开发者通过角色和权限控制对资源的访问,增强了应用的安全性。 **最新EJB 3.0实例教程**:这个压缩包文件可能包含一系列的教程,指导开发者如何使用EJB 3.0进行实际开发。教程可能涵盖...
例如,@Entity用于标记实体Bean,@Stateless和@Stateful分别用于无状态和有状态会话Bean,@PersistenceContext和@PersistenceUnit则用于管理持久化上下文。 MyEclipse是一款强大的集成开发环境(IDE),特别适合...
每个事务都与打开它的线程的标识符相关联,以保证事务管理器的线程安全操作。 使用@PersistenceContext 注释的实体管理器注入。 然后,管理器使用事务管理器来检索当前事务并在那里执行其操作。 管理 EJB 初始化...
EJB (Enterprise JavaBeans) 3.0 是Java EE (Enterprise Edition) 平台中用于构建企业级应用程序的重要组件。...然而,理解和熟练掌握EJB 3.0 技术,还需要深入学习其核心概念,如容器管理的事务、安全性和并发控制等。
Enterprise JavaBean(EJB)3.0 是Java平台企业版(Java EE)中的核心组件,专为构建可扩展、安全且事务处理能力强大的分布式应用程序而设计。在EJB 3.0中,持久化(Persistence)是核心特性之一,它简化了对象与...
在本例中,`@PersistenceContext`注解用于由Spring自动注入一个`EntityManager`实例,这样我们就可以在Service层或DAO层中执行JPA操作。同时,`@Transactional`注解确保在执行数据库操作时方法总是在事务中,以保证...
例如,`@Entity`用于标记实体Bean,`@PersistenceContext`用于注入EntityManager,`@EJB`用于注入其他EJB等。 ### 2. 容器管理的持久性(CMP) EJB3.0强化了容器对持久性对象的支持,通过`@Entity`注解,开发者...
在会话 Bean 中,我们使用 @PersistenceContext 注解注入持久化上下文,然后使用 EntityManager 对象来访问数据库中的数据。 项目搭建 在 Eclipse 中,我们可以按照以下步骤来搭建一个 Java 企业级项目: 1. 创建...
开发者可以通过`@EnableJpaRepositories`开启JPA仓库的支持,`@EntityScan`指定实体类的位置,以及`@PersistenceContext`注入EntityManager。 在"spring + spring mvc + hibernate 之零配置之路"的源代码中,你可能...
**EJB3(Enterprise JavaBeans 3)**是Java企业版(Java EE)中的一个核心组件,用于构建可扩展、安全且事务处理能力强的企业级应用程序。EJB3相较于之前的版本,引入了许多重大改进,旨在简化开发流程并提高生产力...
EJB 3.0为Bean提供了多种服务,包括安全性、性能监控、集群、调度、邮件服务等。开发者可以利用这些服务,无需关心底层实现。 **10. 测试支持** EJB 3.0支持单元测试和集成测试,可以使用JUnit或TestNG进行测试,...
3. **使用`EntityManager`**:在服务层,我们可以通过`@PersistenceContext`注入`EntityManager`,然后调用`persist()`方法来保存新实体。 ```java @Service public class PersonService { @PersistenceContext ...