{"id":13494820,"url":"https://github.com/hibernate/hibernate-orm","last_synced_at":"2026-10-18T23:09:57.634Z","repository":{"id":1099718,"uuid":"961036","full_name":"hibernate/hibernate-orm","owner":"hibernate","description":"Idiomatic persistence for Java and relational databases","archived":false,"fork":false,"pushed_at":"2026-10-12T14:55:24.000Z","size":385509,"stargazers_count":6470,"open_issues_count":173,"forks_count":3817,"subscribers_count":290,"default_branch":"main","last_synced_at":"2026-10-13T01:34:47.322Z","etag":null,"topics":["database","envers","hibernate","hibernate-orm","jakarta-persistence","jakartaee","java","jdbc","jpa","object-relational-mapper","object-relational-mapping","orm","persistence","persistence-framework","sql"],"latest_commit_sha":null,"homepage":"http://hibernate.org","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hibernate.png","metadata":{"files":{"readme":"README.adoc","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"accessibility":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":"dco.txt","cla":null,"disclosure":null},"funding":{"github":"commonhaus","open_collective":"hibernate","custom":["https://opencollective.com/commonhaus-foundation"]}},"created_at":"2010-10-04T16:15:52.000Z","updated_at":"2026-10-12T14:55:29.000Z","dependencies_parsed_at":"2026-09-28T03:42:31.176Z","dependency_job_id":"3c6eb0f1-4f01-4802-aaf6-f8b2775ac23a","html_url":"https://github.com/hibernate/hibernate-orm","commit_stats":{"total_commits":17049,"total_committers":696,"mean_commits":"24.495689655172413","dds":0.7951199483840694,"last_synced_commit":"e8f2f79236f5b05db449f49eab0d526b19df9ccd"},"previous_names":[],"tags_count":560,"template":false,"template_full_name":null,"purl":"pkg:github/hibernate/hibernate-orm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hibernate%2Fhibernate-orm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hibernate%2Fhibernate-orm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hibernate%2Fhibernate-orm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hibernate%2Fhibernate-orm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hibernate","download_url":"https://codeload.github.com/hibernate/hibernate-orm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hibernate%2Fhibernate-orm/sbom","scorecard":{"id":464003,"data":{"date":"2025-08-11","repo":{"name":"github.com/hibernate/hibernate-orm","commit":"dcc032db6e982b07f5ad3037104b229377bb6a04"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":7.2,"checks":[{"name":"Code-Review","score":2,"reason":"Found 4/18 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:149","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:255","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:35","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:26","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:27","Warn: no topLevel permission defined: .github/workflows/ci-report.yml:1","Info: found token with 'none' permissions: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/hibernate/.github/SECURITY.md:1","Info: Found linked content: github.com/hibernate/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/hibernate/.github/SECURITY.md:1","Info: Found text in security policy: github.com/hibernate/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during GetBranch(6.6): error during branchesHandler.query: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: local-build-plugins/gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: OSSFuzz integration found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: containerImage not pinned by hash: edb/edb13.Dockerfile:1: pin your Docker image by updating quay.io/enterprisedb/edb-postgres-advanced:13.20-3.5-postgis to quay.io/enterprisedb/edb-postgres-advanced:13.20-3.5-postgis@sha256:61fc3ce3994f80209ea7f4f68948ebcfff0f63889b8c6e32795b2082016ce610","Warn: containerImage not pinned by hash: edb/edb14.Dockerfile:1: pin your Docker image by updating quay.io/enterprisedb/edb-postgres-advanced:14.5-3.2-postgis to quay.io/enterprisedb/edb-postgres-advanced:14.5-3.2-postgis@sha256:e8585294a373444ff0c26886be88209d32a7f48b98e4b8ef075ad81bf4318e21","Warn: containerImage not pinned by hash: edb/edb15.Dockerfile:1: pin your Docker image by updating quay.io/enterprisedb/edb-postgres-advanced:15.4-3.3-postgis to quay.io/enterprisedb/edb-postgres-advanced:15.4-3.3-postgis@sha256:eb89d5b09f45171c0b56951f0dd2c1da5241077c66a1d0442c17a69e3a15c2d4","Warn: containerImage not pinned by hash: edb/edb16.Dockerfile:1: pin your Docker image by updating quay.io/enterprisedb/edb-postgres-advanced:16.1-3.4-postgis to quay.io/enterprisedb/edb-postgres-advanced:16.1-3.4-postgis@sha256:53b83f9c0008911a61e661044b8bc2f4e13faa0eba6886617a6c02fd2b4181cf","Warn: containerImage not pinned by hash: edb/edb17.Dockerfile:1: pin your Docker image by updating quay.io/enterprisedb/edb-postgres-advanced:17.4-3.5-postgis to quay.io/enterprisedb/edb-postgres-advanced:17.4-3.5-postgis@sha256:90683b0f8e39cbc054b3ef39376c6153006d4b0e6a1417f96efb2a04b20c8f31","Info:  26 out of  26 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 26 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T11:57:11.350Z","repository_id":1099718,"created_at":"2025-08-19T11:57:11.350Z","updated_at":"2025-08-19T11:57:11.350Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":343843146,"owners_count":38254694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-12T02:00:06.297Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","envers","hibernate","hibernate-orm","jakarta-persistence","jakartaee","java","jdbc","jpa","object-relational-mapper","object-relational-mapping","orm","persistence","persistence-framework","sql"],"created_at":"2024-07-31T19:01:28.564Z","updated_at":"2026-10-18T23:09:53.666Z","avatar_url":"https://github.com/hibernate.png","language":"Java","funding_links":["https://github.com/sponsors/commonhaus","https://opencollective.com/hibernate","https://opencollective.com/commonhaus-foundation"],"categories":["Java","数据库开发","II. Databases, search engines, big data and machine learning","Projects"],"sub_categories":["5. ORM"],"readme":"== Hibernate ORM\n\nimage:https://img.shields.io/maven-central/v/org.hibernate.orm/hibernate-core.svg?label=Maven%20Central\u0026style=for-the-badge[Maven Central,link=https://central.sonatype.com/search?namespace=org.hibernate.orm\u0026sort=name]\nimage:https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.hibernate.org%2Fjob%2Fhibernate-orm-pipeline%2Fjob%2Fmain%2F\u0026style=for-the-badge[Build Status,link=https://ci.hibernate.org/job/hibernate-orm-pipeline/job/main/]\nimage:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?style=for-the-badge\u0026logo=gradle[Develocity,link=https://develocity.commonhaus.dev/scans?search.rootProjectNames=Hibernate%20ORM]\nimage:https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/jvm-repo-rebuild/reproducible-central/master/content/org/hibernate/orm/hibernate-core/badge.json\u0026style=for-the-badge[Reproducible Builds,link=https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/hibernate/orm/hibernate-core/README.md]\nimage:https://testpilot.oracle.com/ords/testpilot/badges/github/hibernate/hibernate-orm[Oracle Test Pilot,link=https://testpilot.oracle.com/]\n\nHibernate ORM is a powerful object/relational mapping solution for Java, and makes it easy to develop persistence logic for applications, libraries, and frameworks.\n\nHibernate 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.\n\nSee https://hibernate.org/orm/[Hibernate.org] for more information.\n\n== Continuous Integration\n\nSee link:MAINTAINERS.md#ci[MAINTAINERS.md] for information about CI.\n\n== Building from sources\n\nThe build requires at least JDK 25, and produces Java 17 bytecode.\n\nHibernate uses https://gradle.org[Gradle] as its build tool. See the _Gradle Primer_ section below if you are new to\nGradle.\n\nContributors should read the link:CONTRIBUTING.md[Contributing Guide].\n\nSee the guides for setting up https://hibernate.org/community/contribute/intellij-idea/[IntelliJ] or\nhttps://hibernate.org/community/contribute/eclipse-ide/[Eclipse] as your development environment.\n\n== Gradle Primer\n\nThe Gradle build tool has amazing documentation.  2 in particular that are indispensable:\n\n* https://docs.gradle.org/current/userguide/userguide_single.html[Gradle User Guide] is a typical user guide in that\nit follows a topical approach to describing all of the capabilities of Gradle.\n* https://docs.gradle.org/current/dsl/index.html[Gradle DSL Guide] is unique and excellent in quickly\ngetting up to speed on certain aspects of Gradle.\n\nWe will cover the basics developers and contributors new to Gradle need to know to get productive quickly.\n\nNOTE: The project defines a https://docs.gradle.org/current/userguide/gradle_wrapper.html[Gradle Wrapper].\nThe rest of the section will assume execution through the wrapper.\n\n=== Executing Tasks\n\nGradle uses the concept of build tasks (equivalent to Ant targets or Maven phases/goals). You can get a list of\navailable tasks via \n\n----\ngradle tasks\n----\n\nTo execute a task across all modules, simply perform that task from the root directory. Gradle will visit each\nsub-project and execute that task if the sub-project defines it. To execute a task in a specific module you can\neither:\n\n. `cd` into that module directory and execute the task\n. name the \"task path\". For example, to run the tests for the _hibernate-core_ module from the root directory\nyou could say `gradle hibernate-core:test`\n\n=== Common tasks\n\nThe common tasks you might use in building Hibernate include:\n\n* _build_ - Assembles (jars) and tests this project\n* _compile_ - Performs all compilation tasks including staging resources from both main and test\n* _jar_ - Generates a jar archive with all the compiled classes\n* _test_ - Runs the tests\n* _publishToMavenLocal_ - Installs the project jar to your local maven cache (aka ~/.m2/repository). Note that Gradle\nnever uses this, but it can be useful for testing your build with other local Maven-based builds.\n* _clean_ - Cleans the build directory\n\n== Testing and databases\n\nTesting against a specific database can be achieved in 2 different ways:\n\n=== Using the \"Matrix Testing Plugin\" for Gradle.\n\nComing later…\n\n=== Using \"profiles\"\n\nThe Hibernate build defines several database testing \"profiles\" in `databases.gradle`. These\nprofiles can be activated by name using the `db` build property which can be passed either as\na JVM system prop (`-D`) or as a Gradle project property (`-P`). Examples below use the Gradle\nproject property approach.\n\n----\ngradle clean build -Pdb=pgsql\n----\n\nTo run a test from your IDE, you need to ensure the property expansions happen.\nUse the following command:\n\n----\ngradle clean compile -Pdb=pgsql\n----\n\n__NOTE: If you are running tests against a JDBC driver that is not available via Maven central be sure to\nadd these drivers to your local Maven repo cache (~/.m2/repository) or (better) add it to a personal Maven repo server__\n\n=== Running database-specific tests from the IDE using \"profiles\"\n\nYou can run any test on any particular database that is configured in a `databases.gradle` profile.\n\nAll you have to do is run the following command:\n\n----\n./gradlew setDataBase -Pdb=pgsql\n----\n\nor you can use the shortcut version: \n\n----\n./gradlew sDB -Pdb=pgsql\n----\n\nYou can do this from the module which you are interested in testing or from the `hibernate-orm` root folder.\n\nAfterward, just pick any test from the IDE and run it as usual. Hibernate will pick the database configuration from the `hibernate.properties`\nfile that was set up by the `setDataBase` Gradle task.\n\n=== Starting test databases locally as docker containers\n\nYou don't have to install all databases locally to be able to test against them in case you have docker available.\nThe script `docker_db.sh` allows you to start a pre-configured database which can be used for testing.\n\nAll you have to do is run the following command:\n\n----\n./docker_db.sh postgresql\n----\n\nomitting the argument will print a list of possible options.\n\nWhen the database is properly started, you can run tests with special profiles that are suffixed with `_ci`\ne.g. `pgsql_ci` for PostgreSQL. By using the system property `dbHost` you can configure the IP address of your docker host.\n\nThe command for running tests could look like the following:\n\n----\n./gradlew test -Pdb=pgsql_ci \"-DdbHost=192.168.99.100\"\n----\n\nThe following table illustrates a list of commands for various databases that can be tested locally.\n\n|===\n|Database |`docker_db.sh` |Gradle command\n\n|H2\n|-\n|`./gradlew test -Pdb=h2`\n\n|HSQLDB\n|-\n|`./gradlew test -Pdb=hsqldb`\n\n|Apache Derby\n|-\n|`./gradlew test -Pdb=derby`\n\n|MySQL\n|`./docker_db.sh mysql`\n|`./gradlew test -Pdb=mysql_ci`\n\n|MariaDB\n|`./docker_db.sh mariadb`\n|`./gradlew test -Pdb=mariadb_ci`\n\n|PostgreSQL\n|`./docker_db.sh postgresql`\n|`./gradlew test -Pdb=pgsql_ci`\n\n|EnterpriseDB\n|`./docker_db.sh edb`\n|`./gradlew test -Pdb=edb_ci`\n\n|Oracle\n|`./docker_db.sh oracle`\n|`./gradlew test -Pdb=oracle_ci`\n\n|DB2\n|`./docker_db.sh db2`\n|`./gradlew test -Pdb=db2_ci`\n\n|SQL Server\n|`./docker_db.sh mssql`\n|`./gradlew test -Pdb=mssql_ci`\n\n|Sybase ASE (jTDS)\n|`./docker_db.sh sybase`\n|`./gradlew test -Pdb=sybase_ci`\n\n|Sybase ASE (jConnect)\n|`./docker_db.sh sybase`\n|`./gradlew test -Pdb=sybase_jconn_ci`\n\n|SAP HANA\n|`./docker_db.sh hana`\n|`./gradlew test -Pdb=hana_ci`\n\n|CockroachDB\n|`./docker_db.sh cockroachdb`\n|`./gradlew test -Pdb=cockroachdb`\n\n|TiDB\n|`./docker_db.sh tidb`\n|`./gradlew test -Pdb=tidb`\n\n|Informix\n|`./docker_db.sh informix`\n|`./gradlew test -Pdb=informix`\n|===\n\nTo stop a container started by `docker`, use the command\n\n[source]\n----\ndocker stop $container_name\n----\n\nNOTE:: Substitute `podman` command for `docker` if using `podman`\n\nE.g., to stop the mariadb container\n\n[source]\n----\ndocker stop mariadb\n----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhibernate%2Fhibernate-orm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhibernate%2Fhibernate-orm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhibernate%2Fhibernate-orm/lists"}