hibernate操作大文本或文件
1. BLOB全称为二进制大型对象(Binary Large Object)。
它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节
2. CLOB全称为字符大型对象(Character Large Object)。
它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,
Picture.hbm.xml:
测试类:保存图片和文本
读出图片:
1. BLOB全称为二进制大型对象(Binary Large Object)。
它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节
2. CLOB全称为字符大型对象(Character Large Object)。
它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,
不支持宽度不等的字符集。可存储的最大大小为4G字节
项目中一般用String类型来代替CLOB来保存文本。
Javabean:
package com.mxf.bean;
import java.sql.Blob;
public class Picture {
private String content;//大文本
private Blob image;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Blob getImage() {
return image;
}
public void setImage(Blob image) {
this.image = image;
}
}
Picture.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2015-11-24 9:22:30 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.mxf.bean.Picture" table="PICTURE">
<id name="id" type="int">
<column name="ID" />
<generator class="native" />
</id>
<property name="content" type="string">
<column name="CONTENT" /><!-- sql-type="mediumtext"-->
</property>
<property name="image" type="blob">
<column name="IMAGE" />
</property>
</class>
</hibernate-mapping>
测试类:保存图片和文本
package test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import com.mxf.bean.Picture;
public class Test {
SessionFactory sessionFactory;
StandardServiceRegistry standardServiceRegistry;
Session session;
Transaction tx;
@Before
public void init(){
standardServiceRegistry = new StandardServiceRegistryBuilder().configure().build();
sessionFactory = new MetadataSources(standardServiceRegistry).buildMetadata().buildSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
}
@After
public void distory(){
tx.commit();
session.close();
sessionFactory.close();
StandardServiceRegistryBuilder.destroy(standardServiceRegistry);
}
@org.junit.Test
public void test() throws IOException, SQLException {
Picture picture = new Picture();
InputStream stream = new FileInputStream("Koala.jpg");
Blob image = Hibernate.getLobCreator(session).createBlob(stream, stream.available());
picture.setContent("我是一张图片");
picture.setImage(image);
session.save(picture);
}
}
读出图片:
package test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import com.mxf.bean.Picture;
public class Test {
SessionFactory sessionFactory;
StandardServiceRegistry standardServiceRegistry;
Session session;
Transaction tx;
@Before
public void init(){
standardServiceRegistry = new StandardServiceRegistryBuilder().configure().build();
sessionFactory = new MetadataSources(standardServiceRegistry).buildMetadata().buildSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
}
@After
public void distory(){
tx.commit();
session.close();
sessionFactory.close();
StandardServiceRegistryBuilder.destroy(standardServiceRegistry);
}
@org.junit.Test
public void test() throws IOException, SQLException {
Picture picture = session.get(Picture.class, 1);
Blob image = picture.getImage();
InputStream in = image.getBinaryStream();
System.out.println(in.available());
}
}