2010-06-23 17 views
5

Estoy tratando de ejecutar una consulta usando EclipseLink siguiendo la documentación errónea en http://wiki.eclipse.org/Introduction_to_EclipseLink_Expressions_%28ELUG%29, pero cada vez que necesita ejecutar una expresión usa una variable llamada "sesión", pero en ningún lugar explica de dónde viene esta variable de "sesión". Ya tengo un archivo persistence.xml y puedo ejecutar javax.persistence.Query en mi base de datos, por lo que sé que la conexión funciona, pero no puedo averiguar de dónde viene la "sesión". Un poco de ayuda por favor?El documento EclipseLink no explica la "sesión"

Una pregunta adicional: he estado teniendo un momento terrible tratando de hacer que EclipseLink funcione, aunque todos dicen cuán grande es en comparación con Hibernate. ¿EclipseLink vale mi tiempo y mi frustración, o debería simplemente eliminarlo y probar algo como Hibernate?

Gracias

Respuesta

4

Sugiero leer this.

En EclipseLink, hay diferentes tipos de sesiones. Sin entrar en detalles, puede decir que una sesión es algo así como una transacción. En un EclipseLink, una sesión es a menudo una Unidad de trabajo, que sabe qué entidades han cambiado/agregado/eliminado o lo que sea.

Es posible recuperar una sesión de este tipo en EclipseLink, al invocar la siguiente API propietario en su APP EntityManager:

//EntityManagerImpl has to be imported as org.eclipse.persistence.internal.jpa.EntityManagerImpl 
Session session = ((EntityManagerImpl) entityManager).getActiveSession(); 

Antes de llamar a esto, usted debe estar seguro de que estás dentro de una transacción.

+1

Gracias, esta respuesta me ayudó a encontrar lo que estaba buscando. Sin embargo, entre esta respuesta y el lanzamiento de EclipseLink 2.3, se han producido algunos cambios en la API y esta clase se llama ahora [org.eclipse.persistence.jpa.JpaEntityManager] (http://www.eclipse.org/eclipselink/api/2.3 /org/eclipse/persistence/jpa/JpaEntityManager.html). –

1

Es EclipseLink vale la pena mi tiempo y frustración, o debería simplemente chatarra y probar algo como Hibernate en su lugar?

Depende exclusivamente de usted juzgar si "vale la pena" para usted.

Pero me gustaría señalar que el tiempo perdido y la frustración al aprender nuevas tecnologías es solo parte de las especificaciones del trabajo para un ingeniero de software. Si no puede tomarlo, debe considerar seriamente una carrera menos exigente.

4

EclipseLink nace de la donación de Oracle Toplink a la Fundación Eclipse que, como Hibernate, es una API de persistencia patentada y es anterior a JPA. Entonces, al igual que Hibernate, se basa en un motor patentado y conceptos o abstracciones exclusivos. La sesión de EclipseLink es una de ellas (y es diferente de la sesión de Hibernate, que es más comparable con EclipseLink UnitOfWork).

Ahí es donde entra en APP. JPA proporciona una unificado y estandarizada API que productos como EclipseLink o hibernación implementan. Esto no significa que eliminaron las características propietarias y, si no te importa no ser portátil, puedes usarlas. El enlace publicado sobre Expressions es un ejemplo.

Ahora, si desea utilizar y aprender JPA, debe apegarse a JPA (y este sería mi consejo). Si desea utilizar características de propiedad, tendrá que aprender cosas sobre el motor de persistencia subyacente.

En cuanto a la documentación de EclipseLink, no puedo decir que me gusta, incluso si logro encontrar mi camino, tal vez porque ya tengo alguna experiencia con JPA. Pero esto es subjetivo, supongo, y otras personas pueden tener a different opinion (No estoy de acuerdo, pero como dije, esto es subjetivo).

Sin embargo, Hibernate es indudablemente más popular y tiene una comunidad más amplia, más tutoriales, etc. y su documentación me parece muy buena. No sé en qué basó su elección, pero desde el punto de vista del apoyo de la comunidad, Hibernate definitivamente gana. Solo tenga en cuenta que esto no significa que no tendrá frustración con Hibernate también :)

2

Gran parte de la documentación original en la wiki de EclipseLink es anterior a nuestra implementación de JPA. Estamos en el proceso de actualizarlo a un conjunto de páginas wiki mucho más utilizables enfocados en JPA. La mayoría de las operaciones que los usuarios necesitan se pueden hacer con JPA y con nuestra implementación de JPA 2.0, incluso se necesitan menos necesidades para usar las sesiones nativas.

Puede decirnos lo que está tratando de hacer y podemos brindarle asistencia directa o indicarle los documentos con el contenido más adecuado.

Aunque estoy disfrutando de la interfaz stackoverflow, el EclipseLink Forum ofrece el soporte más activo de los committers del proyecto.

Doug

+0

Gracias por la información Doug! –

Cuestiones relacionadas