Sobes.tech
Senior

Have you used Criteria API and Specification API in JPA? What are they used for?

sobes.tech AI

Answer from AI

Criteria API and Specification API in JPA are tools for dynamically building database queries in Java, allowing the creation of type-safe and flexible queries without writing JPQL strings.

Criteria API is the standard JPA API for constructing queries using objects and methods. It enables programmatic query creation, combining conditions, sorting, etc. Example:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<User> cq = cb.createQuery(User.class);
Root<User> user = cq.from(User.class);
cq.select(user).where(cb.equal(user.get("status"), "ACTIVE"));
List<User> activeUsers = entityManager.createQuery(cq).getResultList();

Specification API is a pattern and interface, often used with Spring Data JPA, that allows describing search criteria as separate objects (specifications) that can be combined. This facilitates reuse and composition of conditions.

Example Specification:

public class UserSpecifications {
    public static Specification<User> hasStatus(String status) {
        return (root, query, cb) -> cb.equal(root.get("status"), status);
    }
}

// Usage
List<User> users = userRepository.findAll(UserSpecifications.hasStatus("ACTIVE"));

Both APIs are used to create dynamic, type-safe, and easily maintainable queries without using string-based queries.

Have you used Criteria API and Specification API in… - sobes.tech