Me está costando decidir si debería seguir con Hibernate para un nuevo proyecto o mojarme los pies con JPA y la nueva implementación de Spring Data.
¿El marco de Spring Data está destinado a proyectos grandes o pequeños con requisitos de consulta modestos?
Si bien ciertamente veo la ventaja en la reducción de código mediante el uso de la @Queryanotación, ¿qué haces para las consultas dinámicas? ¿Qué pasa cuando quieres implementar un método save () que es bastante complejo?
La documentación dice hacer una interfaz personalizada e implementación que implemente su repositorio principal, pero ¿qué sucede si necesita acceder a algún método súper en el repositorio de Crud? El repositorio crud implementa el personalizado, no al revés. Parece un diseño extraño.
No estoy seguro de si este marco responderá a los desafíos de las aplicaciones complejas y grandes. Nunca he tenido muchos problemas con Hibernate, y estoy considerando seguir con el viejo y confiable en lugar de ir con Spring Data JPA.
¿Qué tengo que hacer? ¿Qué complicaciones y costos imprevistos enfrentaré si uso Spring Data JPA?

Respuestas:
Entonces,
spring-datahace un poco de magia extra que ayuda con consultas complejas. Al principio es extraño y lo omites por completo en los documentos, pero es realmente poderoso y útil.Implica crear una costumbre
Repository'RepositoryImpl' y personalizado y decirle a Spring dónde encontrarlo. Aquí hay un ejemplo:Clase de configuración:
señale su configuración xml aún necesariacon una anotación que apunte a su paquete de repositorios (ahora busca*Implclases automáticamente):jpa-repositories.xml: indicaSpringdónde encontrar tus repositorios. También indiqueSpringque busque repositorios personalizados con elCustomImplnombre del archivo:MyObjectRepository- Aquí es donde puede colocar métodos de consulta anotados y no anotados. Tenga en cuenta cómo esta interfaz de repositorio extiende elCustomuno:MyObjectRepositoryCustom- métodos de repositorio que son más complejos y no se pueden manejar con una simple consulta o anotación:MyObjectRepositoryCustomImpl- donde realmente implementa esos métodos con un autoconectadoEntityManager:Sorprendentemente, todo esto se combina y los métodos de ambas interfaces (y la interfaz CRUD que implementa) se muestran cuando lo hace:
Ya verás:
Realmente funciona. Y obtienes una interfaz para realizar consultas.
spring-dataRealmente está listo para una gran aplicación. Y cuantas más consultas pueda enviar a simples o anotaciones, mejor será.Todo esto está documentado en el sitio Spring Data Jpa .
Buena suerte.
fuente
JpaRepository->MyJpaRepository. También debe crear unMyJpaRepositoryFactoryBeanpero, si lo configura todo correctamente, puede anular el método .save (). Aquí están los documentos de Spring Data JPA: static.springsource.org/spring-data/data-jpa/docs/current/… ¡ No te rindas todavía!He usado Spring Data JPA en proyectos pequeños y grandes con demandas de consultas simples. La principal ventaja es que ni siquiera tiene que usar la
@Queryanotación. No hay nada en Spring Data que le impida usarlo en proyectos grandes y elQueryDSLsoporte reciente podría ayudarlo. Este es un ejemplo del uso de QueryDSL para apuntar a Hibernate.Si prevé consultas complejas y se siente cómodo utilizando objetos de Hibernate sin JPA, creo que una combinación alternativa podría ser tener los Spring Data simples
Repositoryjunto a los complejos basados en Hibernate con los métodos específicos que pueda necesitar. Puede ser menos engorroso que torcer una implementación de Hibernate en la estructura JPA de Spring Data.fuente
Spring JPA le proporcionará mucha abstracción al escribir SQL e incluso algo de HQL utilizando la declaración del método de consulta. Spring JPA brilla con su generación de consultas, pero cuando desea una solución puramente de hibernación, puede personalizarla según sea necesario, ya que spring JPA todavía se basa en hibernación. Consulte los documentos http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html para obtener más información.
fuente