通过@PersistenceContext注入JPA entityManager

时间:2014-04-27 17:38:57

标签: jpa thread-safety entitymanager

我已经读过Spring通过@PersistenceContext注入的entityManger是线程安全的,任何人都可以确认吗?有人有线程问题吗?我有点担心(请参阅下面的我的dao课程。)我们的应用程序是Spring-mvc / JPA / hibernate webapp。 Web请求非常简单,每个请求只执行一次CRUD操作,我们不会在CRUD处理逻辑中自己创建任何线程。

这是我们如何连线的。

hibernate persistence xml

<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> ..... //snipped

Spring context xml

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>

</bean>

DAO实现类 - 这是一个单例Spring注入的bean。因为它是一个单身人士,我有点担心将entityManager作为实例变量

@Repository
@Configurable
public class NotificationDaoImpl implements NotificationDao {
@PersistenceContext
EntityManager em;

    public void someSave(Entity someEntity) {
       em.merge(someEntity);
    }

示例实体类

@Entity
@Table(name = "mytable")
@Configurable
public class SomeEntity {

0 个答案:

没有答案