sping data jpa 如何注入的entitymanager


 

public class JpaRepositoryFactoryBean<T extends JpaRepository<S, ID>, S, ID extends Serializable> extends
		TransactionalRepositoryFactoryBeanSupport<T, S, ID> {

	private EntityManager entityManager;

	/**
	 * The {@link EntityManager} to be used.
	 * 
	 * @param entityManager the entityManager to set
	 */
	@PersistenceContext
	public void setEntityManager(EntityManager entityManager) {

		this.entityManager = entityManager;
	}


可以看到entityManager是通過PersistenceContext注解獲取的。

2.如果要是希望在spring環境中使用@PersistenceContext和@PersistenceUnit,則在application.xml中配置

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

特別注意的是 :如果你在application.xml中配置過context:annotation-config" 或者 "context:component-scan tag,則會默認register一個默認的PersistenceAnnotationBeanPostProcessor。所以如果你要是希望自定義PersistenceAnnotationBeanPostProcessor。則Remove or turn off the default annotation configuration,具體怎么操作,正在研究,不好意思

可以通過這個類指定多個"persistenceUnits"

 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
   <property name="persistenceUnits">
     <map/gt;
       <entry key="unit1" value="persistence/unit1"/>
       <entry key="unit2" value="persistence/unit2"/>
     </map/gt;
   </property>
 </bean>

 也可以指定多個persistenceContexts

 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
   <property name="persistenceContexts">
     <map/gt;
       <entry key="unit1" value="persistence/context1"/>
       <entry key="unit2" value="persistence/context2"/>
     </map/gt;
   </property>
 </bean>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM