Spring让LOB数据操作变得简单易行[Java编程]
本文“Spring让LOB数据操作变得简单易行[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
概述
LOB 代表大对象数据,包含 BLOB 和 CLOB 两种范例,前者用于存储大块的二进制数据,如图片数据,视频数据等,此后者用于存储长文本数据,如论坛的帖子内容,产品的具体描写等.值得注意的是:在差别的数据库中,大对象对应的字段范例是不尽相同的,如 DB2 对应 BLOB/CLOB,MySql 对应 BLOB/LONGTEXT,SqlServer 对应 IMAGE/TEXT.需求指出的是,有些数据库的大对象范例可以象简单范例一样拜候,如 MySql 的 LONGTEXT 的操作方法和 VARCHAR 范例一样.在普通情形下, LOB 范例数据的拜候方法差别于别的简单范例的数据,我们常常会以流的方法操作 LOB 范例的数据.此外,LOB 范例数据的拜候不是线程安全的,需求为其单独分配呼应的数据库资源,并在操作完成后释放资源.最后,Oracle 9i 非常有本性地采取非 JDBC 尺度的 API 操作 LOB 数据.全部这些情形给编写操作 LOB 范例数据的程序带来挑衅,Spring 在 org.springframework.jdbc.support.lob 包中为我们供应了呼应的帮忙类,以便我们轻松应对这头拦路虎.
Spring 大大降低了我们处理 LOB 数据的难度.首先,Spring 供应了 NativeJdbcExtractor 接口,您可以在差别环境里挑选呼应的实现类从数据源中获得本地 JDBC 对象;其次,Spring 通过 LobCreator 接口撤消了差别数据厂商操作 LOB 数据的差别,并供应了成立 LobCreator 的 LobHandler 接口,您只要按照底层数据库范例挑选符合的 LobHandler 举行配置便可.
本文将具体地报告通过 Spring JDBC 插入和拜候 LOB 数据的具体历程.不管是以块的方法还是以流的方法,您都可以通过 LobCreator 和 LobHandler 便利地拜候 LOB 数据.关于 ORM 框架来说,JPA 拥有自身处理 LOB 数据的配置范例,Spring 为 Hibernate 和 iBatis 辨别供应了 LOB 数据范例的配置类,您仅需求利用这些类举行简单的配置便可以像普通范例一样操作 LOB 范例数据.
本地 JDBC 对象
当您在 Web 利用服务器或 Spring 中配置数据源时,从数据源中返回的数据衔接对象是本地 JDBC 对象(如 DB2Connection、OracleConnection)的代理类,这是因为数据源需求改变数据衔接一些原有的行为以便对其举行掌握:如调用 Connection#close() 办法时,将数据衔接返回到衔接池中而非将其真的关闭.
在拜候 LOB 数据时,按照数据库厂商的差别,大概需求利用被代理前的本地 JDBC 对象(如 DB2Connection 或 DB2ResultSet)特有的 API.为了从数据源中获得本地 JDBC 对象, Spring 定义了 org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor 接口并供应了呼应的实现类.NativeJdbcExtractor 定义了从数据源中抽取本地 JDBC 对象的若干办法:
办法 | 阐明 |
Connection getNativeConnection(Connection con) | 获得本地 Connection 对象 |
Connection getNativeConnectionFromStatement(Statement stmt) | 获得本地 Statement 对象 |
PreparedStatement getNativePreparedStatement(PreparedStatement ps) | 获得本地 PreparedStatement 对象 |
ResultSet getNativeResultSet(ResultSet rs) | 获得本地 ResultSet 对象 |
CallableStatement getNativeCallableStatement(CallableStatement cs) | 获得本地 CallableStatement 对象 |
有些简单的数据源仅对 Connection 对象举行代理,这时可以直接利用 SimpleNativeJdbcExtractor 实现类.但有些数据源(如 Jakarta Commons DBCP)会对全部的 JDBC 对象举行代理,这时,就需求按照具体的情形挑选合适的抽取器实现类了.下表列出了差别数据源本地 JDBC 对象抽取器的实现类:
数据源范例 | 阐明 |
WebSphere 4 及以上版本的数据源 | org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractor |
WebLogic 6.1+ 及以上版本的数据源 | org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor |
JBoss 3.2.4 及以上版本的数据源 | org.springframework.jdbc.support.nativejdbc.JBossNativeJdbcExtractor |
C3P0 数据源 | org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor |
DBCP 数据源 | org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor |
ObjectWeb 的 XAPool 数据源 | org.springframework.jdbc.support.nativejdbc.XAPoolNativeJdbcExtractor |
以上是“Spring让LOB数据操作变得简单易行[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |