11
11
import java .sql .SQLException ;
12
12
import java .sql .Statement ;
13
13
14
- import org .hibernate .dialect .Dialect ;
15
14
import org .hibernate .engine .jdbc .spi .JdbcCoordinator ;
16
15
import org .hibernate .engine .jdbc .spi .JdbcServices ;
17
16
import org .hibernate .engine .jdbc .spi .ResultSetReturn ;
18
17
import org .hibernate .engine .jdbc .spi .SqlExceptionHelper ;
19
18
import org .hibernate .engine .jdbc .spi .SqlStatementLogger ;
20
19
import org .hibernate .event .spi .EventManager ;
21
20
import org .hibernate .event .spi .HibernateMonitoringEvent ;
21
+ import org .hibernate .resource .jdbc .spi .JdbcEventHandler ;
22
22
import org .hibernate .resource .jdbc .spi .JdbcSessionContext ;
23
23
24
24
/**
29
29
public class ResultSetReturnImpl implements ResultSetReturn {
30
30
private final JdbcCoordinator jdbcCoordinator ;
31
31
32
- private final Dialect dialect ;
33
32
private final SqlStatementLogger sqlStatementLogger ;
34
33
private final SqlExceptionHelper sqlExceptionHelper ;
35
34
@@ -40,7 +39,6 @@ public class ResultSetReturnImpl implements ResultSetReturn {
40
39
*/
41
40
public ResultSetReturnImpl (JdbcCoordinator jdbcCoordinator , JdbcServices jdbcServices ) {
42
41
this .jdbcCoordinator = jdbcCoordinator ;
43
- this .dialect = jdbcServices .getDialect ();
44
42
this .sqlStatementLogger = jdbcServices .getSqlStatementLogger ();
45
43
this .sqlExceptionHelper = jdbcServices .getSqlExceptionHelper ();
46
44
}
@@ -54,16 +52,17 @@ public ResultSet extract(PreparedStatement statement, String sql) {
54
52
}
55
53
try {
56
54
final ResultSet rs ;
57
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
58
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
55
+ final EventManager eventManager = getEventManager ();
56
+ final HibernateMonitoringEvent executionEvent =
57
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
59
58
try {
60
59
jdbcExecuteStatementStart ();
61
60
rs = statement .executeQuery ();
62
61
}
63
62
finally {
64
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
63
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
65
64
jdbcExecuteStatementEnd ();
66
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
65
+ endSlowQueryLogging ( sql , executeStartNanos );
67
66
}
68
67
postExtract ( rs , statement );
69
68
return rs ;
@@ -73,37 +72,43 @@ public ResultSet extract(PreparedStatement statement, String sql) {
73
72
}
74
73
}
75
74
75
+ private EventManager getEventManager () {
76
+ return jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
77
+ }
78
+
79
+ private JdbcEventHandler getEventHandler () {
80
+ return jdbcCoordinator .getJdbcSessionOwner ().getJdbcSessionContext ().getEventHandler ();
81
+ }
82
+
76
83
private JdbcSessionContext context () {
77
84
return jdbcCoordinator .getJdbcSessionOwner ().getJdbcSessionContext ();
78
85
}
79
86
80
87
private void jdbcExecuteStatementEnd () {
81
- jdbcCoordinator . getJdbcSessionOwner (). getJdbcSessionContext (). getEventHandler ().jdbcExecuteStatementEnd ();
88
+ getEventHandler ().jdbcExecuteStatementEnd ();
82
89
}
83
90
84
91
private void jdbcExecuteStatementStart () {
85
- jdbcCoordinator . getJdbcSessionOwner (). getJdbcSessionContext (). getEventHandler ().jdbcExecuteStatementStart ();
92
+ getEventHandler ().jdbcExecuteStatementStart ();
86
93
}
87
94
88
95
@ Override
89
96
public ResultSet extract (Statement statement , String sql ) {
90
97
sqlStatementLogger .logStatement ( sql );
91
- long executeStartNanos = 0 ;
92
- if ( this .sqlStatementLogger .getLogSlowQuery () > 0 ) {
93
- executeStartNanos = System .nanoTime ();
94
- }
98
+ long executeStartNanos = beginSlowQueryLogging ();
95
99
try {
96
100
final ResultSet rs ;
97
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
98
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
101
+ final EventManager eventManager = getEventManager ();
102
+ final HibernateMonitoringEvent executionEvent =
103
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
99
104
try {
100
105
jdbcExecuteStatementStart ();
101
106
rs = statement .executeQuery ( sql );
102
107
}
103
108
finally {
104
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
109
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
105
110
jdbcExecuteStatementEnd ();
106
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
111
+ endSlowQueryLogging ( sql , executeStartNanos );
107
112
}
108
113
postExtract ( rs , statement );
109
114
return rs ;
@@ -116,14 +121,12 @@ public ResultSet extract(Statement statement, String sql) {
116
121
@ Override
117
122
public ResultSet execute (PreparedStatement statement , String sql ) {
118
123
// sql logged by StatementPreparerImpl
119
- long executeStartNanos = 0 ;
120
- if ( this .sqlStatementLogger .getLogSlowQuery () > 0 ) {
121
- executeStartNanos = System .nanoTime ();
122
- }
124
+ long executeStartNanos = beginSlowQueryLogging ();
123
125
try {
124
126
final ResultSet rs ;
125
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
126
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
127
+ final EventManager eventManager = getEventManager ();
128
+ final HibernateMonitoringEvent executionEvent =
129
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
127
130
try {
128
131
jdbcExecuteStatementStart ();
129
132
if ( !statement .execute () ) {
@@ -134,9 +137,9 @@ public ResultSet execute(PreparedStatement statement, String sql) {
134
137
rs = statement .getResultSet ();
135
138
}
136
139
finally {
137
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
140
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
138
141
jdbcExecuteStatementEnd ();
139
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
142
+ endSlowQueryLogging ( sql , executeStartNanos );
140
143
}
141
144
postExtract ( rs , statement );
142
145
return rs ;
@@ -149,14 +152,12 @@ public ResultSet execute(PreparedStatement statement, String sql) {
149
152
@ Override
150
153
public ResultSet execute (Statement statement , String sql ) {
151
154
sqlStatementLogger .logStatement ( sql );
152
- long executeStartNanos = 0 ;
153
- if ( this .sqlStatementLogger .getLogSlowQuery () > 0 ) {
154
- executeStartNanos = System .nanoTime ();
155
- }
155
+ long executeStartNanos = beginSlowQueryLogging ();
156
156
try {
157
157
final ResultSet rs ;
158
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
159
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
158
+ final EventManager eventManager = getEventManager ();
159
+ final HibernateMonitoringEvent executionEvent =
160
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
160
161
try {
161
162
jdbcExecuteStatementStart ();
162
163
if ( !statement .execute ( sql ) ) {
@@ -167,9 +168,9 @@ public ResultSet execute(Statement statement, String sql) {
167
168
rs = statement .getResultSet ();
168
169
}
169
170
finally {
170
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
171
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
171
172
jdbcExecuteStatementEnd ();
172
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
173
+ endSlowQueryLogging ( sql , executeStartNanos );
173
174
}
174
175
postExtract ( rs , statement );
175
176
return rs ;
@@ -182,13 +183,10 @@ public ResultSet execute(Statement statement, String sql) {
182
183
@ Override
183
184
public int executeUpdate (PreparedStatement statement , String sql ) {
184
185
assert statement != null ;
185
-
186
- long executeStartNanos = 0 ;
187
- if ( this .sqlStatementLogger .getLogSlowQuery () > 0 ) {
188
- executeStartNanos = System .nanoTime ();
189
- }
190
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
191
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
186
+ long executeStartNanos = beginSlowQueryLogging ();
187
+ final EventManager eventManager = getEventManager ();
188
+ final HibernateMonitoringEvent executionEvent =
189
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
192
190
try {
193
191
jdbcExecuteStatementStart ();
194
192
return statement .executeUpdate ();
@@ -197,21 +195,19 @@ public int executeUpdate(PreparedStatement statement, String sql) {
197
195
throw sqlExceptionHelper .convert ( e , "could not execute statement" , sql );
198
196
}
199
197
finally {
200
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
198
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
201
199
jdbcExecuteStatementEnd ();
202
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
200
+ endSlowQueryLogging ( sql , executeStartNanos );
203
201
}
204
202
}
205
203
206
204
@ Override
207
205
public int executeUpdate (Statement statement , String sql ) {
208
206
sqlStatementLogger .logStatement ( sql );
209
- long executeStartNanos = 0 ;
210
- if ( this .sqlStatementLogger .getLogSlowQuery () > 0 ) {
211
- executeStartNanos = System .nanoTime ();
212
- }
213
- final EventManager eventManager = jdbcCoordinator .getJdbcSessionOwner ().getEventManager ();
214
- final HibernateMonitoringEvent jdbcPreparedStatementExecutionEvent = eventManager .beginJdbcPreparedStatementExecutionEvent ();
207
+ long executeStartNanos = beginSlowQueryLogging ();
208
+ final EventManager eventManager = getEventManager ();
209
+ final HibernateMonitoringEvent executionEvent =
210
+ eventManager .beginJdbcPreparedStatementExecutionEvent ();
215
211
try {
216
212
jdbcExecuteStatementStart ();
217
213
return statement .executeUpdate ( sql );
@@ -220,12 +216,20 @@ public int executeUpdate(Statement statement, String sql) {
220
216
throw sqlExceptionHelper .convert ( e , "could not execute statement" , sql );
221
217
}
222
218
finally {
223
- eventManager .completeJdbcPreparedStatementExecutionEvent ( jdbcPreparedStatementExecutionEvent , sql );
219
+ eventManager .completeJdbcPreparedStatementExecutionEvent ( executionEvent , sql );
224
220
jdbcExecuteStatementEnd ();
225
- sqlStatementLogger . logSlowQuery ( sql , executeStartNanos , context () );
221
+ endSlowQueryLogging ( sql , executeStartNanos );
226
222
}
227
223
}
228
224
225
+ private void endSlowQueryLogging (String sql , long executeStartNanos ) {
226
+ sqlStatementLogger .logSlowQuery (sql , executeStartNanos , context () );
227
+ }
228
+
229
+ private long beginSlowQueryLogging () {
230
+ return sqlStatementLogger .getLogSlowQuery () > 0 ? System .nanoTime () : 0 ;
231
+ }
232
+
229
233
private void postExtract (ResultSet rs , Statement st ) {
230
234
if ( rs != null ) {
231
235
jdbcCoordinator .getLogicalConnection ().getResourceRegistry ().register ( rs , st );
0 commit comments