@PersistenceUnit 주석으로 생성자를 통해 EntityManagerFactory를 설정하는 방법을 아는 사람은 누구입니까? xml 구성을 통해이 작업을 수행 할 수 있습니다. 그러나 나는 해당 주석 구성을 모른다. @PersistenceUnit 주석으로 생성자를 통해 EntityManagerFactory를 설정하는 방법
<bean id="handler" class="com.handler.LocalHTHandler">
<constructor-arg ref="entityManagerFactory"></constructor-arg>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
<property name="persistenceUnitName" value="myUnit"></property>
그리고 그것은 잘 작동된다. 내 처리기 bean에 대한 주석을 통해 처리 할 수 있습니까? @persistanceunit에 대해 들었지만, 그것을 달성하기 위해 생성자에 배치 할 수 없습니다. 그 맞습니까? 퍼시스턴스 유닛과 같이 애플리케이션 컨텍스트 파일에 정의
public abstract class BasicJpaDao<T> implements IBasicDao<T> {
@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "default")
protected EntityManager entityManager;
// Default constructor for Spring
public BasicJpaDao() {}
//Use this constructor to set the entity manager yourself
public BasicJpaDao(EntityManager entityManager) {
this.entityManager = entityManager;
}
...
}
:
<!-- JPA -->
<!-- Creates an EntityManagerFactory for use with the Hibernate JPA provider -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceGlobal" />
<property name="packagesToScan" value="me.comocomo.nutrino.domain.jpa" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="jpaPropertyMap">
<map merge="true">
<entry key="hibernate.format_sql" value="${hibernate.format_sql}" />
</map>
</property>
</bean>
<!-- jpaVendorAdapter (works in conjunction with the persistence.xml) -->
<bean id="jpaVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="${jpa.database}" />
<property name="showSql" value="${jpa.showSql}" />
<property name="databasePlatform" value="${jpa.dialect}" />
<property name="generateDdl" value="${jpa.generateDdl}" />
</bean>
<!-- In order to enable EntityManager injection -->
<bean id="persistenceAnnotation"
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- Transactions -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSourceGlobal" />
</bean>
우리 코드에서
injecting entitymanger가 괜찮습니다.하지만 entitymanager 자체를 생성자 arguement로 mybean에 전달해야합니다. –
Spring 용 기본 생성자를 EntityManager를 삽입 할 때 사용할 수 있고, 편집 용처럼 다른 용도로 사용할 수 있습니다. 그런 다음 Entity Manager를 자신의 EntityManagerFactory 클래스에 삽입하고 Entity Manager를 Bean에 전달할 수 있습니다. 만약 이것이 당신이 찾고있는 것이 아니라면, 당신이 bean에서 Entity Manager를 수동으로 설정해야하는 이유를 자세히 설명해 주면 도움이 될 것입니다. –
위의 설명에서 나는 실수를했습니다. 나는 entitymanager가 아니라 entitymanagerfactory를 생성자 arg로 mybean에 전달해야합니다. –