方式一:使用byte[] 和 char[] 映射blob 和clob类型
<p><span style="font-weight: normal;">import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Entity;
@Entity
@Table(name="bigdata1")
public class BigData1 {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Lob
@Column(name="icon")
private byte[] icon;
@Lob
@Column
private char[] msg;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public byte[] getIcon() {
return icon;
}
public void setIcon(byte[] icon) {
this.icon = icon;
}
public char[] getMsg() {
return msg;
}
public void setMsg(char[] msg) {
this.msg = msg;
}
public BigData1(int id, byte[] icon, char[] msg) {
super();
this.id = id;
this.icon = icon;
this.msg = msg;
}
public BigData1() {
super();
}
}</span>
</p>
<p><span style="font-weight: normal;">import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Entity;
@Entity
@Table(name="bigdata1")
public class BigData1 {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Lob
@Column(name="icon")
private byte[] icon;
@Lob
@Column
private char[] msg;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public byte[] getIcon() {
return icon;
}
public void setIcon(byte[] icon) {
this.icon = icon;
}
public char[] getMsg() {
return msg;
}
public void setMsg(char[] msg) {
this.msg = msg;
}
public BigData1(int id, byte[] icon, char[] msg) {
super();
this.id = id;
this.icon = icon;
this.msg = msg;
}
public BigData1() {
super();
}
}</span>
</p>
二:使用sql包下面的 Blob了 Clob类
<span style="font-weight: normal;">import java.sql.Blob;
import java.sql.Clob;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Entity;
@Entity
@Table(name="bigdata2")
public class BigData2 {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Lob
@Column(name="icon",nullable=false)
private Blob icon;
@Lob
@Column(nullable=false)
private Clob msg;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public BigData2(int id, Blob icon, Clob msg) {
super();
this.id = id;
this.icon = icon;
this.msg = msg;
}
public Blob getIcon() {
return icon;
}
public void setIcon(Blob icon) {
this.icon = icon;
}
public Clob getMsg() {
return msg;
}
public void setMsg(Clob msg) {
this.msg = msg;
}
public BigData2() {
super();
}
}</span>
<span style="font-weight: normal;">import java.sql.Blob;
import java.sql.Clob;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Entity;
@Entity
@Table(name="bigdata2")
public class BigData2 {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Lob
@Column(name="icon",nullable=false)
private Blob icon;
@Lob
@Column(nullable=false)
private Clob msg;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public BigData2(int id, Blob icon, Clob msg) {
super();
this.id = id;
this.icon = icon;
this.msg = msg;
}
public Blob getIcon() {
return icon;
}
public void setIcon(Blob icon) {
this.icon = icon;
}
public Clob getMsg() {
return msg;
}
public void setMsg(Clob msg) {
this.msg = msg;
}
public BigData2() {
super();
}
}</span>
3:测试代码
<span style="font-weight: normal;">import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.Reader;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;
public class BigData1Test {
private static Configuration configuration = null;
private static SessionFactory sessionFactory = null;
private static org.hibernate.service.ServiceRegistry serviceRegistry = null;
private static Session session = null;
static{
configuration = new Configuration();
// configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/test?characterEncoding=utf-8");
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session = sessionFactory.getCurrentSession();
}
public static void main(String[] args) throws Exception {
session.beginTransaction();
session.getTransaction().commit();
}
/**
* 对BigData1.class 的存取
* @throws Exception
*/
public static void save1() throws Exception{
BigData1 bd = new BigData1();
File f = new File("c:/a.jpg");
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[fis.available()];
fis.read(b);
bd.setIcon(b);
BufferedReader br = new BufferedReader(new FileReader(new File("c:/b.txt")));
StringBuffer sb = new StringBuffer();
char[] c = new char[512];
int i = 0;
while((i = br.read(c)) != -1){
sb.append(new String(c, 0, i));
}
bd.setMsg(sb.toString().toCharArray());
session.save(bd);
}
public static void get1() throws Exception{
BigData1 bd = (BigData1) session.get(BigData1.class, 11);
FileOutputStream fos = new FileOutputStream(new File("c:/a_a.jpg"));
fos.write(bd.getIcon());
fos.flush();
fos.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:/a_a.txt")));
bw.write(new String(bd.getMsg()));
bw.flush();
bw.close();
}
/**
* 是对 BigData2.class 的存取
* @throws Exception
*/
public static void save2() throws Exception{
BigData2 bd = new BigData2();
FileInputStream fis = new FileInputStream(new File("c:/a.jpg"));
bd.setIcon(Hibernate.getLobCreator(session).createBlob(fis,fis.available()));
BufferedReader br = new BufferedReader(new FileReader(new File("c:/a.txt")));
StringBuffer sb = new StringBuffer();
char[] c = new char[512];
int i = 0;
while((i = br.read(c)) != -1){
sb.append(new String(c, 0, i));
}
bd.setMsg(Hibernate.getLobCreator(session).createClob(sb.toString()));
session.save(bd);
}
public static void get2() throws Exception{
BigData2 bd = (BigData2) session.get(BigData2.class, 5);
FileOutputStream fos = new FileOutputStream(new File("c:/a_a.jpg"));
byte[] b = new byte[1024];
InputStream is = bd.getIcon().getBinaryStream();
int len = 0;
while((len = is.read(b)) != -1){
fos.write(b, 0, len);
}
fos.flush();
fos.close();
is.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:/a_a.txt")));
Reader r = bd.getMsg().getCharacterStream();
char[] c = new char[512];
while((len = r.read(c)) != -1){
bw.write(c, 0, len);
}
bw.flush();
bw.close();
r.close();
}
}</span>
<span style="font-weight: normal;">import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.Reader;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;
public class BigData1Test {
private static Configuration configuration = null;
private static SessionFactory sessionFactory = null;
private static org.hibernate.service.ServiceRegistry serviceRegistry = null;
private static Session session = null;
static{
configuration = new Configuration();
// configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/test?characterEncoding=utf-8");
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session = sessionFactory.getCurrentSession();
}
public static void main(String[] args) throws Exception {
session.beginTransaction();
session.getTransaction().commit();
}
/**
* 对BigData1.class 的存取
* @throws Exception
*/
public static void save1() throws Exception{
BigData1 bd = new BigData1();
File f = new File("c:/a.jpg");
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[fis.available()];
fis.read(b);
bd.setIcon(b);
BufferedReader br = new BufferedReader(new FileReader(new File("c:/b.txt")));
StringBuffer sb = new StringBuffer();
char[] c = new char[512];
int i = 0;
while((i = br.read(c)) != -1){
sb.append(new String(c, 0, i));
}
bd.setMsg(sb.toString().toCharArray());
session.save(bd);
}
public static void get1() throws Exception{
BigData1 bd = (BigData1) session.get(BigData1.class, 11);
FileOutputStream fos = new FileOutputStream(new File("c:/a_a.jpg"));
fos.write(bd.getIcon());
fos.flush();
fos.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:/a_a.txt")));
bw.write(new String(bd.getMsg()));
bw.flush();
bw.close();
}
/**
* 是对 BigData2.class 的存取
* @throws Exception
*/
public static void save2() throws Exception{
BigData2 bd = new BigData2();
FileInputStream fis = new FileInputStream(new File("c:/a.jpg"));
bd.setIcon(Hibernate.getLobCreator(session).createBlob(fis,fis.available()));
BufferedReader br = new BufferedReader(new FileReader(new File("c:/a.txt")));
StringBuffer sb = new StringBuffer();
char[] c = new char[512];
int i = 0;
while((i = br.read(c)) != -1){
sb.append(new String(c, 0, i));
}
bd.setMsg(Hibernate.getLobCreator(session).createClob(sb.toString()));
session.save(bd);
}
public static void get2() throws Exception{
BigData2 bd = (BigData2) session.get(BigData2.class, 5);
FileOutputStream fos = new FileOutputStream(new File("c:/a_a.jpg"));
byte[] b = new byte[1024];
InputStream is = bd.getIcon().getBinaryStream();
int len = 0;
while((len = is.read(b)) != -1){
fos.write(b, 0, len);
}
fos.flush();
fos.close();
is.close();
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:/a_a.txt")));
Reader r = bd.getMsg().getCharacterStream();
char[] c = new char[512];
while((len = r.read(c)) != -1){
bw.write(c, 0, len);
}
bw.flush();
bw.close();
r.close();
}
}</span>