SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
What’s new in Hibernate 6.1?
by Christian Beikov
Who am I?
Christian Beikov
Long time Hibernate community contributor
Full time Hibernate developer at Red Hat since 2020
Founder of Blazebit and creator of Blaze-Persistence
Living in Vienna/AT and Bonn/DE
Like to play tennis and go running
Previously on “What’s next?”...
Subqueries in the from clause
Common table expressions
Lateral joins
Insert-or-Update a.k.a. Upsert
Table functions
SQL structs
SQL arrays
Previously on “What’s next?”...
Subqueries in the from clause (6.1)
Common table expressions
Lateral joins (6.1)
Insert-or-Update a.k.a. Upsert
Table functions
SQL structs
SQL arrays (6.1)
Previously on “What’s next?”...
Subqueries in the from clause (6.1)
Common table expressions (planned for 6.2)
Lateral joins (6.1)
Insert-or-Update a.k.a. Upsert (planned for 6.2)
Table functions
SQL structs
SQL arrays (6.1)
Demo time
https://github.com/beikov/presentation-hibernate-6
What’s next?
Common table expressions (planned for 6.2)
Insert-or-Update a.k.a. Upsert (planned for 6.2)
Table functions
SQL structs
SQL enums
JSON, XML and array functions
Joins in DML (update, delete)
Q & A
Extra slides
Motivation for Hibernate 6.0
Performance improvements
● Read by name is slow in JDBC ResultSet
● JPA Criteria implementation required string building and parsing
Design improvements
● Query AST was Antlr2 based and hard to maintain/extend
● Dialect specific SQL translation was hard
● Runtime model was centered around Type
● Cleanup of deprecated APIs and SPIs
● More type safety and generics improvements
Read by name
Changing to position based ResultSetreading has big impact
● Throughput testing showed it is faster
● Many APIs and SPIs needed to adapt e.g. Type
● Allows omitting select aliases and produce smaller SQL
Took the opportunity to implement select item deduplication
● Occasionally requested enhancement
● Reduce amount of fetched data
Read by name
Hibernate 5.x
select
entity0_.id as id1_1_0_,
entity0_.name as name2_1_0_,
entity0_.id as onetoone3_1_0_
from
Entity entity0_
where
entity0_.id=?
Hibernate 6.0
select
e1_0.id,
e1_0.name
from
Entity e1_0
where
e1_0.id=?
JPA Criteria
5.x handles JPA Criteria on top of HQL
● CriteriaQueryis translated to HQL and then parsed
● But uses a special CriteriaLoaderwith custom fetch handling
6.0 introduces the semantic query model (SQM) as AST model
● SQM AST implements JPA Criteria API
● HQL is also parsed to SQM AST
● Further boost with hibernate.criteria.copy_treedisabled
● Smart handling of plain values parameter vs. literal
Query improvements
Semantic query model (SQM) as unified AST for JPA Criteria and HQL
Easier maintenance/extensibility thanks to update to ANTLR4
Functions received lots of new features
● FunctionReturnTypeResolverwith full AST access e.g. extract(second)
● FunctionArgumentTypeResolverinference through context e.g. coalesce(..)
● ArgumentsValidatorfor early type validation
● Can generate special SQM- and SQL-AST for e.g. emulations
Query improvements
Set operation support (from ANSI SQL-92)
select e from Entity e where e.type = 1
union
select e from Entity e where e.type = 2
intersect
select e from Entity e where e.type = 3
except
select e from Entity e where e.deleted
Query improvements
Set operation support in JPA Criteria
HibernateCriteriaBuilder cb = session.getCriteriaBuilder();
var q1 = cb.createQuery( Entity.class );
var q2 = cb.createQuery( Entity.class );
// Apply restrictions to q1 and q2 ...
TypedQuery<Entity> q = session.createQuery( cb.union( q1, q2 ) );
Query improvements
LIMIT, OFFSETand FETCHclause support (ANSI SQL 2003)
select p.name, p.score
from Player p
order by p.score desc
fetch first 3 rows with ties
name score
Thor 10
Hulk 10
Tony 7
Vision 7
Query improvements
LIMIT, OFFSETand FETCHclause support
HibernateCriteriaBuilder cb = session.getCriteriaBuilder();
JpaCriteriaQuery<Entity> q1 = cb.createQuery( Entity.class );
JpaRoot<Entity> root = q1.from( Entity.class );
q1.fetch( 3, FetchClauseType.ROWS_WITH_TIES );
TypedQuery<Entity> q = session.createQuery( q1 );
Query improvements
Support for OVERclause a.k.a. window functions (ANSI SQL 2003)
select
format(c.ts as ‘yyyy’’Q’’Q’),
sum(c.amount),
sum(c.amount) - lag(sum(c.amount))
over (order by format(c.ts as ‘yyyy’’Q’’Q’)) as delta
from Costs c
group by format(c.ts as ‘yyyy’’Q’’Q’)
period amount delta
2021Q4 100 NULL
2022Q1 120 20
Query improvements
Ordered set-aggregate functions i.e. LISTAGG(ANSI SQL 2016)
select pr.id, listagg(p.name, ‘, ’) within group (order by p.name)
from Project pr join pr.participants p
group by pr.id
order by pr.id
id participants
1 Bruce Banner, Natasha Romanoff, Tony Stark
.. ..
Query improvements
Summarization support i.e. ROLLUP(ANSI SQL-99)
select
s.state,
s.city,
sum(s.price * s.quantity)
from Sales s
group by rollup (s.state, s.city)
order by s.state, s.city nulls last
state city amount
CA SF 100
CA SJ 120
CA NULL 220
Query improvements
FILTER clause support (ANSI SQL 2016)
select
count(*) filter (where s.price * s.quantity < 10) as small_sales,
count(*) filter (where s.price * s.quantity >= 10) as big_sales
from Sales s
small_sales big_sales
10 20
Query improvements
ILIKEpredicate support
select e
from Entity e
where e.name ilike ‘%tony%’
Fallback to lower(e.name) like lower(‘%tony’)
Query improvements
Tuple syntax support with great emulation
Align expressions/predicates i.e. ... where my_function(value > 1) and ...
Temporal arithmetic support i.e. ts1 - ts2returns Duration
Duration extraction support with BY operator i.e. (ts1 - ts2) by hour
Duration literal support i.e. ts1 + 1 day
Support for DISTINCT FROMpredicate
etc.
Query improvements
Session#createSelectionQueryfor select only queries
● No executeUpdatemethod
Session#createMutationQueryfor mutation only queries
● No getResultList/getSingleResultetc. methods
Early validations and communication of intent
Dialect specific SQL
SQL-AST as intermediate representation of (modern) SQL as tree
5.x has a single HQL to SQL string translator with lots of if-branches per dialect-support
Dialects in 6.0 provide custom translators for handling emulations
SQL-AST enables sophisticated transformations/emulations efficiently
● Introduction of dummy FROMelements (Sybase)
● Emulate aggregate functions through window functions (MySQL, SQL Server, …)
Runtime model
Model in 5.x was centered around org.hibernate.type.Type
Created OO runtime model since switch to read by position required changes anyway
Moved logic to runtime model defined through capabilities i.e. Fetchable
Removed multi-column basic mappings in favor of custom embeddable mappings
Split logic from BasicTypeinto JdbcType/JavaTypeand removed most implementations
Introduce BasicTypeReferencein StandardBasicTypesfor late resolving
Support for new SQL types through Dialect contribution
● JSONtype for storing any type as JSONB/JSON/CLOB/VARCHAR
● UUIDtype for java.util.UUID
● INTERVAL_SECONDtype for java.time.Duration
● INETtype for java.net.InetAddress
Replace @TypeDefwith type safe variants i.e. @JavaTypeRegistration
Replace @Typewith type safe variants i.e. @JavaType
Mapping improvements
Mapping improvements
CompositeUserTypebridges gap between custom types and embeddables
Embeddable mapper class for defining mapping structure
Full control on construction and deconstruction of custom type
● Support for library types i.e. MonetaryAmount
● Repurpose existing types i.e. OffsetDateTime
Out of the box support for Java records in discussion
Other changes
Switch to Jakarta Persistence
Remove deprecated stuff i.e. legacy Criteria API
Add type variables to APIs/SPIs where possible
Dialectwas majorly updated
Renaming of JavaTypeDescriptorand SqlTypeDescriptor
See https://github.com/hibernate/hibernate-orm/blob/6.0/migration-guide.adoc

Contenu connexe

Tendances (20)

scan0001
scan0001scan0001
scan0001
 
SSC Marksheet
SSC MarksheetSSC Marksheet
SSC Marksheet
 
Transcript
TranscriptTranscript
Transcript
 
Penn Foster Transcript 2 of 2.PDF
Penn Foster Transcript 2 of 2.PDFPenn Foster Transcript 2 of 2.PDF
Penn Foster Transcript 2 of 2.PDF
 
B.SC TRANSCRIPT CERTIFICATE (THE FUTURE UNIVERSITY)
B.SC TRANSCRIPT CERTIFICATE (THE FUTURE UNIVERSITY)B.SC TRANSCRIPT CERTIFICATE (THE FUTURE UNIVERSITY)
B.SC TRANSCRIPT CERTIFICATE (THE FUTURE UNIVERSITY)
 
Computer Application Certificate
Computer Application CertificateComputer Application Certificate
Computer Application Certificate
 
MATRIC - CERTIFICATE
MATRIC - CERTIFICATEMATRIC - CERTIFICATE
MATRIC - CERTIFICATE
 
Penn Foster Transcript 1 of 2.PDF
Penn Foster Transcript 1 of 2.PDFPenn Foster Transcript 1 of 2.PDF
Penn Foster Transcript 1 of 2.PDF
 
