`
高级java工程师
  • 浏览: 409076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sping打字但处理

阅读更多
关键字: spring+hibernate的clob大字段处理

spring+hibernate的clob大字段处理(转载于javaeye论坛)

在spring中如何处理oracle大字段

在spring中采用OracleLobHandler来处理oracle大字段(包括clob和blob),则在程序中不需要引用oracle的特殊类,从而能够保证支持我们的代码支持多数据库。

1、首先数据表中的clob类型对应java持久化类的String类型;而blob类型对应byte[]类型
2、定义hibernate标签时,持久化类中对应clob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.ClobStringType;而对应blob类型的属性的hibernate type应为org.springframework.orm.hibernate.support.BlobByteArrayType。
3、以后访问这些对应clob和blob类型的属性时,按普通属性处理,不需要特别编码。

java代码: 

 < bean  id ="mySessionFactory2"  class ="org.springframework.orm.hibernate.LocalSessionFactoryBean" >  
         < property  name ="dataSource" >  
                 < ref  bean ="myDataSource2" />  
          </ property >  
          < property  name ="lobHandler" >  
         < ref  bean ="oracleLobHandle" />  
          </ property >   
 </ bean >  
 < bean  id ="nativeJdbcExtractor"  class ="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />  

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


Spring为处理数据库Lob字段,特别提供了LobHandler接口。在操作Oracle RDBMS过程中,由于Oracle JDBC Driver实现的问题,应用必须采用Oracle原生的数据库连接(比如,oracle.jdbc.OracleConnection)、LOB原生实现(比如,oracle.sql.BLOB、oracle.sql.CLOB)。因此,LobHandler接口存在上述两种实现。简而言之,为操作Oracle数据库,必须使用OracleLobHandler实现。如果操作其他RDBMS类型,则使用DefaultLobHandler。NativeJdbcExtractor是个接口,通过它能够抽象各种连接池。另外Spring还提供两个接口存取Blob,LobCreator及LobHandler

hbm文件配置
<property name="content" column="C_Content" type="org.springframework.orm.hibernate3.support.ClobStringType" 
length="10000"></property>





JavaBean的对应的属性类型为String。

需要注意两点:(1)如果使用Oracle9i自带的class12.jar这个JDBC驱动的话是不行的,会报错,据说要升级到classes12-9i.jar,我在Oracle的网站上没找到对应的下载,下载了ojdbc14.jar就可以了。(2)对Clob或Blog的操作必须在一个事务中进行,如在Dao层测试会出错,在配置了事务的Logic层就没问题了。

经过测试,如果用Oracle10g的JDBC驱动就没这么麻烦了,Hibernate+Oracle+CLOB的读写其实只要这样做:

1.在Oracle里设置某字段为clob类型。
2.在Hibernate的配置文件里使用网上下载的Oracle 10g最新的jdbc驱动。
3.实体类里把clob字段对应的属性类型设置为String。
4.hibernate的映射文件*.hbm.xml里把该字段对应的类型该为text。

然后就可以在程序里把它当成String随便用了。

补充:按照上面的方法又写了一个测试类,能够操作Clob字段了,但是启动JBOSS后就不能用了,后来找了很久才发现,原来我用的JBOSS的default/lib目录下也有一下老版本的Class12.jar,删除它换成最新的ojdbc14.jar就可以了。


分享到:
评论

相关推荐

    JAVA 网页打字测速

    3. **前端技术**:尽管标题未提及,但实现网页打字测速功能还需要HTML、CSS和JavaScript等前端技术。HTML用于构建网页结构,CSS负责样式设计,JavaScript则用于交互逻辑,例如计时、验证用户输入等。 4. **AJAX技术...

    String+Spring+Hibernate搭建的框架

    这个框架集合是Java开发领域中广泛使用的三大技术,它们分别是Spring框架、Hibernate持久化框架以及Struts(而不是String,可能是打字错误) MVC框架。下面我们将深入探讨这三个组件及其在构建Web应用中的作用。 **...

    spring所有jar包

    标签 "sprig年" 可能是打字错误,正确应该是 "Spring年度" 或者 "Spring框架",它强调了这个集合与Spring框架的年度更新有关,可能包含了不同版本的Spring库。 从压缩包子文件的文件名称列表 "jars" 我们可以推断,...

    JAVA开发的打字软件源程序Java实用源码整理learns

    【标签】"java"明确了这个话题的焦点是Java编程,包括但不限于语法、面向对象设计、异常处理、IO流、多线程、集合框架、网络编程等基础概念。此外,也可能涉及到更高级的主题,如反射、JVM内存模型、Spring框架、MVC...

    hibernate+spring+T

    "Thibernate"可能是打字错误,但在这里我们可以理解为讨论包括了事务管理。在JavaEE和Spring应用中,事务管理是确保数据一致性的重要部分。Spring提供了不同的事务管理策略,例如编程式事务管理和声明式事务管理。...

    spring学习

    描述中的 "spring java idea web jasb" 可能是指在集成开发环境IntelliJ IDEA(Idea)中进行Spring Java Web应用的开发,其中"jasb"可能是打字错误或者特定项目或技术的简称,但在这里我们主要聚焦Spring、Java和Web...

    Sring实现打印机

    这个例子可能是通过创建Spring Bean来模拟打字的动作,比如读取输入、处理数据并输出结果。 在标签中,“打字机例子”进一步确认了这是一个教学示例,用于理解和学习Spring如何处理特定的业务逻辑。这可能是为了...

    rr.rar_MPI_RR_ijmage_processing_spring

    标签“mpi rr ijmage processing spring”进一步确认了主题,其中“ijmage”可能是“image”的打字错误。这表明我们将深入学习如何利用MPI和RR算法优化图像处理任务,特别是在春季这个时间段内开展的活动或者课程。 ...

    CompilerDesign:2015 年Spring - 打字稿

    在本项目中,我们主要关注的是“CompilerDesign:2015 年Spring - 打字稿”,这是一个关于编译器设计的课程项目,使用TypeScript语言进行编写。TypeScript是JavaScript的一个超集,它提供了静态类型系统和其他高级...

    BRGD-Typing-Game:死者的打字启发了2021年Spring的BRGD迷你游戏

    《BRGD-Typing-Game:死者的打字启发了2021年Spring的BRGD迷你游戏》是一款基于打字玩法的互动游戏,由BRGD团队在2021年的春季开发。这款游戏的设计灵感源自于传统的打字练习,旨在通过游戏化的方式提升玩家的打字...

    基于Java架构的商务英语同传速录打字实训平台开发.pdf

    SpringBoot是一个基于Spring框架的项目,它简化了基于Spring的应用开发过程,提供了默认配置来帮助开发者快速启动和运行应用。Mybatisplus则是Mybatis的增强工具,在Mybatis的基础上只增加了一些功能特性,它简化了...

    Good web site for smvc

    标题和描述中提到了“Good web site for smvc”,这里指的应该是“Spring MVC”的学习网站,因为“smvc”可能是一个缩写或是打字错误,而Spring MVC是Java开发中常用的一个模型-视图-控制器(MVC)框架。Spring MVC...

    java 源码 ssh

    Spring提供了依赖注入(DI)和面向切面编程(AOP)等功能,Struts则主要用于处理MVC模式中的视图与控制器部分,而Hibernate则是一个强大的持久化框架,负责数据库操作。 【描述】提到的“spring mvc”是Spring框架...

    测试springmvc17

    【标签】"测试sedd"可能是打字错误,通常相关的标签可能是"SED"或"JEDD",但它们并不是常见的IT术语。如果是指"SSD"(固态硬盘),在Web应用中,它可以提高服务器响应速度,尤其对于大量读写操作的应用。 至于...

    spring-boot-angular2-starter:入门应用程序。 Spring Boot,Angular 2,TypeScript,Gulp,Gradle,SCSS

    所有与编译打字稿,为CSS加上前缀以及安装类型的交互都由gulp处理。 为了更方便地介绍,已在gradle中实现了安装node,npm和gulp的所有任务。动机我的目标是基本,简单且可配置的项目,以轻松地从Spring Boor和...

    基于SSM的社区论坛系统源码.zip

    "ssh"可能是打字错误,通常指的是Struts2、Spring和Hibernate的另一种流行Java Web开发框架组合。 【压缩包子文件的文件名称列表】虽然没有具体列出,但我们可以假设它会包含以下几类文件: 1. **源代码文件**:`....

    c语言大作业,打字游戏c_prj.zip

    这个C#实现的小游戏是一个简单的猜数字游戏,让玩家...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    structs hibernate

    标题 "structs hibernate" 可能是打字错误,应该是 "Structs Hibernate",这里可能指的是使用 Struts 框架与 Hibernate 框架整合进行开发的示例。Struts 是一个用于构建企业级 Java web 应用程序的 MVC(模型-视图-...

    java达内机构最全代码

    12. **Spring框架**:学习依赖注入(DI)和控制反转(IOC)原理,使用Spring进行AOP编程和事务管理。 13. **MyBatis**:一个持久层框架,简化数据库操作,结合XML或注解配置,实现SQL与Java代码的分离。 14. **...

    基于SSM的维修订单系统源码.zip

    “SSH”标签可能是指Spring、Struts和Hibernate的组合,但在本案例中,可能是由于打字错误或混淆,因为源码描述并未提及Hibernate。Spring Boot是现代Java应用的首选启动框架,它简化了Spring应用的配置,提供了默认...

Global site tag (gtag.js) - Google Analytics