Esta página se tradujo automáticamente con la API de traducción de Google Cloud.
Algunas páginas se pueden leer mejor en su totalidad.
La API de persistencia de Java (JPA) es una especificación de Java para almacenar, acceder y administrar datos en una base de datos relacional. Spring Data JPA es una implementación de Spring Framework de JPA que facilita el trabajo con JPA en una aplicación Spring.
En este artículo, cubriremos algunos temas avanzados en Spring Data JPA, que incluyen:
Una proyección es una forma de especificar qué campos de una entidad desea recuperar de la base de datos. Spring Data JPA admite dos tipos de proyecciones:
Con las proyecciones basadas en interfaz, crea una interfaz que define los campos que desea recuperar y Spring Data JPA genera una implementación de esa interfaz en tiempo de ejecución. Esta es la forma recomendada de usar proyecciones, ya que le permite aprovechar las características de seguridad de tipo y finalización de código de su IDE.
Para usar proyecciones basadas en interfaz, primero debe crear una interfaz que defina los campos que desea recuperar:
public interface UserNameOnly {
String getUsername();
}
Entonces puedes usar esa interfaz en tu consulta:
List<UserNameOnly> users = userRepository.findAll(projection(UserNameOnly.class));
Con proyecciones dinámicas, puede especificar los campos que desea recuperar como una cadena. Esto es menos seguro para tipos que las proyecciones basadas en interfaz, pero puede ser útil si desea recuperar un campo que no forma parte de su modelo de entidad.
Para usar proyecciones dinámicas, primero debe crear una clase que defina los campos que desea recuperar:
public class UserNameOnly {
private String username;
public String getUsername() {
return username;
}
}
Entonces puedes usar esa clase en tu consulta:
List<UserNameOnly> users = userRepository.findAll(projection(UserNameOnly.class, "username"));
Querydsl es una biblioteca que le permite crear consultas con seguridad de tipos en un lenguaje específico de dominio basado en Java. Se puede usar con JPA, JDO y otros marcos de acceso a datos.
Para usar Querydsl con Spring Data JPA, debe agregar la dependencia de Querydsl JPA a su proyecto:
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${querydsl.version}</version>
</dependency>
También necesita configurar Querydsl para generar código para sus entidades:
<build>
<plugins>
...
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
Una vez que Querydsl está configurado, puede usarlo para crear consultas con seguridad de tipos:
QUser user = QUser.user;
List<User> users = queryFactory
.selectFrom(user)
.where(user.username.eq("johndoe"))
.fetch();
Criteria API es una API de Java para crear consultas con seguridad de tipos. Es parte de la especificación JPA y se puede usar con cualquier marco de acceso a datos compatible con JPA.
Para utilizar Criteria API con Spring Data JPA, debe crear una CriteriaQuery:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<User> criteria = builder.createQuery(User.class);
A continuación, puede utilizar CriteriaQuery para crear su consulta:
Root<User> user = criteria.from(User.class);
criteria.select(user);
criteria.where(builder.equal(user.get("username"), "johndoe"));
Finalmente, puede ejecutar la consulta:
List<User> users = entityManager.createQuery(criteria).getResultList();
En este artículo, cubrimos algunos temas avanzados en Spring Data JPA, incluidas las proyecciones, Querydsl y Criteria API. También vimos cómo usar cada una de estas funciones en una aplicación Spring.