Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jakarta EE 12: Four Specifications, One Data Story

Jakarta EE 12: Four Specifications, One Data Story

Modern Java applications rarely rely on a single data model. From relational databases to NoSQL systems, developers need consistent, expressive, and maintainable ways to work with data.

Jakarta EE 12 takes another step toward simplifying this complexity by bringing together four complementary specifications: Jakarta Persistence 4.0, Jakarta Data 1.1, Jakarta NoSQL 1.1, and Jakarta Query 1.0.

In this session, we'll explore what's new in each specification, from type-safe queries and expressive repositories to improved entity mapping and a shared query language foundation. Through practical Java examples, we'll demonstrate how these specifications work together to provide a more consistent developer experience across different data models.

Avatar for Otavio Santana

Otavio Santana

November 07, 2026

More Decks by Otavio Santana

Other Decks in Technology

Transcript

  1. Jakarta EE 12: Four Specifications, One Data Story Building a

    Better Java Developer Experience Speaker: Otavio Santana & Nathan Rauh Jakarta EE Open Working Group Meeting | October 2026 COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  2. Four Specifications, One Developer Experience     Jakarta

    Persistence Jakarta Data Jakarta NoSQL Jakarta Query 4.0 1.1 1.1 1.0 Relational persistence Repository abstraction Non-relational data models Common query language Different Data Models. Shared Patterns. A Better Java Experience. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  3. Jakarta Persistence 4.0: More Control, Less Complexity Direct Mutation with

    EntityAgent JPQL Meets Criteria factory.runInTransaction( EntityAgent.class, agent -> agent.update(book) ); var query = builder.createQuery( Book.class, "FROM Book b" ); query.where( book.get(Book_.title) .like("%Jakarta%") ); COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  4. Jakarta Persistence 4.0 Meets Jakarta Data JPQL with @JakartaQuery Native

    SQL with @QueryOptions @Repository interface Products extends DataRepository<Product, Long> { @NativeQuery(""" SELECT * FROM products WHERE available = true AND price < ? """) @QueryOptions(timeout = 2000) List<Product> findAvailable(float maxPrice); @JakartaQuery(""" FROM Product WHERE category = :category """) List<Product> findByCategory(String category); } Repository Simplicity. Persistence Capabilities. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  5. Jakarta NoSQL: One API, Multiple Data Models A familiar Java

    programming model across the NoSQL landscape. One Programming Model Multiple Data Models Template API template.insert(product); template.find(Product.class, id); template.update(product); template.delete(Product.class, id); Key-Value Column Document Graph Time Series Vector Different Data Models. Familiar Java Operations. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  6. Jakarta NoSQL 1.1: More Expressive, Less Boilerplate Richer Entity Mapping

    Fluent Update API Support for maps and structured attributes. template.update(Car.class) .set("available").to(false) .where("type").eq(CarType.CLASSIC) .execute(); @Column Map<String, Skill> skills; Expressive, composable updates in Java. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  7. Jakarta Data 1.1: More Expressive Repositories Powerful queries without writing

    query strings. Constraints & Limits Projections with @Select @Find @First(10) @OrderBy(_Product.PRICE) List<Product> affordable( @By(_Product.PRICE) @Is(AtMost.class) double maxPrice ); @Find @Select(_Product.NAME) @Select(_Product.WEIGHT) Optional<WeightInfo> details( @By(_Product.ID) long id ); Filtering, ordering, and limiting through annotations. Select only the attributes you need. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  8. Jakarta Data 1.1: Type-Safe Dynamic Queries Compose queries in Java,

    not strings. var filter = Restrict.all( _Product.price.lessThan(250.0), _Product.weight.between(10.0, 20.0) ); var sorting = Order.by( _Product.price.desc(), _Product.name.asc() ); var products = repository.findAll(filter, sorting); RESTRICTIONS STATIC METAMODEL ORDERING Combine filtering conditions. Reference typed entity attributes. Compose sorting expressions. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  9. Jakarta Data 1.1: Stateful Repositories & Fetching Repository-based programming can

    also support persistence-context operations and explicit association fetching. Stateful Repository Operations Explicit Fetching with @Fetching @Repository @Find interface Products extends DataRepository<Product, Long> { @Fetching(_Product.CATEGORY) @Persist void add(Product product); @Merge Product merge(Product product); @Fetching(_Product.SUPPLIER) Product productWithDetails(String id); @Remove void remove(Product product); } Entity lifecycle operations within a persistence context. Declare associations to fetch with repository results. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  10. Jakarta Query 1.0: A Shared Query Foundation One object-oriented query

    language foundation across the Jakarta data ecosystem. Java Domain Model Product Customer Order Jakarta Query 1.0 Shared Object-Oriented Query Foundation Jakarta Persistence 4.0 Jakarta Data 1.1 Jakarta NoSQL 1.1 Relational persistence & ORM mapping Repository programming model across data stores Document & Key-Value database abstraction JPQL & Criteria API @Query & Metamodel Query & Projections Full query capabilities for relational databases Type-safe compilation & static metamodel queries Native object mapping to non-relational stores COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  11. Jakarta Query 1.0: Two Languages, One Foundation Common capabilities with

    richer relational semantics. JPQL — Jakarta Persistence Query Language Extends the common subset with richer relational query semantics. Joins Association Navigation Fetching "Relational capabilities for Jakarta Persistence." EXTENDS JCQL — Jakarta Common Query Language Common query capabilities across different data stores. Filtering Ordering Parameters "Common subset for Jakarta Data and Jakarta NoSQL." One Common Foundation. Richer Capabilities Where Needed. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  12. Jakarta Query in Action: One Language, Three APIs Jakarta Data,

    Persistence, and NoSQL expose different programming models with shared query concepts. Jakarta Data 1.1 JCQL @Query("WHERE age >= :min ORDER BY age") List<Person> find(int min); Jakarta Persistence 4.0 JPQL em.createQuery("SELECT p FROM Person p WHERE p.age >= :min", Person.class) .setParameter("min", min).getResultList(); Jakarta NoSQL 1.1 Query API template.query("FROM Person WHERE age >= :min") .bind("min", min).result(); Shared Query Concepts. Different APIs. One Jakarta Ecosystem. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03
  13. THANK YOU! COPYRIGHT (C) 2022, ECLIPSE FOUNDATION | THIS WORK

    IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) | V2021-03