Bcom Degree- Front Side
Bcom Degree- Front SideBcom Degree- Front Side
Bcom Degree- Front Side
 
BTC Daily Report January 5 AR.pdf
BTC Daily Report January 5 AR.pdfBTC Daily Report January 5 AR.pdf
BTC Daily Report January 5 AR.pdf
 
EIT Certificate
EIT CertificateEIT Certificate
EIT Certificate
 
Hawke 501/453 Universal Cable Gland A M20
Hawke 501/453 Universal Cable Gland A M20Hawke 501/453 Universal Cable Gland A M20
Hawke 501/453 Universal Cable Gland A M20
 
SSC Certificate
SSC CertificateSSC Certificate
SSC Certificate
 
MATRIC CERTIFICATE
MATRIC CERTIFICATEMATRIC CERTIFICATE
MATRIC CERTIFICATE
 
Certificates - 1
Certificates - 1Certificates - 1
Certificates - 1
 
Matric 2006
Matric 2006Matric 2006
Matric 2006
 
Kwanai Maiseni -NUST Academic Transcript
Kwanai Maiseni -NUST Academic TranscriptKwanai Maiseni -NUST Academic Transcript
Kwanai Maiseni -NUST Academic Transcript
 
printfiles
printfilesprintfiles
printfiles
 
UWA degree confirmation letter
UWA degree confirmation letterUWA degree confirmation letter
UWA degree confirmation letter
 
I. Section 2. Frequency control in power system
I. Section 2. Frequency control in power system I. Section 2. Frequency control in power system
I. Section 2. Frequency control in power system
 

Similaire à Hibernate 6.1 - What's new.pdf

Hibernate 6.0 - What's new.pdf
Hibernate 6.0 - What's new.pdfHibernate 6.0 - What's new.pdf
Hibernate 6.0 - What's new.pdfChristian Beikov
 
MySQL 5.7 - What's new and How to upgrade
MySQL 5.7 - What's new and How to upgradeMySQL 5.7 - What's new and How to upgrade
MySQL 5.7 - What's new and How to upgradeAbel Flórez
 
MySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document StoreMySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document StoreAbel Flórez
 
MySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMark Swarbrick
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Ted Wennmark
 
Deep dive into Hibernate ORM 6.4 features
Deep dive into Hibernate ORM 6.4 featuresDeep dive into Hibernate ORM 6.4 features
Deep dive into Hibernate ORM 6.4 featuresChristian Beikov
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platformLorraine JUG
 
qb for the rest of us - sam knowlton
qb for the rest of us - sam knowltonqb for the rest of us - sam knowlton
qb for the rest of us - sam knowltonOrtus Solutions, Corp
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffJAX London
 
Hypertable
HypertableHypertable
Hypertablebetaisao
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbczznate
 
SQL Server 2008 Integration Services
SQL Server 2008 Integration ServicesSQL Server 2008 Integration Services
SQL Server 2008 Integration ServicesEduardo Castro
 
What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4Pavan Deolasee
 
Fast federated SQL with Apache Calcite
Fast federated SQL with Apache CalciteFast federated SQL with Apache Calcite
Fast federated SQL with Apache CalciteChris Baynes
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architectureAjeet Singh
 
State of entity framework
State of entity frameworkState of entity framework
State of entity frameworkDavid Paquette
 
The latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveThe latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveTesora
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disquszeeg
 

Similaire à Hibernate 6.1 - What's new.pdf (20)

Hibernate 6.0 - What's new.pdf
Hibernate 6.0 - What's new.pdfHibernate 6.0 - What's new.pdf
Hibernate 6.0 - What's new.pdf
 
MySQL 5.7 - What's new and How to upgrade
MySQL 5.7 - What's new and How to upgradeMySQL 5.7 - What's new and How to upgrade
MySQL 5.7 - What's new and How to upgrade
 
MySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document StoreMySQL 5.7 - What's new, How to upgrade and Document Store
MySQL 5.7 - What's new, How to upgrade and Document Store
 
MySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats newMySQL Tech Tour 2015 - 5.7 Whats new
MySQL Tech Tour 2015 - 5.7 Whats new
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
 
Deep dive into Hibernate ORM 6.4 features
Deep dive into Hibernate ORM 6.4 featuresDeep dive into Hibernate ORM 6.4 features
Deep dive into Hibernate ORM 6.4 features
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platform
 
qb for the rest of us - sam knowlton
qb for the rest of us - sam knowltonqb for the rest of us - sam knowlton
qb for the rest of us - sam knowlton
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Hypertable Nosql
Hypertable NosqlHypertable Nosql
Hypertable Nosql
 
Hypertable
HypertableHypertable
Hypertable
 
Sqlapi0.1
Sqlapi0.1Sqlapi0.1
Sqlapi0.1
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbc
 
SQL Server 2008 Integration Services
SQL Server 2008 Integration ServicesSQL Server 2008 Integration Services
SQL Server 2008 Integration Services
 
What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4What's New In PostgreSQL 9.4
What's New In PostgreSQL 9.4
 
Fast federated SQL with Apache Calcite
Fast federated SQL with Apache CalciteFast federated SQL with Apache Calcite
Fast federated SQL with Apache Calcite
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architecture
 
State of entity framework
State of entity frameworkState of entity framework
State of entity framework
 
The latest with MySql on OpenStack Trove
The latest with MySql on OpenStack TroveThe latest with MySql on OpenStack Trove
The latest with MySql on OpenStack Trove
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
 

