hibernate-orm/release-announcement.adoc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

96 lines
4.3 KiB
Plaintext
Raw Normal View History

2024-08-01 10:08:43 -04:00
= Hibernate 7.0.0.Beta1
2024-03-20 13:27:48 -04:00
Steve Ebersole
2024-04-16 13:26:00 -04:00
:toc:
:toclevels: 2
2024-03-20 13:27:48 -04:00
:awestruct-tags: ["Hibernate ORM", "Releases"]
:awestruct-layout: blog-post
2024-04-16 13:26:00 -04:00
:family: 7.0
2024-03-20 13:27:48 -04:00
:docs-url: https://docs.jboss.org/hibernate/orm/{family}
:javadocs-url: {docs-url}/javadocs
:migration-guide-url: {docs-url}/migration-guide/migration-guide.html
:intro-guide-url: {docs-url}/introduction/html_single/Hibernate_Introduction.html
:user-guide-url: {docs-url}/userguide/html_single/Hibernate_User_Guide.html
:ql-guide-url: {docs-url}/querylanguage/html_single/Hibernate_Query_Language.html
2024-08-01 09:05:54 -04:00
The Hibernate ORM 7.0 Beta1 release has just been published. Here are some highlights...
2024-04-29 14:48:35 -04:00
2024-04-29 14:12:42 -04:00
2024-04-16 13:26:00 -04:00
[[jpa-32]]
== Jakarta Persistence 3.2
2024-04-29 14:12:42 -04:00
2024-04-16 13:26:00 -04:00
7.0 migrates to Jakarta Persistence 3.2 which can be fairly disruptive. See the link:{migration-guide-url}#jpa-32[Migration Guide] for details.
2024-04-29 14:12:42 -04:00
2024-05-03 13:49:31 -04:00
See https://in.relation.to/2024/04/01/jakarta-persistence-3/[this blog post] for a summary of the changes in 3.2
2024-04-29 14:12:42 -04:00
2024-08-01 09:05:54 -04:00
- https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/24/[TCK Results] with Java 17
- https://ci.hibernate.org/view/ORM/job/hibernate-orm-tck-3.2/job/wip%252F7.0/25/[TCK Results] with Java 21
2024-04-16 13:26:00 -04:00
[[java-17]]
== Java 17
2024-04-29 14:12:42 -04:00
2024-04-16 13:26:00 -04:00
Version 3.2 of Jakarta Persistence requires Java 17. Hibernate 7.0 therefore baselines on Java 17 whereas previous versions baseline on Java 11.
2024-04-29 14:12:42 -04:00
2024-08-01 09:05:54 -04:00
[[model-validations]]
== Domain Model Validations
7.0 does much more validation of an application's domain model and especially its mapping details, e.g.
* illegal combinations such as `@Basic` and `@ManyToOne` on the same attribute
* misplaced annotations such as an annotated getter method with FIELD access
* stricter following of JavaBean conventions
See the link:{migration-guide-url}#annotation-validation[Migration Guide] for details.
2024-04-29 14:12:42 -04:00
2024-04-16 13:26:00 -04:00
[[mapping-xml]]
== mapping.xsd
2024-04-29 14:12:42 -04:00
2024-04-16 13:26:00 -04:00
Hibernate 7.0 provides a new XSD that represents an "extension" of the Jakarta Persistence orm.xsd weaving in Hibernate-specific mapping features. The namespace for this extended mapping is `http://www.hibernate.org/xsd/orm/mapping`
2024-04-29 14:48:35 -04:00
2024-08-01 09:05:54 -04:00
For applications using Hibernate's legacy `hbm.xml` format, we provide a tool to help with the transformation.
See the link:{migration-guide-url}#hbm-transform[Migration Guide] for details.
2024-04-29 14:48:35 -04:00
2024-04-16 13:26:00 -04:00
[[hibernate-models]]
== Hibernate Models
2024-04-29 14:48:35 -04:00
2024-04-16 13:26:00 -04:00
7.0 migrates from https://github.com/hibernate/hibernate-commons-annotations/[Hibernate Commons Annotations] (HCANN) to the new https://github.com/hibernate/hibernate-models[Hibernate Models] project for low-level processing of an application domain model, reading annotations and weaving in XML mapping documents.
2024-04-29 14:48:35 -04:00
2024-04-16 13:26:00 -04:00
See the link:{migration-guide-url}#hibernate-models[Migration Guide] for details.
2024-04-29 14:48:35 -04:00
[[json-and-xml-functions]]
== JSON and XML functions
Support for most of the JSON and XML functions that the SQL standard specifies was added to HQL/Criteria.
The implementations retain the SQL standard semantics and will throw an error if emulation on a database is impossible.
New functions include:
* construction functions like `json_array()`, `json_object()`, `xmlelement()` and `xmlforest()`
* query functions like `json_value()`, `json_query()` and `xmlquery()`
* aggregation functions like `json_agg()`, `json_object_agg()` and `xmlagg()`
* manipulation functions like `json_set()`, `json_mergepatch()`
* any many more
NOTE: The functions are incubating/tech-preview and to use them in HQL,
it is necessary to enable the `hibernate.query.hql.json_functions_enabled` and `hibernate.query.hql.xml_functions_enabled` configuration settings.
[[set-returning-functions]]
== Set-returning functions
A set-returning function is a new type of function that can return rows and is exclusive to the `from` clause.
The concept is known in many different database SQL dialects and is sometimes referred to as table valued function or table function.
Custom set-returning functions can be registered via a `FunctionContributor`.
Out-of-the-box, some common set-returning functions are already supported or emulated
* `unnest()` - allows to turn an array into rows
* `generate_series()` - can be used to create a series of values as rows
* `json_table()` - turns a JSON document into rows
* `xmltable()` - turns an XML document into rows
2024-04-29 14:48:35 -04:00
2024-08-01 09:05:54 -04:00
[[cleanup]]
== Clean-up
2024-06-12 06:27:57 -04:00
2024-08-01 09:05:54 -04:00
A lot of deprecated contracts and behavior has been removed. See the link:{migration-guide-url}#cleanup[Migration Guide] for details.