Draft:Jakarta Data
![]() | Review waiting, please be patient.
This may take a week or more, since drafts are reviewed in no specific order. There are 602 pending submissions waiting for review.
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
Reviewer tools
|
Submission declined on 8 July 2025 by Protobowladdict (talk).
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
This draft has been resubmitted and is currently awaiting re-review. | ![]() |
Comment: In accordance with the Wikimedia Foundation's Terms of Use, I disclose that I have been paid by my employer for my contributions to this article. Excentrickristy (talk) 17:08, 8 July 2025 (UTC)
Jakarta Data is a specification for data access APIs under the Jakarta EE platform. It enables Java developers to focus on an application's data model by providing an abstraction of the underlying persistence mechanism. By design, Jakarta Data addresses the challenge of integrating multiple and diverse data sources by offering a common and consistent approach to data operations.
Jakarta Data combines a persistent agnostic API with domain-driven design. This allows developers to work with different databases and storage technologies while building an application's data model and workflows around a specific business domain. For example, if an application manages employee recruitment, it may include domain-specific data entities for "candidates" and "hiring managers" and query methods for "get resume" and "add employee" that operate on a MySQL database. If the database technology changes, the entities and methods would require minimal changes to continue operations.
History
[edit]The first version of Jakarta Data, known as Jakarta Data 1.0, was released as part of Jakarta EE 11 on June 10, 2024. This release followed the conclusion of the Specification Committee Ballot on June 6, 2024, with representatives from Fujitsu, IBM, Oracle, and other organizations.
The next version of Jakarta Data, 1.1, is currently under development[1]. It is planned for release under Jakarta EE 12.
Objectives
[edit]Jakarta Data's core objectives[2] focus on creating a flexible and consistent data access programming model familiar to Jakarta developers. A key objective is persistence agnosticism: Jakarta Data is not tied to any specific database or data source, giving developers the flexibility to choose the most suitable technology for their applications. This allows for easy adaptation to different data solutions as the application or system evolves.
The specification emphasizes a domain-centric approach, aligning data access strategies with the application's core domain logic. This fosters a more cohesive and intuitive development experience, as data manipulation closely mirrors the application's business logic.
Below are other Jakarta Data objectives:
- A unified API that simplifies interaction with different data sources, allowing developers to focus on functionality rather than managing the technical details of different database technologies.
- Pluggable and extensible APIs that support the customization of the framework's behavior when the built-in features do not meet specific needs, enabling a wider range of use cases.
- Simple querying and database operations through domain-centric capabilities, making it easier to work with various persistence engines while aligning with the application's domain model.
- Seamless integration between Java applications and their persistence layers, reducing the need for complex customization for different databases and storage technologies.
Features
[edit]The Jakarta Data specification includes several architectural and functional features that define how data is modelled, accessed, and maintained.
Repositories
[edit]Jakarta Data follows the Repository design pattern[3] to decouple data storage from the data model, providing a clean, organized way for developers to interact with data sources. They act as mediators between the application's domain logic and its underlying data storage, whether a relational database, NoSQL store, or other persistence layer.
Repositories are defined as Java interfaces and annotated with @Repository. They provide a structured approach to data access, including create, read, update and delete (CRUD) operations.
Developers implement repositories in one of two ways:
- Predefined repository interfaces, known as built-in supertypes, from which user-defined repositories are inherited. The root of this hierarchy is the DataRepository interface, which provides essential CRUD operations and can be extended by application-specific repositories.
- Repositories without built-in supertypes provide greater flexibility by allowing developers to fully control the operations exposed by a repository. This approach is ideal for applications where custom behavior or naming conventions are required.
Queries
[edit]Jakarta Data supports parameter-based automatic queries and annotated query methods[4]. The parameter-based querying approach uses methods like @Find and @Delete that generate queries based on the method's parameters. This offers a quick and convenient way to handle simple queries without needing custom query logic.
For more complex queries, Jakarta Data supports annotated query methods using @Query and the Jakarta Data Query Language (JDQL), a subset of the Jakarta Persistence Query Language (JPQL). This approach gives developers full control over query construction, enabling them to write sophisticated, domain-specific queries when needed.
Entity Classes
[edit]Entity classes[5] are the fundamental building blocks for constructing a data model. An entity represents a schema for data, which can range from a simple tuple of types in relational databases to more complex structures found in document or key-value stores. Entity classes define the structure and properties of the data being represented and are tied to a repository, which provides the methods for retrieving and storing instances of the entity in the data store.
An entity class contains fields or accessor methods corresponding to the properties of the entity. Each entity class is annotated to indicate that it represents a persistent data type, which is stored and retrieved from a data store. The data schema associated with an entity class defines the structure of the data it represents.
In cases where the data store requires an explicit schema, such as with relational databases, the schema is typically defined using SQL Data Definition Language (DDL) statements. For other types of data stores, like key-value or document-based stores, the schema may be implicit.
Pagination
[edit]Jakarta Data offers two types of pagination[6] to accommodate different use cases:
- Offset-based pagination: data is divided into pages of a fixed size, and applications retrieve records based on their position relative to the first record. This method is commonly used when dealing with static datasets where the data does not change frequently between page requests.
- Cursor-based pagination (also known as seek or keyset pagination): applications navigate through a dataset by using a unique key or combination of values relative to the current position. This method reduces the performance impact of scanning earlier pages of results and helps prevent data synchronization issues when data changes between page requests.
Jakarta Data Providers
[edit]Jakarta Data Providers are implementations of application-defined repositories that act as a mediator between domain logic and the underlying data sources[7]. These providers can either be integrated components within a Jakarta EE container or separate components that integrate with the container using standard or proprietary service provider interfaces (SPI).
Code Sample
[edit]@Repository public interface CarRepository extends BasicRepository<Car, Long> { List<Car> findByType(CarType type); Optional<Car> findByName(String name); }
See also
[edit]Reception
[edit]Jakarta Data 1.0 received attention from independent technology publications following its release as part of Jakarta EE 11 in June 2024.
An article in InfoQ described Jakarta Data as a significant step forward for simplifying persistence integration within Jakarta EE applications, highlighting its repository-based programming model and support for polyglot persistence.[8]
InfoWorld reported that the Eclipse Foundation's Jakarta EE 11 release included Jakarta Data as its only new specification, noting that it standardized the repository pattern for data access and aimed to offer familiar patterns for developers.[9]
ADTmag also covered the Jakarta EE 11 release, describing Jakarta Data as enabling flexible pagination strategies and annotated query support for CRUD operations.[10]
A separate InfoQ feature on persistence architectures compared Jakarta Data to similar frameworks such as Spring Data and Micronaut Data, noting its domain-centric design and flexibility in working with various database technologies.[11]
References
[edit]- ^ Jakarta Data Specification https://jakarta.ee/specifications/data/1.1/
- ^ Jakarta Data Goals https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_goals
- ^ Repositories in Jakarta Data https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_repositories_in_jakarta_data
- ^ Querying in Jakarta Data https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_querying_in_jakarta_data
- ^ Jakarta Data Entity Classes https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_entity_classes
- ^ Pagination in Jakarta Data https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_pagination_in_jakarta_data
- ^ Jakarta Data Providers https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0#_jakarta_data_providers
- ^ "Simplifying Persistence Integration with Jakarta EE Data". InfoQ. 2023-11-02. Retrieved 2025-07-08.
- ^ "Eclipse Foundation releases Jakarta EE 11". InfoWorld. 2025-07-01. Retrieved 2025-07-08.
- ^ "Jakarta EE 11 Platform Released with New Data Specification and Java 21 Support". ADTmag. 2025-06-30. Retrieved 2025-07-08.
- ^ "Architecting with Java Persistence: Patterns and Strategies". InfoQ. 2025-04-10. Retrieved 2025-07-08.
- in-depth (not just brief mentions about the subject or routine announcements)
- reliable
- secondary
- strictly independent of the subject
Make sure you add references that meet all four of these criteria before resubmitting. Learn about mistakes to avoid when addressing this issue. If no additional references exist, the subject is not suitable for Wikipedia.