一,操作blob图像数据
数据表login2:
name | type | 约束 |
id | number(5) | 主健 |
username | varchar2(20 |
password | varchar2(20) |
image | blob |
description | clob |
配置文件不在编写
java代码如下:
package dao;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import entity.Login2;
public class Login2Dao {
private Session session = null;
private Transaction tran = null;
private static final ThreadLocal<Session> s = new ThreadLocal<Session>();
public Login2Dao() {
SessionFactory factory = new Configuration().configure()
.buildSessionFactory();
this.session = s.get();
if (this.session == null) {
session = factory.openSession();
s.set(session);
System.out.println(session == null);
}
System.out.println(session == null);
// session.close();
}
public int saveBlog(Login2 login, String imagePath) {
// 读取图片的二进制数据
try {
InputStream in = this.getClass().getResourceAsStream(imagePath);
System.out.println("输入流" + in == null);
byte[] buffer = new byte[in.available()];
in.read(buffer);
in.close();
login.setImage(Hibernate.createBlob(buffer));
tran = session.beginTransaction();
session.save(login);
tran.commit();
return login.getId();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public void getBlob(int id, String targetPath) throws SQLException,
IOException {
// 使用hibernate读取blob字段
Login2 login = (Login2) session.get(Login2.class, id);
Blob image = login.getImage();
// 使用javaio将blob内容复制到文件
InputStream in = image.getBinaryStream();
OutputStream out = new FileOutputStream(targetPath);
int n = -1;
while ((n = in.read()) != -1) {
out.write(n);
}
in.close();
out.close();
}
}
//测试类
package test;
import java.io.IOException;
import java.sql.SQLException;
import dao.Login2Dao;
import entity.Login2;
public class Test2 {
public static void main(String[] args) throws SQLException, IOException {
Login2 login=new Login2();
login.setPassword("1111");
login.setUsername("mada");
int id=new Login2Dao().saveBlog(login,"../person.jpg");
//System.out.println("id=="+id);
//new Login2Dao().getBlob(id, "e:\\org.jpg");
new Login2Dao().getBlob(3, "person2.jpg");
}
}
提示:在操作时,文件路径不能写绝对路径,看网上可以,还待试验
二。操作clob(针对的是字符数据)
package dao;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.SQLException;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import entity.Login2;
public class ClobLogin2Dao {
//会话对象
private Session session=null;
//事务对象
private Transaction tran=null;
//threadLocal变量
private static final ThreadLocal<Session> s=new ThreadLocal<Session>();
//构造方法
public ClobLogin2Dao(){
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
this.session=s.get();//怎么理解
if(session==null){
this.session=factory.openSession();
s.set(session);
}
}
//保存方法
public int saveClob(Login2 login,String description){
tran=this.session.beginTransaction();//开启事务
login.setDescription(Hibernate.createClob(description));//把字符串转为CLOB
session.save(login);
tran.commit();
return login.getId();
}
//输出
public String getClob(int id) throws SQLException, IOException{
String str="";
Login2 login=(Login2)this.session.get(Login2.class, id);
Clob desc=login.getDescription();
//把clob转换成String
Reader rd=desc.getCharacterStream();
BufferedReader br=new BufferedReader(rd);
/*while((str=br.readLine())==null){
System.out.println(str);
}*/
str=br.readLine();
return str;
}
}
//测试类
package test;
import java.io.IOException;
import java.sql.SQLException;
import dao.ClobLogin2Dao;
import entity.Login2;
public class TestClob {
public static void main(String[] args) throws SQLException, IOException {
Login2 login=new Login2();
login.setPassword("22222");
login.setUsername("bbbs");
String description="马达,成就优异";
int id=new ClobLogin2Dao().saveClob(login, description);
System.out.println("id=="+id);
String desc=new ClobLogin2Dao().getClob(id);
//new ClobLogin2Dao().getClob(17);
System.out.println(desc);
}
}
注:clob斩时只实现到能存多行,取时只能取单行
分享到:
相关推荐
Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象Hibernate操作持久化对象
Hibernate操作数据库的方法.doc
hibernate操作全面配置讲解 让你知道如何使用myeclipse来配置一个hibernate的项目。
详细介绍Hibernate操作数据库的步骤,附例图
hibernate 操作数据库的详细图解。
使用Hibernate操作数据库的7个步骤.txt ,很简单的
hibernate数据库操作jar包
Hibernate的级联操作(增,删,该)
Hibernate基本数据操作方法 java struts hibernate
使用Hibernate映射Blob,Clob字段,并对这些字段完成存,取功能
分别使用Hibernate和JDBC操作数据库
Hibernate连接SQLite配置步骤: 1、添加SQLite库: 1.1、将两个jar包:com.zy.hibernate.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下; 2、配置hibernate: 2.1、将...
Hibernate操作Hibernate操作Hibernate操作
关于Hibernate操作持久化类的Criteria方式的书本方法
hibernate环境搭建基本操作封装,使用mysql开源数据库
\hibernate操作心得.doc \hibernate操作心得.doc 很好用的
Hibernate对BLOB CLOB操作,详细的操作说明
◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言 ◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,...
hibernate更新操作 hibernate更新操作