24
24
*/
25
25
package org .hibernate ;
26
26
import java .io .Serializable ;
27
+ import java .util .Collections ;
27
28
import java .util .HashMap ;
28
29
import java .util .Iterator ;
29
30
import java .util .Map ;
@@ -83,7 +84,7 @@ public LockOptions setLockMode(LockMode lockMode) {
83
84
return this ;
84
85
}
85
86
86
- private Map aliasSpecificLockModes = new HashMap ();
87
+ private Map aliasSpecificLockModes = null ; //initialize lazily as LockOptions is frequently created without needing this
87
88
88
89
/**
89
90
* Specify the {@link LockMode} to be used for a specific query alias.
@@ -97,6 +98,9 @@ public LockOptions setLockMode(LockMode lockMode) {
97
98
* @see Criteria#setLockMode(String, LockMode)
98
99
*/
99
100
public LockOptions setAliasSpecificLockMode (String alias , LockMode lockMode ) {
101
+ if ( aliasSpecificLockModes == null ) {
102
+ aliasSpecificLockModes = new HashMap ();
103
+ }
100
104
aliasSpecificLockModes .put ( alias , lockMode );
101
105
return this ;
102
106
}
@@ -113,6 +117,9 @@ public LockOptions setAliasSpecificLockMode(String alias, LockMode lockMode) {
113
117
* @return The explicit lock mode for that alias.
114
118
*/
115
119
public LockMode getAliasSpecificLockMode (String alias ) {
120
+ if ( aliasSpecificLockModes == null ) {
121
+ return null ;
122
+ }
116
123
return (LockMode ) aliasSpecificLockModes .get ( alias );
117
124
}
118
125
@@ -143,6 +150,9 @@ public LockMode getEffectiveLockMode(String alias) {
143
150
* @return the number of explicitly defined alias lock modes.
144
151
*/
145
152
public int getAliasLockCount () {
153
+ if ( aliasSpecificLockModes == null ) {
154
+ return 0 ;
155
+ }
146
156
return aliasSpecificLockModes .size ();
147
157
}
148
158
@@ -152,6 +162,9 @@ public int getAliasLockCount() {
152
162
* @return Iterator for accessing the Map.Entry's
153
163
*/
154
164
public Iterator getAliasLockIterator () {
165
+ if ( aliasSpecificLockModes == null ) {
166
+ return Collections .emptyList ().iterator ();
167
+ }
155
168
return aliasSpecificLockModes .entrySet ().iterator ();
156
169
}
157
170
@@ -234,7 +247,9 @@ public static LockOptions copy(LockOptions from, LockOptions dest) {
234
247
dest .setLockMode (from .getLockMode ());
235
248
dest .setScope (from .getScope ());
236
249
dest .setTimeOut (from .getTimeOut ());
237
- dest .aliasSpecificLockModes = new HashMap (from .aliasSpecificLockModes );
250
+ if ( from .aliasSpecificLockModes != null ) {
251
+ dest .aliasSpecificLockModes = new HashMap ( from .aliasSpecificLockModes );
252
+ }
238
253
return dest ;
239
254
}
240
255
}
0 commit comments