HHH-5245 - Introduce LobHelper

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@19571 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Steve Ebersole 2010-05-20 20:37:56 +00:00
parent d06e11092d
commit 5aa6ad61ca
7 changed files with 87 additions and 26 deletions

View File

@ -46,7 +46,7 @@ public interface JdbcSupport {
public LobCreator getLobCreator(); public LobCreator getLobCreator();
/** /**
* Create an instance of a {@link LobCreator} appropriate for the current envionment, mainly meant to account for * Create an instance of a {@link LobCreator} appropriate for the current environment, mainly meant to account for
* variance between JDBC 4 (<= JDK 1.6) and JDBC3 (>= JDK 1.5). * variance between JDBC 4 (<= JDK 1.6) and JDBC3 (>= JDK 1.5).
* *
* @param lobCreationContext The context in which the LOB is being created * @param lobCreationContext The context in which the LOB is being created

View File

@ -1,3 +1,26 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.test.dialect.functional.cache; package org.hibernate.test.dialect.functional.cache;
import java.sql.Statement; import java.sql.Statement;
@ -510,8 +533,8 @@ public class SQLFunctionsInterSystemsTest extends DatabaseSpecificFunctionalTest
Session s = openSession(); Session s = openSession();
s.beginTransaction(); s.beginTransaction();
Blobber b = new Blobber(); Blobber b = new Blobber();
b.setBlob( Hibernate.createBlob( "foo/bar/baz".getBytes() ) ); b.setBlob( s.getLobHelper().createBlob( "foo/bar/baz".getBytes() ) );
b.setClob( Hibernate.createClob("foo/bar/baz") ); b.setClob( s.getLobHelper().createClob("foo/bar/baz") );
s.save(b); s.save(b);
//s.refresh(b); //s.refresh(b);
//assertTrue( b.getClob() instanceof ClobImpl ); //assertTrue( b.getClob() instanceof ClobImpl );
@ -542,7 +565,7 @@ public class SQLFunctionsInterSystemsTest extends DatabaseSpecificFunctionalTest
s = openSession(); s = openSession();
s.beginTransaction(); s.beginTransaction();
b = (Blobber) s.load( Blobber.class, new Integer( b.getId() ) ); b = (Blobber) s.load( Blobber.class, new Integer( b.getId() ) );
b.setClob( Hibernate.createClob("xcvfxvc xcvbx cvbx cvbx cvbxcvbxcvbxcvb") ); b.setClob( s.getLobHelper().createClob("xcvfxvc xcvbx cvbx cvbx cvbxcvbxcvbxcvb") );
s.flush(); s.flush();
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();

View File

@ -3,7 +3,6 @@ package org.hibernate.test.interfaceproxy;
import junit.framework.Test; import junit.framework.Test;
import org.hibernate.Hibernate;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.junit.functional.FunctionalTestCase; import org.hibernate.junit.functional.FunctionalTestCase;
@ -41,11 +40,11 @@ public class InterfaceProxyTest extends FunctionalTestCase {
Transaction t = s.beginTransaction(); Transaction t = s.beginTransaction();
Document d = new DocumentImpl(); Document d = new DocumentImpl();
d.setName("Hibernate in Action"); d.setName("Hibernate in Action");
d.setContent( Hibernate.createBlob( "blah blah blah".getBytes(), s ) ); d.setContent( s.getLobHelper().createBlob( "blah blah blah".getBytes() ) );
Long did = (Long) s.save(d); Long did = (Long) s.save(d);
SecureDocument d2 = new SecureDocumentImpl(); SecureDocument d2 = new SecureDocumentImpl();
d2.setName("Secret"); d2.setName("Secret");
d2.setContent( Hibernate.createBlob( "wxyz wxyz".getBytes(), s ) ); d2.setContent( s.getLobHelper().createBlob( "wxyz wxyz".getBytes() ) );
// SybaseASE15Dialect only allows 7-bits in a byte to be inserted into a tinyint // SybaseASE15Dialect only allows 7-bits in a byte to be inserted into a tinyint
// column (0 <= val < 128) // column (0 <= val < 128)
d2.setPermissionBits( (byte) 127 ); d2.setPermissionBits( (byte) 127 );

View File

@ -1,4 +1,26 @@
//$Id: SQLFunctionsTest.java 10977 2006-12-12 23:28:04Z steve.ebersole@jboss.com $ /*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.test.legacy; package org.hibernate.test.legacy;
import java.util.ArrayList; import java.util.ArrayList;
@ -13,7 +35,6 @@ import junit.framework.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.hibernate.Hibernate;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.ScrollableResults; import org.hibernate.ScrollableResults;
import org.hibernate.Transaction; import org.hibernate.Transaction;
@ -519,8 +540,8 @@ public class SQLFunctionsTest extends LegacyTestCase {
Session s = openSession(); Session s = openSession();
Blobber b = new Blobber(); Blobber b = new Blobber();
b.setBlob( Hibernate.createBlob( "foo/bar/baz".getBytes() ) ); b.setBlob( s.getLobHelper().createBlob( "foo/bar/baz".getBytes() ) );
b.setClob( Hibernate.createClob("foo/bar/baz") ); b.setClob( s.getLobHelper().createClob("foo/bar/baz") );
s.save(b); s.save(b);
//s.refresh(b); //s.refresh(b);
//assertTrue( b.getClob() instanceof ClobImpl ); //assertTrue( b.getClob() instanceof ClobImpl );
@ -556,7 +577,7 @@ public class SQLFunctionsTest extends LegacyTestCase {
s = openSession(); s = openSession();
b = (Blobber) s.load( Blobber.class, new Integer( b.getId() ) ); b = (Blobber) s.load( Blobber.class, new Integer( b.getId() ) );
b.setClob( Hibernate.createClob("xcvfxvc xcvbx cvbx cvbx cvbxcvbxcvbxcvb") ); b.setClob( s.getLobHelper().createClob("xcvfxvc xcvbx cvbx cvbx cvbxcvbxcvbxcvb") );
s.flush(); s.flush();
s.connection().commit(); s.connection().commit();
s.close(); s.close();

View File

@ -75,7 +75,7 @@ public class BlobLocatorTest extends DatabaseSpecificFunctionalTestCase {
Session s = openSession(); Session s = openSession();
s.beginTransaction(); s.beginTransaction();
LobHolder entity = new LobHolder(); LobHolder entity = new LobHolder();
entity.setBlobLocator( Hibernate.createBlob( original ) ); entity.setBlobLocator( s.getLobHelper().createBlob( original ) );
s.save( entity ); s.save( entity );
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();
@ -117,7 +117,7 @@ public class BlobLocatorTest extends DatabaseSpecificFunctionalTestCase {
assertNotNull( entity.getBlobLocator() ); assertNotNull( entity.getBlobLocator() );
assertEquals( BLOB_SIZE, entity.getBlobLocator().length() ); assertEquals( BLOB_SIZE, entity.getBlobLocator().length() );
assertEquals( original, extractData( entity.getBlobLocator() ) ); assertEquals( original, extractData( entity.getBlobLocator() ) );
entity.setBlobLocator( Hibernate.createBlob( changed ) ); entity.setBlobLocator( s.getLobHelper().createBlob( changed ) );
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();

View File

@ -1,11 +1,10 @@
//$Id: $
/* /*
* Hibernate, Relational Persistence for Idiomatic Java * Hibernate, Relational Persistence for Idiomatic Java
* *
* Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as * Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution * indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are * statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Middleware LLC. * distributed under license by Red Hat Inc.
* *
* This copyrighted material is made available to anyone wishing to use, modify, * This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU * copy, or redistribute it subject to the terms and conditions of the GNU
@ -21,7 +20,6 @@
* Free Software Foundation, Inc. * Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor * 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA * Boston, MA 02110-1301 USA
*
*/ */
package org.hibernate.test.lob; package org.hibernate.test.lob;
@ -29,7 +27,6 @@ import java.sql.Clob;
import junit.framework.Test; import junit.framework.Test;
import org.hibernate.Hibernate;
import org.hibernate.LockMode; import org.hibernate.LockMode;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
@ -74,7 +71,7 @@ public class ClobLocatorTest extends DatabaseSpecificFunctionalTestCase {
Session s = openSession(); Session s = openSession();
s.beginTransaction(); s.beginTransaction();
LobHolder entity = new LobHolder(); LobHolder entity = new LobHolder();
entity.setClobLocator( Hibernate.createClob( original ) ); entity.setClobLocator( s.getLobHelper().createClob( original ) );
s.save( entity ); s.save( entity );
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();
@ -116,7 +113,7 @@ public class ClobLocatorTest extends DatabaseSpecificFunctionalTestCase {
assertNotNull( entity.getClobLocator() ); assertNotNull( entity.getClobLocator() );
assertEquals( CLOB_SIZE, entity.getClobLocator().length() ); assertEquals( CLOB_SIZE, entity.getClobLocator().length() );
assertEquals( original, extractData( entity.getClobLocator() ) ); assertEquals( original, extractData( entity.getClobLocator() ) );
entity.setClobLocator( Hibernate.createClob( changed ) ); entity.setClobLocator( s.getLobHelper().createClob( changed ) );
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();
@ -145,7 +142,7 @@ public class ClobLocatorTest extends DatabaseSpecificFunctionalTestCase {
Session s = openSession(); Session s = openSession();
s.beginTransaction(); s.beginTransaction();
LobHolder entity = new LobHolder(); LobHolder entity = new LobHolder();
entity.setClobLocator( Hibernate.createClob( original ) ); entity.setClobLocator( s.getLobHelper().createClob( original ) );
s.save( entity ); s.save( entity );
s.getTransaction().commit(); s.getTransaction().commit();
s.close(); s.close();

View File

@ -1,9 +1,30 @@
//$Id: MixedTest.java 15736 2008-12-27 00:49:42Z gbadner $ /*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.test.mixed; package org.hibernate.test.mixed;
import junit.framework.Test; import junit.framework.Test;
import org.hibernate.Hibernate;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.junit.functional.FunctionalTestCase; import org.hibernate.junit.functional.FunctionalTestCase;
@ -39,13 +60,13 @@ public class MixedTest extends FunctionalTestCase {
Document d = new Document(); Document d = new Document();
d.setName( "Hibernate in Action" ); d.setName( "Hibernate in Action" );
d.setContent( Hibernate.createBlob( "blah blah blah".getBytes() ) ); d.setContent( s.getLobHelper().createBlob( "blah blah blah".getBytes() ) );
d.setParent( f ); d.setParent( f );
Long did = (Long) s.save( d ); Long did = (Long) s.save( d );
SecureDocument d2 = new SecureDocument(); SecureDocument d2 = new SecureDocument();
d2.setName( "Secret" ); d2.setName( "Secret" );
d2.setContent( Hibernate.createBlob( "wxyz wxyz".getBytes() ) ); d2.setContent( s.getLobHelper().createBlob( "wxyz wxyz".getBytes() ) );
// SybaseASE15Dialect only allows 7-bits in a byte to be inserted into a tinyint // SybaseASE15Dialect only allows 7-bits in a byte to be inserted into a tinyint
// column (0 <= val < 128) // column (0 <= val < 128)
d2.setPermissionBits( (byte) 127 ); d2.setPermissionBits( (byte) 127 );