在Hibernate中实现Blob和Clob字段的数据访问
来源:互联网 发布:数据库分析师 编辑:程序博客网 时间:2024/05/04 05:02
在JDBC中提供Blob接口
1) java.sql.Blob接口中的主要方法介绍:
l getBinaryStream():以流的形式检索此Blob实例指定的BLOB值,其返回值为InputStream对象
l Long length():返回由此BLOb对象指定的BLOB值中的字节数
2) 读出Blob类型的字段数据方法:
利用Blob接口中的getBinaryStream()方法,可以获得inputStream对象,从而获得二进制的数据流,转换为某个输出流。
在JDBC中提供Clob接口
1) java.sql.Clob接口中的主要方法介绍:
l getCharacterStream():以java.io.Reader对象形式检索此Clob对象指定的CLOB值
l Length():检索此Clob对象指定的CLOB对象中的字符数
l getSubString(long pos, int length):检索此Clob对象指定的CLOB值中指定的子字符串的副本
2) 读出Clob类型的字段数据方法:
读出Clob接口中的getSubString(long pos, int length)方法可以获得该内容的复制件。
Org.hibernate包中提供了HIbernate类。在该类中提供了createBlob和createClob 方法,能够很简单的创建出Blob和Clob类型的对象
l createBlob方法定义
Public static Blob createBlob(InputStream stream) throws IOException
l createClob 方法定义
Public static Clob createClob(String string)
实例:
持久类TUser的代码示例:
package com.hibernate;
import java.io.Serializable;
import java.sql.Blob;
import java.sql.Clob;
public class TUser implements Serializable{
private Integer id;
private String name;
private Integer age;
private Blob picture;
private Clob resume;
public TUser(){}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Blob getPicture() {
return picture;
}
public void setPicture(Blob picture) {
this.picture = picture;
}
public Clob getResume() {
return resume;
}
public void setResume(Clob resume) {
this.resume = resume;
}
}
提供一个TUser和tuser数据库表之间的映射文件
<hibernate-mapping>
<class name="com.hibernate.TUser" table="tuser" >
<id name="id" type="java.lang.Integer">
<generator class="increment" />
</id>
<property name="name" type="java.lang.String" column="name"></property>
<property name="age" type="java.lang.Integer" column="age"></property>
<property name="picture" type="java.sql.Blob" column="picture"></property>
<property name="resume" type="java.sql.Clob" column="resume"></property>
</class>
</hibernate-mapping>
添加一个测试代码类:
public class TestUser {
public TestUser(){}
public void insertUserInfoToDB() throws IOException{
Session session = null;
Transaction tx = null;
session = HibernateUtil.currentSession();
try{
tx = session.beginTransaction();
TUser user = new TUser();
user.setAge(new Integer(22));
user.setName("lianglong");
FileInputStream imgi = new FileInputStream("C:/aa.png");
Blob img = Hibernate.createBlob(imgi);
user.setPicture(img);
Clob resume = Hibernate.createClob("这是clob字段的文本内容");
user.setResume(resume);
session.save(user);
tx.commit();
}
catch(Exception e){
e.printStackTrace();
}
finally{
session.close();
}
}
public void selectUserInfoFromDB() throws IOException{
Session session = null;
session = HibernateUtil.currentSession();
try{
Transaction tx = session.beginTransaction();
TUser user = new TUser();
user = (TUser)session.load(TUser.class, new Integer(1));
Clob resume = user.getResume();
System.out.println(resume.getSubString(1, (int)resume.length()));
Blob img = user.getPicture();
InputStream iS = img.getBinaryStream();
FileOutputStream fos = new FileOutputStream("d:/aa.png");
byte[] buf = new byte[1024];
int len;
while ((len=iS.read(buf))!=-1){
fos.write(buf,0,len);
}
fos.close();
iS.close();
tx.commit();
}
catch(Exception e){
e.printStackTrace();
}
finally{
session.close();
}
}
public static void main(String[] args) throws IOException {
TestUser oneTestUser = new TestUser();
oneTestUser.insertUserInfoToDB();
oneTestUser.selectUserInfoFromDB();
}
}
- 在Hibernate中实现Blob和Clob字段的数据访问
- 标准的hibernate存取blob和clob字段的方法
- spring+hibernate中clob、blob字段的处理方法
- Hibernate读写Clob和Blob类型字段
- Hibernate读写Clob和Blob类型字段
- Hibernate读写Clob和Blob类型字段
- oracle中导出和导入含有blob,clob字段的表数据
- Oracle中BLOB和CLOB字段的操作
- Hibernate实现Clob和Blob对象的存取
- Hibernate实现Clob和Blob对象的存取
- Hibernate实现Clob和Blob对象的存取
- Hibernate实现Clob和Blob对象的存取
- 在SOAP消息中传输BLOB和CLOB数据
- hibernate映射clob blob字段
- Hibernate Blob和Clob
- Oracle中BLOB和CLOB数据的读写
- hibernate对clob和blob的操作
- 关于Oracle的BLOB、CLOB字段的操作方法(分JDBC和Hibernate两种)
- tomcat 与eclipse集成
- 第二章(2)oracle 统计信息是什么
- Thinkphp配置
- 一条内裤到底多脏
- MYSQL中的my.ini或my.cnf配置说明
- 在Hibernate中实现Blob和Clob字段的数据访问
- MYSQL参数配置优化说明
- window mysql命令
- 杭电 hdu 2544 最短路
- 坚持不懈
- db mysql error_list
- 名企工资(转)
- SQL语句练习-使用函数
- 随笔1