`
zc_888
  • 浏览: 20137 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

spring+hibernate操控LOB对象

 
阅读更多

spring为hibernate提供了对LOB对像的支持,以oracle数据库为例,配置方法如下:

一.spring配置文件

<!-- 使用jndi连接数据库 -->
<!--<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/develop</value>
</property>
</bean>-->

<!-- 本地Tomcat配置 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.0.123:1521:dbserver</value>
</property>
<property name="username">
<value>develop</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>


<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>

<!--spring 对 LOB的支持就是要配置这个属性,这里是对oracle的LOB的支持-->
<property name="lobHandler">
<ref local="oracleLobHandler" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.query.factory_class">
org.hibernate.hql.ast.ASTQueryTranslatorFactory
<!-- org.hibernate.hql.classic.ClassicQueryTranslatorFactory -->
</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">30</prop>
</props>
</property>
<property name="mappingLocations">
<list>
<value>classpath:/com/abc/**/entity/*.hbm.xml</value>
</list>
</property>
</bean>

<!-- 对oracle的LOB支持-->

<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor" />
</property>
</bean>

<!-- 设置本地 Jdbc 对象抽取器-->

<!-- webLogic下的配置 -->
<!-- bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor"
lazy-init="true" /-->

<!-- tomcat下的配置 -->
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init="true" />

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<!-- 事务管理-->

<!-- 事务拦截器-->

<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>

<!-- 事务代理-->

<bean id="transactionProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

<property name="proxyTargetClass" >
<value>true</value>
</property>

<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>

说明:上文还是很具有实用价值的,不过对LOB的支持只有这一段:

<!-- 对oracle的LOB支持-->

<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor" />
</property>
</bean>

<!-- 设置本地 Jdbc 对象抽取器-->

<!-- webLogic下的配置 -->
<!-- bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor"
lazy-init="true" /-->

<!-- tomcat下的配置 -->
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init="true" />

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

二.配置hibernate影射文件

对clob和blob配置时使用如下方式:

<!--clob -->

<property name="context" column="context" type="org.springframework.orm.hibernate3.support.ClobStringType"/>

<!--blob -->

<property name="data" column="data" type="org.springframework.orm.hibernate3.support.BlobByteArrayType" />

这里需要注意一下,spring对clob的支持最大为2G

三.pojo配置

clob 对应类型为String,blob 对应类型为byte[],如下:

String context;

byte[] data;

set and get method;

保存或取出数据时将其转换为响应的类型即可。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics