我已经读过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 {