From 1ee21de69b76e793a68043bde034a77f16556408 Mon Sep 17 00:00:00 2001 From: Brian Stansberry Date: Fri, 22 Nov 2024 17:47:18 -0600 Subject: [PATCH] [Issue_608] [Preview] Jakarta Data support in standard WildFly --- ...9776_Jakarta_Data_in_standard_WildFly.adoc | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 ee/WFLY-19776_Jakarta_Data_in_standard_WildFly.adoc diff --git a/ee/WFLY-19776_Jakarta_Data_in_standard_WildFly.adoc b/ee/WFLY-19776_Jakarta_Data_in_standard_WildFly.adoc new file mode 100644 index 00000000..e4464d0f --- /dev/null +++ b/ee/WFLY-19776_Jakarta_Data_in_standard_WildFly.adoc @@ -0,0 +1,141 @@ +--- +categories: + - ee +# Specify the stability level of the feature. +# Values can be one of: experimental preview community default +stability-level: preview +# Specify the Feature Development tracker issue for the feature. +# This must be an issue tracked in https://github.com/orgs/wildfly/projects/7/views/1. +# To create a Feature Development tracker issue, go to https://github.com/wildfly/wildfly-proposals/issues/new/choose +# and select 'Feature Development' +issue: https://github.com/wildfly/wildfly-proposals/issues/608 +# Provide the github ids of the members of the feature team, organized by role. +# Provide a single id for the 'assignee' role. Use a yaml list for the 'sme' and +# 'outside-perspective' roles, even if there is only one person in a role. +feature-team: + developer: bstansberry + sme: + - + outside-perspective: + - +# If this issue tracks the promotion to a higher stability level of a previously +# completed feature, provide the URL of the https://github.com/wildfly/wildfly-proposals/issues +# issue that was used to track the previous feature. +promotes: +# This should be blank during initial development of a feature. It may be used +# after the feature is completed if a subsequent issue is field to track promotion +# of this feature to a higher stability level +promoted-by: +--- += +:author: Brian Stansberry +:email: bstansbe@redhat.com +:toc: left +:icons: font +:idprefix: +:idseparator: - + + +== Overview + +In WildFly 34 we link:https://issues.redhat.com/browse/WFLY-19397[introduced] `preview` stability support for link:https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0[Jakarta Data] into WildFly Preview. Here we propose making it available in standard WildFly, also at `preview` stability. This will allow a larger part of our user base to use the technology. + +While Jakarta Data will first appear in Jakarta EE as part of EE 11, its API is not bound to the EE 11 variants of other EE APIs, and our implementation, Hibernate Data Repositories, is part of Hibernate ORM 6.6, which implements the EE 10 Jakarta Persistence 3.1 specification. I've discussed with the ORM team whether this should work in an EE 10 server and they confirmed that it will and are in favor of making it more widely available to WildFly users. + +=== User Stories + +I'm an application developer and I'd like to be less concerned with the mechanics of manipulating persistent data. I'd like to define my entities and then write an interface that describes the CRUD and data access operations I need. I code against that interface and let WildFly take care of generating the interface implementation that deals with the DB. + +I'm an application developer and am familiar with the Repository pattern from use of Spring Data. I'd like to use that pattern in WildFly in non-Spring applications. + +I'm an application developer who's used Deltaspike Data, which uses a repository pattern. But it doesn't support EE > 8, so I'm looking for a similar technology to run on the latest WildFly releases. + +== Issue Metadata + +=== Related Issues + +https://issues.redhat.com/browse/WFLY-19776 + +=== Affected Projects or Components + +https://github.com/wildfly/wildfly + +=== Other Interested Projects + +https://github.com/hal/console + +=== Relevant Installation Types + + +* Traditional standalone server (unzipped or provisioned by Galleon) +* Managed domain +* OpenShift Source-to-Image (S2I) +* Bootable jar + +== Requirements + +* The JBoss Modules modules required for the `jakarta-data` subsystem and the Jakarta Data API will be made available through `wildfly-ee` feature pack. +** These modules will be shared with the `wildfly-preview` feature pack. (This is the norm for `wildfly-ee` modules). +* The `jakarta-data` Galleon layer will be made available through the `wildfly-ee` feature pack. +** This layer will be shared with the `wildfly-preview` feature pack. (This is the norm for `wildfly-ee` layers). +* The Jakarta Data API artifact *must not* be part of the standard WildFly user boms. We limit the user boms to `community` stability artifacts. +* The Jakarta Data API artifact must contintue to be part of the WildFly Preview user boms. +* The wildfly-tck-runners Jakarta Data runner will be modified to test the `wildfly` feature pack by default, while allowing testing of `wildfly-preview`. +* The `jakarta-data` subsystem will be added to the OOTB *WildFly Preview* `standalone.xml`, `standalone-ha.xml`, `standalone-full.xml` and `standalone-full-ha.xml` files, along with their corresponding `domain.xml` profiles. (_NOTE: this is a 'nice-to-have' requirement and may be dropped before this feature is merged. If so this requirement will be removed._) + + +=== Non-Requirements + +* Inclusion of the `jakarta-data` subsystem in any OOTB standard WildFly configuration file. +* Any quickstart. +* Testing beyond passing the Jakarta Data TCK. + +=== Future Work + +* Promotion of Jakarta Data to `community` stability +** Addition of a quickstart. +** Addition of basic integration smoke testing. +* Any HAL support not provided as part of this work. + +== Backwards Compatibility + + +=== Default Configuration + +No incompatible changes; adds new functionality. + +=== Importing Existing Configuration + +No incompatible changes. + +=== Deployments + +No incompatible changes. + +=== Interoperability + +No impact on interoperability. + +== Admin Clients + +No impact on the CLI. Low level operations related to this subsystem will work the same as any others. No existing high level commands will be impacted. No new high level commands are needed. + +HAL impact is unclear. If HAL automatically picks up and displays new extensions, no work is needed. If HAL does not intend to handle extensions that only exist at `preview` stability, no work is needed. Otherwise, work on HAL may be desirable, but optional. (Note that the extension has no attributes and will not be in any OOTB config, so its significance to a HAL user is low.) + +== Security Considerations + +Under the covers this is just another way of interacting with a database via Hibernate ORM, so it doesn't introduce anything fundamentally new. + +[[test_plan]] +== Test Plan + +The plan is to test this by executing and passing the Jakarta Data 1.0 TCK. + +== Community Documentation + +* Addition of basic content in the Admin Guide 'Subsystem Configurations' section, consistent with other subsystems that expose no configuration attributes. +* Addition of a section in the Developer Guide, providing content along the lines of the link:https://www.wildfly.org/news/2024/10/10/jakarta-data/[Introducing Jakarta Data in WildFly Preview] blog post. + +== Release Note Content + +Application developers can now deploy applications that use link:https://jakarta.ee/specifications/data/1.0/jakarta-data-1.0[Jakarta Data] in standard WildFly. This feature is provided at `preview` stability.