`

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;

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

分享到:
评论

相关推荐

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    spring+hibernate 解决大字段(clob)

    ### Spring与Hibernate处理大字段(CLOB/BLOB) 在企业级应用开发中,经常会遇到需要存储大量文本或二进制数据的情况,这时就需要用到数据库的大字段类型如CLOB(Character Large Object)和BLOB(Binary Large ...

    spring+struts+hibernate实现文件的上传和下载

    【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...

    spring+hibernate操作oracle的clob字段

    这确保了Spring和Hibernate能够正确地与Oracle数据库交互处理大对象。 ```xml &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt; ... ``` 2. **定义...

    Spring+hibernate4+SpringMVC+Jbpm4.4

    在Spring框架中,Hibernate被用来作为ORM工具,使得开发者可以使用对象模型而不是SQL语句来操作数据库。Hibernate 4 是 Hibernate 的一个版本,引入了更多的性能优化和新特性,如第二级缓存、HQL(Hibernate查询语言...

    java存lob数据到sybase数据库

    通过spring存blob和clob数据到sybase数据库中,压缩包里包含了三种方式,(1)spring+hibernate,切面事务(aop),存lob数据,(2)spring+hibernate存lob数据,(3)spring+jdbc存lob数据。

    spring mvc+hibernate 图片存储至blob

    总结起来,"spring mvc+hibernate 图片存储至blob"这个主题涉及到Spring MVC处理文件上传、Hibernate将图片数据存入数据库BLOB字段、以及前后端交互等多个技术点。通过理解这些知识点,开发者可以构建一个完整的图片...

    spring1.2+hibernate2对大字段的处理实例

    在IT领域,尤其是在Java开发中,Spring和Hibernate是两个非常重要的框架。...这个"spring1.2+hibernate2对大字段的处理实例"就是一个很好的学习资源,能够帮助开发者深入理解如何在旧版框架下处理这类问题。

    hibernate-annotation3.4.0 + hibernate-distribution3.3.2 + slf4j-1.5.8.rar

    3.4.0版本引入了更多的注解,如@Temporal、@Lob等,增强了对JPA规范的支持,使得开发更加便捷。开发者可以通过注解轻松地定义实体类、属性、关联关系等,极大地提高了开发效率。 再者,Slf4j(Simple Logging ...

    Spring+3.x企业应用开发实战光盘源码(全)

     第12章:讲解了如何在Spring中集成Hibernate、myBatis等数据访问框架,同时,读者还将学习到ORM框架的混用和DAO层设计的知识。  第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及...

    jdbc+hibernate存取blob字段

    在使用Hibernate时,处理BLOB字段的过程会有所不同,因为Hibernate提供了一种更面向对象的方式来操作数据库。你可能需要定义一个实体类,包含BLOB类型的属性,并使用Hibernate的Session接口来保存或更新对象。例如:...

    陈开雄 Spring+3.x企业应用开发实战光盘源码.zip

     第12章:讲解了如何在Spring中集成Hibernate、myBatis等数据访问框架,同时,读者还将学习到ORM框架的混用和DAO层设计的知识。  第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及...

    JDBC+Hibernate将Blob数据写入Oracle

    在Hibernate中,`session.createBlob()`方法用于创建Blob对象,然后将输入流传递给它,即可完成Blob数据的加载。保存实体后,Hibernate会自动处理Blob数据的存储。 总结来说,JDBC和Hibernate都可以处理Oracle中的...

    简单易行:Spring中操作LOB字段案例

    在Spring框架中,LOB(Large Object)字段通常用于存储大数据,如BLOB(Binary Large Object)用于二进制数据,如图片或文档,CLOB(Character Large Object)用于字符数据,如长文本。本篇文章将深入探讨如何在...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0  本文...

    ORACLE LOB大对象处理

    本篇将深入探讨Oracle LOB大对象处理的相关知识点。 1. **LOB的创建与存储** 在Oracle中,创建含有LOB列的表结构时,需要指定LOB类型和存储选项。例如: ```sql CREATE TABLE mylobs ( id NUMBER PRIMARY KEY, ...

    Hibernate对BLOB CLOB操作

    在Java的持久化框架Hibernate中,BLOB(Binary Large Object)和CLOB(Character Large Object)是用来处理大数据类型的,如图像、音频、大型文本等。本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的...

    Oracle中对LOB对象的操作.pdf

    处理LOB数据时,Oracle提供了一个强大的DBMS_LOB包,这个包简化了对内部LOB对象(BLOB和CLOB)的操作,包括读取和写入。然而,对于外部LOB对象BFILE,只能进行读操作,而写操作应该通过PL/SQL程序段来完成。 以下是...

Global site tag (gtag.js) - Google Analytics