Skip to content

Commit 49e946a

Browse files
committed
Merge remote-tracking branch 'upstream/main' into main-perf
2 parents 09c6b1e + 1e87b33 commit 49e946a

File tree

122 files changed

+2331
-1503
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+2331
-1503
lines changed

documentation/src/main/asciidoc/userguide/chapters/domain/entity.adoc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,11 @@ For entities, the custom persister must implement the https://docs.jboss.org/hib
500500

501501
For collections, the custom persister must implement the https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/persister/collection/CollectionPersister.html[`CollectionPersister`] interface.
502502

503+
NOTE: Supplying a custom persister has been allowed historically, but has never been fully supported.
504+
Hibernate 6 provides better, alternative ways to accomplish the use cases for a custom persister. As
505+
of 6.2 `@Persister` has been formally deprecated.
506+
507+
503508
[[entity-persister-mapping]]
504509
.Entity persister mapping
505510
====
@@ -515,4 +520,4 @@ include::{sourcedir-persister}/Book.java[tag=entity-persister-mapping,indent=0]
515520
====
516521

517522
By providing your own `EntityPersister` and `CollectionPersister` implementations,
518-
you can control how entities and collections are persisted into the database.
523+
you can control how entities and collections are persisted into the database.

documentation/src/test/java/org/hibernate/userguide/naming/AcmeCorpPhysicalNamingStrategyTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
import org.hibernate.boot.model.naming.Identifier;
1010
import org.hibernate.boot.registry.StandardServiceRegistry;
1111
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
12+
import org.hibernate.cfg.AvailableSettings;
1213
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
1314

