Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: hibernate/hibernate-orm
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6.2.36
Choose a base ref
...
head repository: hibernate/hibernate-orm
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6.3.0
Choose a head ref
Loading
Showing 3,819 changed files with 198,483 additions and 62,175 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -14,3 +14,7 @@ updates:
- gradle-plugin-portal
schedule:
interval: "weekly"
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: daily
1 change: 1 addition & 0 deletions .github/hibernate-github-bot.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
jira:
projectKey: "HHH"
insertLinksInPullRequests: true
8 changes: 4 additions & 4 deletions .github/workflows/contributor-build.yml
Original file line number Diff line number Diff line change
@@ -51,7 +51,7 @@ jobs:
# Running with HANA requires at least 8GB memory just for the database, which we don't have on GH Actions runners
# - rdbms: hana
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
persist-credentials: false
- name: Reclaim Disk Space
@@ -61,7 +61,7 @@ jobs:
RDBMS: ${{ matrix.rdbms }}
run: ci/database-start.sh
- name: Set up Java 11
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '11'
@@ -70,7 +70,7 @@ jobs:
run: echo "yearmonth=$(/bin/date -u "+%Y-%m")" >> $GITHUB_OUTPUT
shell: bash
- name: Cache Maven local repository
uses: actions/cache@v2
uses: actions/cache@v3
id: cache-maven
with:
path: |
@@ -85,7 +85,7 @@ jobs:
run: ./ci/build-github.sh
shell: bash
- name: Upload test reports (if Gradle failed)
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
if: failure()
with:
name: test-reports-java11-${{ matrix.rdbms }}
45 changes: 18 additions & 27 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -41,15 +41,14 @@ stage('Configure') {
// new BuildEnvironment( dbName: 'hana_cloud', dbLockableResource: 'hana-cloud', dbLockResourceAsHost: true ),
new BuildEnvironment( node: 's390x' ),
new BuildEnvironment( dbName: 'tidb', node: 'tidb',
additionalOptions: '-DdbHost=localhost:4000',
notificationRecipients: 'tidb_hibernate@pingcap.com' ),
new BuildEnvironment( testJdkVersion: '17' ),
// We want to enable preview features when testing newer builds of OpenJDK:
// even if we don't use these features, just enabling them can cause side effects
// and it's useful to test that.
new BuildEnvironment( testJdkVersion: '19', testJdkLauncherArgs: '--enable-preview' ),
new BuildEnvironment( testJdkVersion: '20', testJdkLauncherArgs: '--enable-preview' ),
new BuildEnvironment( testJdkVersion: '21', testJdkLauncherArgs: '--enable-preview' )
new BuildEnvironment( testJdkVersion: '21', testJdkLauncherArgs: '--enable-preview' ),
new BuildEnvironment( testJdkVersion: '22', testJdkLauncherArgs: '--enable-preview' )
];

