Skip to content

Commit bf1f56b

Browse files
Sannegbadner
authored andcommitted
HHH-12919 Interning of strings for EntityReferenceAliases
(cherry picked from commit fb54090)
1 parent 5f7b41d commit bf1f56b

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

hibernate-core/src/main/java/org/hibernate/loader/plan/exec/internal/AliasResolutionContextImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434

3535
import org.jboss.logging.Logger;
3636

37+
import static org.hibernate.internal.util.StringHelper.safeInterning;
38+
3739
/**
3840
* Provides aliases that are used by load queries and ResultSet processors.
3941
*
@@ -237,7 +239,7 @@ private void registerSqlTableAliasMapping(String querySpaceUid, String sqlTableA
237239
if ( querySpaceUidToSqlTableAliasMap == null ) {
238240
querySpaceUidToSqlTableAliasMap = new HashMap<String, String>();
239241
}
240-
String old = querySpaceUidToSqlTableAliasMap.put( querySpaceUid, sqlTableAlias );
242+
String old = querySpaceUidToSqlTableAliasMap.put( safeInterning( querySpaceUid ), safeInterning( sqlTableAlias ) );
241243
if ( old != null ) {
242244
if ( old.equals( sqlTableAlias ) ) {
243245
// silently ignore...

hibernate-core/src/main/java/org/hibernate/loader/plan/exec/internal/EntityReferenceAliasesImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.hibernate.loader.EntityAliases;
1010
import org.hibernate.loader.plan.exec.spi.EntityReferenceAliases;
1111

12+
import static org.hibernate.internal.util.StringHelper.safeInterning;
13+
1214
/**
1315
* @author Gail Badner
1416
* @author Steve Ebersole
@@ -18,7 +20,7 @@ public class EntityReferenceAliasesImpl implements EntityReferenceAliases {
1820
private final EntityAliases columnAliases;
1921

2022
public EntityReferenceAliasesImpl(String tableAlias, EntityAliases columnAliases) {
21-
this.tableAlias = tableAlias;
23+
this.tableAlias = safeInterning( tableAlias );
2224
this.columnAliases = columnAliases;
2325
}
2426

hibernate-core/src/main/java/org/hibernate/mapping/Column.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,19 @@ public void setName(String name) {
9292
* returns quoted name as it would be in the mapping file.
9393
*/
9494
public String getQuotedName() {
95-
return quoted ?
95+
return safeInterning(
96+
quoted ?
9697
"`" + name + "`" :
97-
name;
98+
name
99+
);
98100
}
99101

100102
public String getQuotedName(Dialect d) {
101-
return quoted ?
103+
return safeInterning(
104+
quoted ?
102105
d.openQuote() + name + d.closeQuote() :
103-
name;
106+
name
107+
);
104108
}
105109

106110
@Override
@@ -139,7 +143,7 @@ else if ( name.length() > lastLetter + 1 ) {
139143
*/
140144
@Override
141145
public String getAlias(Dialect dialect, Table table) {
142-
return getAlias( dialect ) + table.getUniqueInteger() + '_';
146+
return safeInterning( getAlias( dialect ) + table.getUniqueInteger() + '_' );
143147
}
144148

145149
public boolean isNullable() {
@@ -342,15 +346,15 @@ public String getCustomWrite() {
342346
}
343347

344348
public void setCustomWrite(String customWrite) {
345-
this.customWrite = customWrite;
349+
this.customWrite = safeInterning( customWrite );
346350
}
347351

348352
public String getCustomRead() {
349353
return customRead;
350354
}
351355

352356
public void setCustomRead(String customRead) {
353-
this.customRead = StringHelper.nullIfEmpty( customRead );
357+
this.customRead = safeInterning( StringHelper.nullIfEmpty( customRead ) );
354358
}
355359

356360
public String getCanonicalName() {

hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@
139139
import org.hibernate.type.TypeHelper;
140140
import org.hibernate.type.VersionType;
141141

142+
import static org.hibernate.internal.util.StringHelper.safeInterning;
143+
142144
/**
143145
* Basic functionality for persisting an entity via JDBC
144146
* through either generated or custom SQL

0 commit comments

Comments
 (0)