15+
import org.hibernate.testing.jdbc.SharedDriverManagerConnectionProviderImpl;
1416
import org.junit.After;
1517
import org.junit.Before;
1618
import org.junit.Test;
@@ -27,7 +29,9 @@ public class AcmeCorpPhysicalNamingStrategyTest {
2729

2830
@Before
2931
public void prepareServiceRegistry() {
30-
serviceRegistry = new StandardServiceRegistryBuilder().build();
32+
serviceRegistry = new StandardServiceRegistryBuilder()
33+
.applySetting(AvailableSettings.CONNECTION_PROVIDER, SharedDriverManagerConnectionProviderImpl.getInstance())
34+
.build();
3135
}
3236

3337
@After

documentation/src/test/java/org/hibernate/userguide/pc/FilterSqlFragementAliasTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,12 @@
99
import java.util.List;
1010
import jakarta.persistence.Column;
1111
import jakarta.persistence.Entity;
12-
import jakarta.persistence.EnumType;
13-
import jakarta.persistence.Enumerated;
1412
import jakarta.persistence.Id;
15-
import jakarta.persistence.ManyToOne;
16-
import jakarta.persistence.NoResultException;
17-
import jakarta.persistence.OneToMany;
1813
import jakarta.persistence.SecondaryTable;
1914
import jakarta.persistence.Table;
2015

2116
import org.hibernate.Session;
17+
import org.hibernate.annotations.Comment;
2218
import org.hibernate.annotations.Filter;
2319
import org.hibernate.annotations.FilterDef;
2420
import org.hibernate.annotations.ParamDef;
@@ -92,9 +88,11 @@ public void testLifecycle() {
9288
//tag::pc-filter-sql-fragment-alias-example[]
9389
@Entity(name = "Account")
9490
@Table(name = "account")
91+
@Comment(on="account", value = "The account table")
9592
@SecondaryTable(
9693
name = "account_details"
9794
)
95+
@Comment(on="account_details", value = "The account details secondary table")
9896
@SQLDelete(
9997
sql = "UPDATE account_details SET deleted = true WHERE id = ? "
10098
)

documentation/src/test/java/org/hibernate/userguide/transactions/TransactionsTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.hibernate.orm.test.jpa.BaseEntityManagerFunctionalTestCase;
2121
import org.hibernate.resource.transaction.spi.TransactionStatus;
2222

23+
import org.hibernate.testing.jdbc.SharedDriverManagerConnectionProviderImpl;
2324
import org.junit.Test;
2425

2526
/**
@@ -36,12 +37,23 @@ protected Class<?>[] getAnnotatedClasses() {
3637

3738
@Test
3839
public void jdbc() {
40+
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
41+
.applySetting(AvailableSettings.CONNECTION_PROVIDER, SharedDriverManagerConnectionProviderImpl.getInstance())
42+
// "jdbc" is the default, but for explicitness
43+
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jdbc")
44+
.build();
45+
46+
/*
3947
//tag::transactions-api-jdbc-example[]
4048
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
4149
// "jdbc" is the default, but for explicitness
4250
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jdbc")
4351
.build();
4452
53+
//end::transactions-api-jdbc-example[]
54+
*/
55+
56+
//tag::transactions-api-jdbc-example[]
4557
Metadata metadata = new MetadataSources(serviceRegistry)
4658
.addAnnotatedClass(Customer.class)
4759
.getMetadataBuilder()
@@ -81,12 +93,23 @@ public void jdbc() {
8193

8294
@Test
8395
public void cmt() {
96+
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
97+
.applySetting(AvailableSettings.CONNECTION_PROVIDER, SharedDriverManagerConnectionProviderImpl.getInstance())
98+
// "jdbc" is the default, but for explicitness
99+
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta")
100+
.build();
101+
102+
/*
84103
//tag::transactions-api-cmt-example[]
85104
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
86105
// "jdbc" is the default, but for explicitness
87106
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta")
88107
.build();
89108
109+
//end::transactions-api-cmt-example[]
110+
*/
111+
112+
//tag::transactions-api-cmt-example[]
90113
Metadata metadata = new MetadataSources(serviceRegistry)
91114
.addAnnotatedClass(Customer.class)
92115
.getMetadataBuilder()
@@ -131,12 +154,23 @@ public void cmt() {
131154

132155
@Test
133156
public void bmt() {
157+
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
158+
.applySetting(AvailableSettings.CONNECTION_PROVIDER, SharedDriverManagerConnectionProviderImpl.getInstance())
159+
// "jdbc" is the default, but for explicitness
160+
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta")
161+
.build();
162+
163+
/*
134164
//tag::transactions-api-bmt-example[]
135165
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
136166
// "jdbc" is the default, but for explicitness
137167
.applySetting(AvailableSettings.TRANSACTION_COORDINATOR_STRATEGY, "jta")
138168
.build();
139169
170+
//end::transactions-api-bmt-example[]
171+
*/
172+
173+
//tag::transactions-api-bmt-example[]
140174
Metadata metadata = new MetadataSources(serviceRegistry)
141175
.addAnnotatedClass(Customer.class)
142176
.getMetadataBuilder()

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CUBRIDDialect.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.sql.Types;
1010

11+
import org.hibernate.boot.model.FunctionContributions;
1112
import org.hibernate.boot.model.TypeContributions;
1213
import org.hibernate.community.dialect.identity.CUBRIDIdentityColumnSupport;
1314
import org.hibernate.community.dialect.sequence.CUBRIDSequenceSupport;
@@ -24,7 +25,6 @@
2425
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
2526
import org.hibernate.engine.spi.SessionFactoryImplementor;
2627
import org.hibernate.query.SemanticException;
27-
import org.hibernate.query.spi.QueryEngine;
2828
import org.hibernate.query.sqm.IntervalType;
2929
import org.hibernate.query.sqm.TemporalUnit;
3030
import org.hibernate.service.ServiceRegistry;
@@ -203,10 +203,10 @@ public int getFloatPrecision() {
203203
}
204204

205205
@Override
206-
public void initializeFunctionRegistry(QueryEngine queryEngine) {
207-
super.initializeFunctionRegistry( queryEngine );
206+
public void initializeFunctionRegistry(FunctionContributions functionContributions) {
207+
super.initializeFunctionRegistry(functionContributions);
208208

209-
CommonFunctionFactory functionFactory = new CommonFunctionFactory(queryEngine);
209+
CommonFunctionFactory functionFactory = new CommonFunctionFactory(functionContributions);
210210
functionFactory.trim2();
211211
functionFactory.space();
212212
functionFactory.reverse();
@@ -273,12 +273,12 @@ public SequenceSupport getSequenceSupport() {
273273

274274
@Override
275275
public String getDropForeignKeyString() {
276-
return " drop foreign key ";
276+
return "drop foreign key";
277277
}
278278

279279
@Override
280280
public String getDropUniqueKeyString() {
281-
return " drop index ";
281+
return "drop index";
282282
}
283283

284284
@Override

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CacheDialect.java

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.sql.Types;
1313

1414
import org.hibernate.LockMode;
15+
import org.hibernate.boot.model.FunctionContributions;
1516
import org.hibernate.cfg.Environment;
1617
import org.hibernate.community.dialect.identity.CacheIdentityColumnSupport;
1718
import org.hibernate.community.dialect.sequence.CacheSequenceSupport;
@@ -40,7 +41,6 @@
4041
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
4142
import org.hibernate.internal.util.JdbcExceptionHelper;
4243
import org.hibernate.persister.entity.Lockable;
43-
import org.hibernate.query.spi.QueryEngine;
4444
import org.hibernate.query.sqm.IntervalType;
4545
import org.hibernate.query.sqm.TemporalUnit;
4646
import org.hibernate.sql.ast.SqlAstTranslator;
@@ -110,11 +110,11 @@ public int getDefaultStatementBatchSize() {
110110
return 15;
111111
}
112112

113-
private static void useJdbcEscape(QueryEngine queryEngine, String name) {
113+
private static void useJdbcEscape(FunctionContributions queryEngine, String name) {
114114
//Yep, this seems to be truly necessary for certain functions
115-
queryEngine.getSqmFunctionRegistry().wrapInJdbcEscape(
115+
queryEngine.getFunctionRegistry().wrapInJdbcEscape(
116116
name,
117-
queryEngine.getSqmFunctionRegistry().findFunctionDescriptor(name)
117+
queryEngine.getFunctionRegistry().findFunctionDescriptor(name)
118118
);
119119
}
120120

@@ -149,10 +149,10 @@ public int getDefaultDecimalPrecision() {
149149
}
150150

151151
@Override
152-
public void initializeFunctionRegistry(QueryEngine queryEngine) {
153-
super.initializeFunctionRegistry( queryEngine );
152+
public void initializeFunctionRegistry(FunctionContributions functionContributions) {
153+
super.initializeFunctionRegistry(functionContributions);
154154

155-
CommonFunctionFactory functionFactory = new CommonFunctionFactory(queryEngine);
155+
CommonFunctionFactory functionFactory = new CommonFunctionFactory(functionContributions);
156156
functionFactory.repeat();
157157
functionFactory.trim2();
158158
functionFactory.substr();
@@ -182,42 +182,42 @@ public void initializeFunctionRegistry(QueryEngine queryEngine) {
182182
functionFactory.varPopSamp();
183183
functionFactory.lastDay();
184184

185-
queryEngine.getSqmFunctionRegistry().registerBinaryTernaryPattern(
185+
functionContributions.getFunctionRegistry().registerBinaryTernaryPattern(
186186
"locate",
187-
queryEngine.getTypeConfiguration().getBasicTypeRegistry().resolve( StandardBasicTypes.INTEGER ),
187+
functionContributions.getTypeConfiguration().getBasicTypeRegistry().resolve( StandardBasicTypes.INTEGER ),
188188
"$find(?2,?1)",
189189
"$find(?2,?1,?3)",
190190
STRING, STRING, INTEGER,
191-
queryEngine.getTypeConfiguration()
191+
functionContributions.getTypeConfiguration()
192192
).setArgumentListSignature("(pattern, string[, start])");
193193
functionFactory.bitLength_pattern( "($length(?1)*8)" );
194194

195-
useJdbcEscape(queryEngine, "sin");
196-
useJdbcEscape(queryEngine, "cos");
197-
useJdbcEscape(queryEngine, "tan");
198-
useJdbcEscape(queryEngine, "asin");
199-
useJdbcEscape(queryEngine, "acos");
200-
useJdbcEscape(queryEngine, "atan");
201-
useJdbcEscape(queryEngine, "atan2");
202-
useJdbcEscape(queryEngine, "exp");
203-
useJdbcEscape(queryEngine, "log");
204-
useJdbcEscape(queryEngine, "log10");
205-
useJdbcEscape(queryEngine, "pi");
206-
useJdbcEscape(queryEngine, "truncate");
207-
208-
useJdbcEscape(queryEngine, "left");
209-
useJdbcEscape(queryEngine, "right");
210-
211-
useJdbcEscape(queryEngine, "hour");
212-
useJdbcEscape(queryEngine, "minute");
213-
useJdbcEscape(queryEngine, "second");
214-
useJdbcEscape(queryEngine, "week");
215-
useJdbcEscape(queryEngine, "quarter");
216-
useJdbcEscape(queryEngine, "dayname");
217-
useJdbcEscape(queryEngine, "monthname");
218-
useJdbcEscape(queryEngine, "dayofweek");
219-
useJdbcEscape(queryEngine, "dayofmonth");
220-
useJdbcEscape(queryEngine, "dayofyear");
195+
useJdbcEscape(functionContributions, "sin");
196+
useJdbcEscape(functionContributions, "cos");
197+
useJdbcEscape(functionContributions, "tan");
198+
useJdbcEscape(functionContributions, "asin");
199+
useJdbcEscape(functionContributions, "acos");
200+
useJdbcEscape(functionContributions, "atan");
201+
useJdbcEscape(functionContributions, "atan2");
202+
useJdbcEscape(functionContributions, "exp");
203+
useJdbcEscape(functionContributions, "log");
204+
useJdbcEscape(functionContributions, "log10");
205+
useJdbcEscape(functionContributions, "pi");
206+
useJdbcEscape(functionContributions, "truncate");
207+
208+
useJdbcEscape(functionContributions, "left");
209+
useJdbcEscape(functionContributions, "right");
210+
211+
useJdbcEscape(functionContributions, "hour");
212+
useJdbcEscape(functionContributions, "minute");
213+
useJdbcEscape(functionContributions, "second");
214+
useJdbcEscape(functionContributions, "week");
215+
useJdbcEscape(functionContributions, "quarter");
216+
useJdbcEscape(functionContributions, "dayname");
217+
useJdbcEscape(functionContributions, "monthname");
218+
useJdbcEscape(functionContributions, "dayofweek");
219+
useJdbcEscape(functionContributions, "dayofmonth");
220+
useJdbcEscape(functionContributions, "dayofyear");
221221

222222
}
223223

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/CockroachLegacyDialect.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.hibernate.LockOptions;
2626
import org.hibernate.PessimisticLockException;
2727
import org.hibernate.QueryTimeoutException;
28+
import org.hibernate.boot.model.FunctionContributions;
2829
import org.hibernate.boot.model.TypeContributions;
2930
import org.hibernate.dialect.DatabaseVersion;
3031
import org.hibernate.dialect.Dialect;
@@ -59,7 +60,6 @@
5960
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
6061
import org.hibernate.internal.CoreMessageLogger;
6162
import org.hibernate.internal.util.JdbcExceptionHelper;
62-
import org.hibernate.query.spi.QueryEngine;
6363
import org.hibernate.query.sqm.IntervalType;
6464
import org.hibernate.query.sqm.NullOrdering;
6565
import org.hibernate.query.sqm.TemporalUnit;
@@ -359,10 +359,10 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry
359359
}
360360

361361
@Override
362-
public void initializeFunctionRegistry(QueryEngine queryEngine) {
363-
super.initializeFunctionRegistry(queryEngine);
362+
public void initializeFunctionRegistry(FunctionContributions functionContributions) {
363+
super.initializeFunctionRegistry(functionContributions);
364364

365-
final CommonFunctionFactory functionFactory = new CommonFunctionFactory( queryEngine );
365+
final CommonFunctionFactory functionFactory = new CommonFunctionFactory(functionContributions);
366366
functionFactory.ascii();
367367
functionFactory.char_chr();
368368
functionFactory.overlay();
@@ -399,9 +399,9 @@ public void initializeFunctionRegistry(QueryEngine queryEngine) {
399399
functionFactory.corr();
400400
functionFactory.regrLinearRegressionAggregates();
401401

402-
queryEngine.getSqmFunctionRegistry().register(
402+
functionContributions.getFunctionRegistry().register(
403403
"format",
404-
new FormatFunction( "experimental_strftime", queryEngine.getTypeConfiguration() )
404+
new FormatFunction( "experimental_strftime", functionContributions.getTypeConfiguration() )
405405
);
406406
functionFactory.windowFunctions();
407407
functionFactory.listagg_stringAgg( "string" );

0 commit comments

Comments
 (0)