Dernier

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Dernier (20)

Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Hibernate 6.1 - What's new.pdf

  • 1. What’s new in Hibernate 6.1? by Christian Beikov
  • 2. Who am I? Christian Beikov Long time Hibernate community contributor Full time Hibernate developer at Red Hat since 2020 Founder of Blazebit and creator of Blaze-Persistence Living in Vienna/AT and Bonn/DE Like to play tennis and go running
  • 3. Previously on “What’s next?”... Subqueries in the from clause Common table expressions Lateral joins Insert-or-Update a.k.a. Upsert Table functions SQL structs SQL arrays
  • 4. Previously on “What’s next?”... Subqueries in the from clause (6.1) Common table expressions Lateral joins (6.1) Insert-or-Update a.k.a. Upsert Table functions SQL structs SQL arrays (6.1)
  • 5. Previously on “What’s next?”... Subqueries in the from clause (6.1) Common table expressions (planned for 6.2) Lateral joins (6.1) Insert-or-Update a.k.a. Upsert (planned for 6.2) Table functions SQL structs SQL arrays (6.1)
  • 7. What’s next? Common table expressions (planned for 6.2) Insert-or-Update a.k.a. Upsert (planned for 6.2) Table functions SQL structs SQL enums JSON, XML and array functions Joins in DML (update, delete)
  • 10. Motivation for Hibernate 6.0 Performance improvements ● Read by name is slow in JDBC ResultSet ● JPA Criteria implementation required string building and parsing Design improvements ● Query AST was Antlr2 based and hard to maintain/extend ● Dialect specific SQL translation was hard ● Runtime model was centered around Type ● Cleanup of deprecated APIs and SPIs ● More type safety and generics improvements
  • 11. Read by name Changing to position based ResultSetreading has big impact ● Throughput testing showed it is faster ● Many APIs and SPIs needed to adapt e.g. Type ● Allows omitting select aliases and produce smaller SQL Took the opportunity to implement select item deduplication ● Occasionally requested enhancement ● Reduce amount of fetched data
  • 12. Read by name Hibernate 5.x select entity0_.id as id1_1_0_, entity0_.name as name2_1_0_, entity0_.id as onetoone3_1_0_ from Entity entity0_ where entity0_.id=? Hibernate 6.0 select e1_0.id, e1_0.name from Entity e1_0 where e1_0.id=?
  • 13. JPA Criteria 5.x handles JPA Criteria on top of HQL ● CriteriaQueryis translated to HQL and then parsed ● But uses a special CriteriaLoaderwith custom fetch handling 6.0 introduces the semantic query model (SQM) as AST model ● SQM AST implements JPA Criteria API ● HQL is also parsed to SQM AST ● Further boost with hibernate.criteria.copy_treedisabled ● Smart handling of plain values parameter vs. literal
  • 14. Query improvements Semantic query model (SQM) as unified AST for JPA Criteria and HQL Easier maintenance/extensibility thanks to update to ANTLR4 Functions received lots of new features ● FunctionReturnTypeResolverwith full AST access e.g. extract(second) ● FunctionArgumentTypeResolverinference through context e.g. coalesce(..) ● ArgumentsValidatorfor early type validation ● Can generate special SQM- and SQL-AST for e.g. emulations
  • 15. Query improvements Set operation support (from ANSI SQL-92) select e from Entity e where e.type = 1 union select e from Entity e where e.type = 2 intersect select e from Entity e where e.type = 3 except select e from Entity e where e.deleted
  • 16. Query improvements Set operation support in JPA Criteria HibernateCriteriaBuilder cb = session.getCriteriaBuilder(); var q1 = cb.createQuery( Entity.class ); var q2 = cb.createQuery( Entity.class ); // Apply restrictions to q1 and q2 ... TypedQuery<Entity> q = session.createQuery( cb.union( q1, q2 ) );
  • 17. Query improvements LIMIT, OFFSETand FETCHclause support (ANSI SQL 2003) select p.name, p.score from Player p order by p.score desc fetch first 3 rows with ties name score Thor 10 Hulk 10 Tony 7 Vision 7
  • 18. Query improvements LIMIT, OFFSETand FETCHclause support HibernateCriteriaBuilder cb = session.getCriteriaBuilder(); JpaCriteriaQuery<Entity> q1 = cb.createQuery( Entity.class ); JpaRoot<Entity> root = q1.from( Entity.class ); q1.fetch( 3, FetchClauseType.ROWS_WITH_TIES ); TypedQuery<Entity> q = session.createQuery( q1 );
  • 19. Query improvements Support for OVERclause a.k.a. window functions (ANSI SQL 2003) select format(c.ts as ‘yyyy’’Q’’Q’), sum(c.amount), sum(c.amount) - lag(sum(c.amount)) over (order by format(c.ts as ‘yyyy’’Q’’Q’)) as delta from Costs c group by format(c.ts as ‘yyyy’’Q’’Q’) period amount delta 2021Q4 100 NULL 2022Q1 120 20
  • 20. Query improvements Ordered set-aggregate functions i.e. LISTAGG(ANSI SQL 2016) select pr.id, listagg(p.name, ‘, ’) within group (order by p.name) from Project pr join pr.participants p group by pr.id order by pr.id id participants 1 Bruce Banner, Natasha Romanoff, Tony Stark .. ..
  • 21. Query improvements Summarization support i.e. ROLLUP(ANSI SQL-99) select s.state, s.city, sum(s.price * s.quantity) from Sales s group by rollup (s.state, s.city) order by s.state, s.city nulls last state city amount CA SF 100 CA SJ 120 CA NULL 220
  • 22. Query improvements FILTER clause support (ANSI SQL 2016) select count(*) filter (where s.price * s.quantity < 10) as small_sales, count(*) filter (where s.price * s.quantity >= 10) as big_sales from Sales s small_sales big_sales 10 20
  • 23. Query improvements ILIKEpredicate support select e from Entity e where e.name ilike ‘%tony%’ Fallback to lower(e.name) like lower(‘%tony’)
  • 24. Query improvements Tuple syntax support with great emulation Align expressions/predicates i.e. ... where my_function(value > 1) and ... Temporal arithmetic support i.e. ts1 - ts2returns Duration Duration extraction support with BY operator i.e. (ts1 - ts2) by hour Duration literal support i.e. ts1 + 1 day Support for DISTINCT FROMpredicate etc.
  • 25. Query improvements Session#createSelectionQueryfor select only queries ● No executeUpdatemethod Session#createMutationQueryfor mutation only queries ● No getResultList/getSingleResultetc. methods Early validations and communication of intent
  • 26. Dialect specific SQL SQL-AST as intermediate representation of (modern) SQL as tree 5.x has a single HQL to SQL string translator with lots of if-branches per dialect-support Dialects in 6.0 provide custom translators for handling emulations SQL-AST enables sophisticated transformations/emulations efficiently ● Introduction of dummy FROMelements (Sybase) ● Emulate aggregate functions through window functions (MySQL, SQL Server, …)
  • 27. Runtime model Model in 5.x was centered around org.hibernate.type.Type Created OO runtime model since switch to read by position required changes anyway Moved logic to runtime model defined through capabilities i.e. Fetchable Removed multi-column basic mappings in favor of custom embeddable mappings Split logic from BasicTypeinto JdbcType/JavaTypeand removed most implementations Introduce BasicTypeReferencein StandardBasicTypesfor late resolving
  • 28. Support for new SQL types through Dialect contribution ● JSONtype for storing any type as JSONB/JSON/CLOB/VARCHAR ● UUIDtype for java.util.UUID ● INTERVAL_SECONDtype for java.time.Duration ● INETtype for java.net.InetAddress Replace @TypeDefwith type safe variants i.e. @JavaTypeRegistration Replace @Typewith type safe variants i.e. @JavaType Mapping improvements
  • 29. Mapping improvements CompositeUserTypebridges gap between custom types and embeddables Embeddable mapper class for defining mapping structure Full control on construction and deconstruction of custom type ● Support for library types i.e. MonetaryAmount ● Repurpose existing types i.e. OffsetDateTime Out of the box support for Java records in discussion
  • 30. Other changes Switch to Jakarta Persistence Remove deprecated stuff i.e. legacy Criteria API Add type variables to APIs/SPIs where possible Dialectwas majorly updated Renaming of JavaTypeDescriptorand SqlTypeDescriptor See https://github.com/hibernate/hibernate-orm/blob/6.0/migration-guide.adoc