2015-02-09 92 views
1

我的應用程序使用Spring 2.5和本機TopLink 10g。我想將我的應用程序從本地TopLink遷移到EclipseLink。從本機遷移到EclipseLink持久性

目前在我的應用程序extends TopLinkDaoSupport.java(在Spring 2.5),以使用#getSession()方法對所有數據庫操作的每一個DAO,但該方法的返回類型爲oracle.toplink.sessions.Session而不是org.eclipse.persistence.sessions

有沒有解決上述問題的方法?

+0

你爲什麼不使用JPA API?這樣,你可以簡單地爲你的DAO注入一個'EntityManager'。 – meskobalazs 2015-02-09 15:00:56

+0

是的,我可以。但是JPA需要做大量的改變/努力,因爲每個DAO都使用getTopLinkTemplate()方法從DB讀取記錄。 – Sunny 2015-02-10 07:40:30

+0

然後你應該使用'JpaDaoSupport',但我不知道需要進行多大的修改。我一定會去'EntityManager'的方式,特別是如果我將遷移到JPA 2的參考實現:) – meskobalazs 2015-02-10 07:51:09

回答

1

我還建議使用JPA而不是舊的TopLink API。 如果你確實需要訪問會話對象,你也可以從EntityManager得到它。在EclipseLink中檢查org.eclipse.persistence.internal.jpa.EntityManagerImpl - 這是一個實現EntityManager的類。有一個getDelegate()方法實現,返回這個(EntityManagerImpl)所以((org.eclipse.persistence.jpa.JpaEntityManager)[EntityManager].getDelegate()).getActiveSession()給你org.eclipse.persistence.sessions.Session

+0

我可以使用JPA中現有的「toplink-mapping.xml和session.xml」嗎?或者我必須重新定義所有我的實體在persistence.xml中, – Sunny 2015-02-11 07:51:43

+0

是的,您可以使用現有的映射文件。請參閱https://wiki.eclipse.org/Creating_EclipseLink_Files_for_Deployment_(ELUG)#JPA_Applications_and_Session_Metadata – Chris 2015-02-11 14:59:45

相關問題