if ( env.CHANGE_ID ) {
@@ -59,6 +58,9 @@ stage('Configure') {
if ( pullRequest.labels.contains( 'hana' ) ) {
this.environments.add( new BuildEnvironment( dbName: 'hana_cloud', dbLockableResource: 'hana-cloud', dbLockResourceAsHost: true ) )
}
if ( pullRequest.labels.contains( 'sybase' ) ) {
this.environments.add( new BuildEnvironment( dbName: 'sybase_jconn' ) )
}
}

helper.configure {
@@ -124,18 +126,10 @@ stage('Build') {
try {
stage('Start database') {
switch (buildEnv.dbName) {
case "h2_1_4":
state[buildEnv.tag]['additionalOptions'] = state[buildEnv.tag]['additionalOptions'] +
" -Pgradle.libs.versions.h2=1.4.197 -Pgradle.libs.versions.h2gis=1.5.0"
break;
case "hsqldb_2_6":
state[buildEnv.tag]['additionalOptions'] = state[buildEnv.tag]['additionalOptions'] +
" -Pgradle.libs.versions.hsqldb=2.6.1"
break;
case "derby_10_14":
state[buildEnv.tag]['additionalOptions'] = state[buildEnv.tag]['additionalOptions'] +
" -Pgradle.libs.versions.derby=10.14.2.0"
break;
case "mysql":
docker.withRegistry('https://index.docker.io/v1/', 'hibernateci.hub.docker.com') {
docker.image('mysql:8.0.31').pull()
@@ -172,24 +166,11 @@ stage('Build') {
sh "./docker_db.sh postgresql"
state[buildEnv.tag]['containerName'] = "postgres"
break;
case "postgresql_10":
// use the postgis image to enable the PGSQL GIS (spatial) extension
docker.withRegistry('https://index.docker.io/v1/', 'hibernateci.hub.docker.com') {
docker.image('postgis/postgis:10-2.5').pull()
}
sh "./docker_db.sh postgresql_10"
state[buildEnv.tag]['containerName'] = "postgres"
break;
case "edb":
docker.image('quay.io/enterprisedb/edb-postgres-advanced:14.5-3.2-postgis').pull()
docker.image('quay.io/enterprisedb/edb-postgres-advanced:15.2-3.3-postgis').pull()
sh "./docker_db.sh edb"
state[buildEnv.tag]['containerName'] = "edb"
break;
case "edb_10":
docker.image('quay.io/enterprisedb/edb-postgres-advanced:10.22').pull()
sh "./docker_db.sh edb_10"
state[buildEnv.tag]['containerName'] = "edb"
break;
case "oracle":
docker.withRegistry('https://index.docker.io/v1/', 'hibernateci.hub.docker.com') {
docker.image('gvenzl/oracle-xe:21.3.0-full').pull()
@@ -235,6 +216,13 @@ stage('Build') {
sh "./docker_db.sh sybase"
state[buildEnv.tag]['containerName'] = "sybase"
break;
case "sybase_jconn":
docker.withRegistry('https://index.docker.io/v1/', 'hibernateci.hub.docker.com') {
docker.image('nguoianphu/docker-sybase').pull()
}
sh "./docker_db.sh sybase"
state[buildEnv.tag]['containerName'] = "sybase"
break;
case "cockroachdb":
docker.withRegistry('https://index.docker.io/v1/', 'hibernateci.hub.docker.com') {
docker.image('cockroachdb/cockroach:v22.2.2').pull()
@@ -256,8 +244,11 @@ stage('Build') {
withEnv(["RDBMS=${buildEnv.dbName}"]) {
try {
if (buildEnv.dbLockableResource == null) {
timeout( [time: buildEnv.longRunning ? 480 : 120, unit: 'MINUTES'] ) {
sh cmd
withCredentials([file(credentialsId: 'sybase-jconnect-driver', variable: 'jconnect_driver')]) {
sh 'cp -f $jconnect_driver ./drivers/jconn4.jar'
timeout( [time: buildEnv.longRunning ? 480 : 120, unit: 'MINUTES'] ) {
sh cmd
}
}
}
else {
35 changes: 29 additions & 6 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
Hibernate ORM is a library providing Object/Relational Mapping (ORM) support
to applications, libraries, and frameworks.
Hibernate ORM is a powerful object/relational mapping solution for Java, and makes it easy to develop persistence logic for applications, libraries, and frameworks.

It also provides an implementation of the JPA specification, which is the standard Java specification for ORM.
Hibernate implements JPA, the standard API for object/relational persistence in Java, but also offers an extensive set of features and APIs which go beyond the specification.

This is the repository of its source code; see https://hibernate.org/orm/[Hibernate.org] for additional information.
See https://hibernate.org/orm/[Hibernate.org] for more information.

image:https://ci.hibernate.org/job/hibernate-orm-pipeline/job/main/badge/icon[Build Status,link=https://ci.hibernate.org/job/hibernate-orm-pipeline/job/main/]
image:https://img.shields.io/badge/Revved%20up%20by-Gradle%20Enterprise-06A0CE?logo=Gradle&labelColor=02303A[link=https://ge.hibernate.org/scans]
@@ -18,7 +17,7 @@ for its CI needs. See

== Building from sources

The build requires at least Java 11 JDK.
The build requires at least Java 11 and at most Java 17.

Hibernate uses https://gradle.org[Gradle] as its build tool. See the _Gradle Primer_ section below if you are new to
Gradle.
@@ -188,15 +187,39 @@ The following table illustrates a list of commands for various databases that ca
|`./docker_db.sh mssql`
|`./gradlew test -Pdb=mssql_ci`

|Sybase ASE
|Sybase ASE (jTDS)
|`./docker_db.sh sybase`
|`./gradlew test -Pdb=sybase_ci`

|Sybase ASE (jConnect)
|`./docker_db.sh sybase`
|`./gradlew test -Pdb=sybase_jconn_ci`

|SAP HANA
|`./docker_db.sh hana`
|`./gradlew test -Pdb=hana_ci`

|CockroachDB
|`./docker_db.sh cockroachdb`
|`./gradlew test -Pdb=cockroachdb`

|TiDB
|`./docker_db.sh tidb`
|`./gradlew test -Pdb=tidb`
|===

To stop a container started by `docker`, use the command

[source]
----
docker stop $container_name
----

NOTE:: Substitute `podman` command for `docker` if using `podman`

E.g., to stop the mariadb container

[source]
----
docker stop mariadb
----
25 changes: 25 additions & 0 deletions branching.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
= ORM Branching

Describes the paradigm used for branching within the ORM project

[[branches]]
== The Branches

* `main` is where we do "latest stable" development. Which specific release family this targets is dependent upon the "critical mass" discussion in <<process>>.
* "Dedicated release branches" (`5.6`, `6.0`, `6.1`, `6.2`, ...) represent previous, no longer supported releases. Branched for posterity.
* PR branches for new features, improvements, disruptive bugfixes, etc target main
* PR branches for performance improvements, security fixes and bugfixes target the affected minor branches (which could be main for a short period of time)

[[process]]
== THe Process

Process (using 6.3 -> 6.4 as an example):

* As mentioned, all new features, improvements, disruptive bugfixes, etc. are developed on topic branches (PR) against main. Based on sprint planning, these will be given a priority and target a particular major/minor release.
* Once we have critical mass for topic branches targeting 6.4:
* `main` will be branched as `6.3` and a 6.3.x release will be done.
* The finished topic branches will be integrated into main and a 6.4.0 Alpha (or Beta or CR)[1] release will be done.
* A bot will cherry-pick changes made to the latest "dedicated release branch" (here, 6.3) and create a PR against main (on the assumption that these changes might be needed there as well). TBD if we want to auto-apply these PRs on successful build.
* PRs against older "dedicated release branches", will first be rebased to the latest stable branch and applied. We'll decide between 6.3 and main based mostly on ; if 6.3, the bot will pick it up.

[1] Historically I am not a huge fan of a full Alpha/Beta/CR cycle for minor releases, usually just doing CRs. But open to convincing otherwise.
7 changes: 4 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -25,6 +25,9 @@ plugins {
id 'org.hibernate.orm.database-service' apply false
id 'biz.aQute.bnd' version '6.3.1' apply false

id 'org.checkerframework' version '0.6.25'
id 'org.hibernate.orm.build.jdks'

id 'io.github.gradle-nexus.publish-plugin' version '1.1.0'

id 'idea'
@@ -44,9 +47,7 @@ task release {
"themselves if they have any release-related activities to perform"

doFirst {
def javaVersionsInUse = [gradle.ext.javaVersions.main.compiler, gradle.ext.javaVersions.main.release,
gradle.ext.javaVersions.test.compiler, gradle.ext.javaVersions.test.release,
gradle.ext.javaVersions.test.launcher].toSet()
def javaVersionsInUse = jdkVersions.allVersions
if ( javaVersionsInUse != [JavaLanguageVersion.of( 11 )].toSet() ) {
throw new IllegalStateException( "Please use JDK 11 to perform the release. Currently using: ${javaVersionsInUse}" )
}
Loading