2015-02-09 1 views
1

Мое приложение использует Spring 2.5 и собственный TopLink 10g. Я хочу перенести приложение из родного TopLink в EclipseLink.Перенос с родного на EclipseLink постоянство

В настоящее время каждый ДАО в моем приложении extends TopLinkDaoSupport.java (в Spring 2.5), для того, чтобы использовать метод #getSession() для всех операций DB, но тип возвращаемого значения метода является oracle.toplink.sessions.Session вместо org.eclipse.persistence.sessions.

Есть ли решение проблемы?

+0

Почему вы не используете API JPA? Таким образом, вы просто можете просто ввести «EntityManager» вам DAO. – meskobalazs

+0

да, я могу. Но JPA требовало больших изменений/усилий, поскольку каждый DAO широко использовал метод getTopLinkTemplate() для чтения записей из БД. – Sunny

+0

Тогда вы должны использовать 'JpaDaoSupport', хотя я не знаю, как необходимы большие изменения. Я бы определенно пошел бы на путь EntityManager, особенно если бы я перешел к эталонной реализации JPA 2 :) – meskobalazs

ответ

1

Я бы также рекомендовал использовать JPA вместо старого API TopLink. Если вам действительно нужен доступ к объекту Session, вы также можете получить его от EntityManager. Проверьте org.eclipse.persistence.internal.jpa.EntityManagerImpl в EclipseLink - это класс, который реализует EntityManager. Существует метод getDelegate(), который возвращает этот (EntityManagerImpl), поэтому ((org.eclipse.persistence.jpa.JpaEntityManager)[EntityManager].getDelegate()).getActiveSession() дает вам org.eclipse.persistence.sessions.Session.

+0

Могу ли я использовать существующие «toplink-mapping.xml и session.xml» в JPA или мне нужно переопределить все мои объекты в persistence.xml, – Sunny

+0

Да, вы можете использовать существующие файлы сопоставления. См. Https://wiki.eclipse.org/Creating_EclipseLink_Files_for_Deployment_(ELUG)#JPA_Applications_and_Session_Metadata – Chris