2015-02-09 57 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

相关问题