java - example - JPA 1 no es lo suficientemente bueno
jpa java (7)
Bueno, creo que la mayoría de las veces JPA es "lo suficientemente bueno", pero echo mucho de menos la API de Criteria (solo proporcionada por Hibernate)
Trabajando en un proyecto de tamaño mediano durante los últimos 4 meses, estamos usando JPA y Spring. Estoy bastante seguro de que JPA no es eficaz para proyectos que requieren más que una pantalla CRUD ... La interfaz de consulta es deficiente, Hibernate no respeta JPA especifico todo el tiempo y muchas veces necesito usar clases de hibernación, anotaciones y configuración. ¿Qué piensan ustedes acerca de JPA? ¿No es lo suficientemente bueno?
Bueno, no puedo proporcionar una guía específica sin saber más sobre su caso particular. Parece que está utilizando la implementación de JPA de Hibernate. Puede probar otras implementaciones de JPA si hay algo sobre Hibernate que no le gusta. En cuanto a la interfaz de consulta, si las consultas de JPA no están haciendo lo que desea, siempre tiene la capacidad de obtener una conexión simple y antigua y trabajar con eso. El genio del framework es que, al menos, no es necesario escribir todo el código CRUD nunca más. Nunca diría que JPA es perfecto, pero es mejor que escribir a mano SQL todo el tiempo para hacer cosas triviales.
Claro que cualquier ORM es mejor que escribir a mano SQL para operaciones CRUD ... el caso es: creo que no hay ninguna razón para usar JPA en lugar de Hibernate puro porque estoy mezclando ambos mucho. Si no obtengo un proveedor oculto, ¿por qué usar JPA?
Hibernate ha estado mucho tiempo en el camino. Es por eso que tiene muchas funciones aún no disponibles en JPA. Pero con el tiempo, JPA se pondrá al día. Hasta entonces, use las configuraciones específicas de JPA e Hibernate donde sea necesario. Si necesita cambiar más tarde, será mucho más fácil.
Una de las cosas buenas sobre el uso de JPA vs Hibernate Annotations es la configuración automática y el descubrimiento de clases persistentes. Además, depende de la cantidad de tiempo que necesite para dejar de utilizar la API de JPA, si solo lo hace el 10% del tiempo, de todos modos hará que los proveedores de conmutación sean mucho más fáciles que si utilizara hibernate para 100 % de tus consultas.
Mi consejo sería simplemente usar Hibernate. Hibernate junto con anotaciones JPA + anotaciones de Hibernate es bastante poderoso. Incluso puede configurar EntityManagerFactory para autodetectar Entidades en classpath, pero luego llame a getSessionFactory () para aprovechar las API nativas de Hibernate en su aplicación. Si está utilizando Spring, es muy fácil hacer esto con LocalContainerEntityManagerFactoryBean y HibernateJpaVendorAdapter.
Combinamos JPA 2.0, Hibernate Core, Hibernate Search y Hibernate Validator a través de nuestro framework interno. Hace todo lo que le lanzamos :)
¡Combina eso con Maven y también tenemos una base de datos creada para nosotros! Agregue DBUnit a la mezcla y obtendrá todo lo que necesita.
Búsquedas terriblemente rápidas a través de Lucene, pero el uso de Hibernate Criteria / HQL consultas son muy interesantes. Todo este poder detrás de una caja de sugerencia GWT es genial.