[hibernate-dev] HHH-6726 LONG and LONG RAW column types in Oracle

Scott Marlow smarlow at redhat.com
Fri Oct 14 23:14:16 EDT 2011


How does this impact existing applications?  Would they have to convert 
LONGs to CLOBs (and LONGRAWs to BLOBs) to keep the application working?

As far as the advantage of CLOB over TEXT, if you read every character, 
which one is really faster?  I would expect TEXT to be a little faster, 
since the server side will send the characters before they are asked 
for.  By faster, I mean from the application performance point of view. :)

Could this be changed in a custom Oracle dialect?   So new 
applications/databases could perhaps use that and existing applications 
might use LONGs a bit longer via the existing Oracle dialect.

On 10/14/2011 09:22 PM, Gail Badner wrote:
> In [1], I am seeing the following type mappings:
>
> Column type: LONG ->  java.sql.Types.LONGVARCHAR ->  java.lang.String
> Column type: LONGRAW ->  java.sql.Types.LONGVARBINARY ->  byte[]
>
> org.hibernate.type.TextType is consistent with the mapping for LONG.
>
> org.hibernate.type.ImageType is consistent with the mapping for LONGRAW.
>
>  From this standpoint, the current settings are appropriate.
>
> I understand there are restrictions when LONG and LONGRAW are used and I see from your other message that there is Oracle documentation for migrating to CLOB and BLOB.
>
> I agree that changing column type registration as follows (for Oracle only) should fix this:
> 		registerColumnType( Types.VARBINARY, 2000, "raw($l)" );
> 		registerColumnType( Types.VARBINARY, "blob" );
>
> 		registerColumnType( Types.LONGVARCHAR, "clob" );
> 		registerColumnType( Types.LONGVARBINARY, "blob" );
>
> 		registerColumnType( Types.VARCHAR, 4000, "varchar2($l char)" );
> 		registerColumnType( Types.VARCHAR, "clob" );
>
> Steve, what do you think? Is it too late to make this change for 4.0.0?
>
> [1] Table 11-1 of Oracle® Database JDBC Developer's Guide and Reference, 11g Release 1 (11.1) (http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/datacc.htm#g1028145)
> [2] Hibernate Core Migration Guide for 3.5 (http://community.jboss.org/wiki/HibernateCoreMigrationGuide35)
> [3] Table 2-10 of Oracle® Database SQL Language Reference
> 11g Release 1 (11.1) (http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elements002.htm#g195937)
>
> ----- Original Message -----
>> From: "Łukasz Antoniak"<lukasz.antoniak at gmail.com>
>> To: hibernate-dev at lists.jboss.org
>> Sent: Thursday, October 13, 2011 12:50:13 PM
>> Subject: [hibernate-dev] HHH-6726 LONG and LONG RAW column types in Oracle
>>
>> Welcome Community!
>>
>> I have just subscribed to the list and wanted to discuss HHH-6726
>> JIRA
>> issue.
>>
>> Gail Badner wrote
>> (http://lists.jboss.org/pipermail/hibernate-dev/2011-October/007208.html):
>> HHH-6726 (Oracle : map TextType to clob and ImageType to blob)
>> https://hibernate.onjira.com/browse/HHH-6726
>> There have been a number of issues opened since the change was made
>> to
>> map TextType (LONGVARCHAR) 'long' and ImageType (LONGVARBINARY) to
>> 'long
>> raw'. This change was already documented in the migration notes.
>> Should
>> the mapping for Oracle (only) be changed back to clob and blob?
>>
>> HHH-6726 is caused by an issue in Oracle JDBC driver (version
>> 10.2.0.4
>> and later). This bug appears when LONG or LONG RAW columns are
>> accessed
>> not as first or last while processing SQL statement.
>>
>> I have discussed the topic of mapping TextType to CLOB and ImageType
>> to
>> BLOB (only in Oracle dialect) with Strong Liu. Reasons for doing so:
>> - Oracle allows only one LONG / LONG RAW column per table. This might
>> be
>> the most important from Hibernate's perspective.
>> - LONG / LONG RAW - up to 2 GB, BLOB / CLOB - up to 4 GB.
>> - In PL/SQL using LOBs is more efficient (random access to data).
>> LONG
>> only sequential.
>> - LONG and LONG RAW are deprecated.
>>
>> What is your opinion?
>>
>> Regards,
>> Lukasz Antoniak
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev




More information about the hibernate-dev mailing list