From 61133f9530d5bc3df5bf49981653eb33110f0a29 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Fri, 27 Jul 2007 00:36:37 +0000 Subject: [PATCH] HHH-2747 : JDBC3 getGeneratedKey git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@12831 1b8cb986-b30d-0410-93ca-fae66ebed9b2 --- .../org/hibernate/id/IdentityGenerator.java | 3 +- .../id/SequenceIdentityGenerator.java | 3 +- .../org/hibernate/jdbc/AbstractBatcher.java | 6 +- .../util/GetGeneratedKeysHelper.java | 87 ------------------- .../util/NamedGeneratedKeysHelper.java | 79 ----------------- 5 files changed, 4 insertions(+), 174 deletions(-) delete mode 100644 core/src/main/java/org/hibernate/util/GetGeneratedKeysHelper.java delete mode 100644 core/src/main/java/org/hibernate/util/NamedGeneratedKeysHelper.java diff --git a/core/src/main/java/org/hibernate/id/IdentityGenerator.java b/core/src/main/java/org/hibernate/id/IdentityGenerator.java index c78b4ad256..37da1d7891 100644 --- a/core/src/main/java/org/hibernate/id/IdentityGenerator.java +++ b/core/src/main/java/org/hibernate/id/IdentityGenerator.java @@ -15,7 +15,6 @@ import org.hibernate.id.insert.InsertSelectIdentityInsert; import org.hibernate.dialect.Dialect; import org.hibernate.HibernateException; import org.hibernate.AssertionFailure; -import org.hibernate.util.GetGeneratedKeysHelper; /** @@ -72,7 +71,7 @@ public class IdentityGenerator extends AbstractPostInsertGenerator { public Serializable executeAndExtract(PreparedStatement insert) throws SQLException { insert.executeUpdate(); return IdentifierGeneratorFactory.getGeneratedIdentity( - GetGeneratedKeysHelper.getGeneratedKey( insert ), + insert.getGeneratedKeys(), persister.getIdentifierType() ); } diff --git a/core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java b/core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java index 924fb5ac99..6227ce6417 100644 --- a/core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java +++ b/core/src/main/java/org/hibernate/id/SequenceIdentityGenerator.java @@ -7,7 +7,6 @@ import org.hibernate.dialect.Dialect; import org.hibernate.HibernateException; import org.hibernate.MappingException; import org.hibernate.sql.Insert; -import org.hibernate.util.NamedGeneratedKeysHelper; import org.hibernate.type.Type; import org.hibernate.engine.SessionImplementor; import org.apache.commons.logging.Log; @@ -79,7 +78,7 @@ public class SequenceIdentityGenerator extends SequenceGenerator protected Serializable executeAndExtract(PreparedStatement insert) throws SQLException { insert.executeUpdate(); return IdentifierGeneratorFactory.getGeneratedIdentity( - NamedGeneratedKeysHelper.getGeneratedKey( insert ), + insert.getGeneratedKeys(), getPersister().getIdentifierType() ); } diff --git a/core/src/main/java/org/hibernate/jdbc/AbstractBatcher.java b/core/src/main/java/org/hibernate/jdbc/AbstractBatcher.java index 65dad8d310..d734fd3c2c 100644 --- a/core/src/main/java/org/hibernate/jdbc/AbstractBatcher.java +++ b/core/src/main/java/org/hibernate/jdbc/AbstractBatcher.java @@ -20,9 +20,7 @@ import org.hibernate.dialect.Dialect; import org.hibernate.engine.SessionFactoryImplementor; import org.hibernate.exception.JDBCExceptionHelper; import org.hibernate.pretty.Formatter; -import org.hibernate.util.GetGeneratedKeysHelper; import org.hibernate.util.JDBCExceptionReporter; -import org.hibernate.util.NamedGeneratedKeysHelper; /** * Manages prepared statements and batching. @@ -492,10 +490,10 @@ public abstract class AbstractBatcher implements Batcher { } } else if ( useGetGeneratedKeys ) { - result = GetGeneratedKeysHelper.prepareStatement( conn, sql ); + result = conn.prepareStatement( sql, PreparedStatement.RETURN_GENERATED_KEYS ); } else if ( namedGeneratedKeys != null ) { - result = NamedGeneratedKeysHelper.prepareStatement( conn, sql, namedGeneratedKeys ); + result = conn.prepareStatement( sql, namedGeneratedKeys ); } else { if ( callable ) { diff --git a/core/src/main/java/org/hibernate/util/GetGeneratedKeysHelper.java b/core/src/main/java/org/hibernate/util/GetGeneratedKeysHelper.java deleted file mode 100644 index 11a3ac42ca..0000000000 --- a/core/src/main/java/org/hibernate/util/GetGeneratedKeysHelper.java +++ /dev/null @@ -1,87 +0,0 @@ -//$Id: GetGeneratedKeysHelper.java 9676 2006-03-22 17:38:55Z steve.ebersole@jboss.com $ -package org.hibernate.util; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import org.hibernate.AssertionFailure; - -/** - * @author Gavin King - */ -public final class GetGeneratedKeysHelper { - - private GetGeneratedKeysHelper() { - } - - private static final Integer RETURN_GENERATED_KEYS; - private static final Method PREPARE_STATEMENT_METHOD; - private static final Method GET_GENERATED_KEYS_METHOD; - - static { - try { - int returnGeneratedKeysEnumValue = Statement.class - .getDeclaredField( "RETURN_GENERATED_KEYS" ) - .getInt( PreparedStatement.class ); - RETURN_GENERATED_KEYS = new Integer( returnGeneratedKeysEnumValue ); - PREPARE_STATEMENT_METHOD = Connection.class.getMethod( - "prepareStatement", - new Class[] { String.class, Integer.TYPE } - ); - GET_GENERATED_KEYS_METHOD = Statement.class.getDeclaredMethod( - "getGeneratedKeys", - null - ); - } - catch ( Exception e ) { - throw new AssertionFailure( "could not initialize getGeneratedKeys() support", e ); - } - } - - public static PreparedStatement prepareStatement(Connection conn, String sql) throws SQLException { - Object[] args = new Object[] { sql, RETURN_GENERATED_KEYS } ; - try { - return ( PreparedStatement ) PREPARE_STATEMENT_METHOD.invoke( conn, args ); - } - catch ( InvocationTargetException ite ) { - if ( ite.getTargetException() instanceof SQLException ) { - throw ( SQLException ) ite.getTargetException(); - } - else if ( ite.getTargetException() instanceof RuntimeException ) { - throw ( RuntimeException ) ite.getTargetException(); - } - else { - throw new AssertionFailure( "InvocationTargetException preparing statement capable of returning generated keys (JDBC3)", ite ); - } - } - catch ( IllegalAccessException iae ) { - throw new AssertionFailure( "IllegalAccessException preparing statement capable of returning generated keys (JDBC3)", iae ); - } - } - - public static ResultSet getGeneratedKey(PreparedStatement ps) throws SQLException { - try { - return ( ResultSet ) GET_GENERATED_KEYS_METHOD.invoke( ps, null ); - } - catch ( InvocationTargetException ite ) { - if ( ite.getTargetException() instanceof SQLException ) { - throw ( SQLException ) ite.getTargetException(); - } - else if ( ite.getTargetException() instanceof RuntimeException ) { - throw ( RuntimeException ) ite.getTargetException(); - } - else { - throw new AssertionFailure( "InvocationTargetException extracting generated keys (JDBC3)", ite ); - } - } - catch ( IllegalAccessException iae ) { - throw new AssertionFailure( "IllegalAccessException extracting generated keys (JDBC3)", iae ); - } - } - -} diff --git a/core/src/main/java/org/hibernate/util/NamedGeneratedKeysHelper.java b/core/src/main/java/org/hibernate/util/NamedGeneratedKeysHelper.java deleted file mode 100644 index 0f79e1c18c..0000000000 --- a/core/src/main/java/org/hibernate/util/NamedGeneratedKeysHelper.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.hibernate.util; - -import org.hibernate.AssertionFailure; - -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; -import java.sql.Connection; -import java.sql.Statement; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.ResultSet; - -/** - * @author Steve Ebersole - */ -public class NamedGeneratedKeysHelper { - private NamedGeneratedKeysHelper() { - } - - private static final Method PREPARE_STATEMENT_METHOD; - private static final Method GET_GENERATED_KEYS_METHOD; - - static { - try { - PREPARE_STATEMENT_METHOD = Connection.class.getMethod( - "prepareStatement", - new Class[] { String.class, String[].class } - ); - GET_GENERATED_KEYS_METHOD = Statement.class.getDeclaredMethod( - "getGeneratedKeys", - null - ); - } - catch ( Exception e ) { - throw new AssertionFailure( "could not initialize getGeneratedKeys() support", e ); - } - } - - public static PreparedStatement prepareStatement(Connection conn, String sql, String[] columnNames) throws SQLException { - Object[] args = new Object[] { sql, columnNames } ; - try { - return ( PreparedStatement ) PREPARE_STATEMENT_METHOD.invoke( conn, args ); - } - catch ( InvocationTargetException ite ) { - if ( ite.getTargetException() instanceof SQLException ) { - throw ( SQLException ) ite.getTargetException(); - } - else if ( ite.getTargetException() instanceof RuntimeException ) { - throw ( RuntimeException ) ite.getTargetException(); - } - else { - throw new AssertionFailure( "InvocationTargetException preparing statement capable of returning generated keys (JDBC3)", ite ); - } - } - catch ( IllegalAccessException iae ) { - throw new AssertionFailure( "IllegalAccessException preparing statement capable of returning generated keys (JDBC3)", iae ); - } - } - - public static ResultSet getGeneratedKey(PreparedStatement ps) throws SQLException { - try { - return ( ResultSet ) GET_GENERATED_KEYS_METHOD.invoke( ps, null ); - } - catch ( InvocationTargetException ite ) { - if ( ite.getTargetException() instanceof SQLException ) { - throw ( SQLException ) ite.getTargetException(); - } - else if ( ite.getTargetException() instanceof RuntimeException ) { - throw ( RuntimeException ) ite.getTargetException(); - } - else { - throw new AssertionFailure( "InvocationTargetException extracting generated keys (JDBC3)", ite ); - } - } - catch ( IllegalAccessException iae ) { - throw new AssertionFailure( "IllegalAccessException extracting generated keys (JDBC3)", iae ); - } - } -}