Druid數據庫驅動: Hibernate操做數據庫文件不會報錯,jdts容易報錯。
註解:
在hibernate Annotation中,實體BLOB、CLOB類型的註解與普通的實體屬性有些不一樣,具體操做以下:BLOB類型,類型聲明爲byte[]:
spring
Java代碼 private byte[] content; @Lob @Basic (fetch = FetchType.LAZY) @Column (name = "CONTENT", columnDefinition = "BLOB",nullable=true) public byte[] getContent() { return this.content; } public void setContent(byte[] content) { this.content = content; }
CLOB類型,類型聲明爲String便可:
sql
Java代碼 private String remark; @Lob @Basic (fetch = FetchType.EAGER) @Column (name="REMARK", columnDefinition="CLOB", nullable=true) public String getRemark() { return this.remark; } public void setRemark(String recvdocRemark) { this.remark = remark; }
按照以上的設置實體類的註解就搞定了。
數據庫
Java代碼 LobHelper.createBlob() Hibernate.getLobCreator(getCurrentSession()).createBlob(stream, length) Java代碼 package com.pandy.ssh4.domian; // Generated 2013-3-13 16:41:18 by Hibernate Tools 4.0.0 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; /** * Table4 generated by hbm2java */ @SuppressWarnings("serial") @Entity @Table (name = "TABLE4", schema = "dbo", catalog = "Test") public class Table4 implements java.io.Serializable { private int t4Id; private String filename1; private String content; private String filename2; private byte[] fileContent; ...... } Java代碼 package com.pandy.ssh4.domian; // Generated 2013-3-13 16:41:18 by Hibernate Tools 4.0.0 import java.sql.Blob; import java.sql.Clob; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; /** * Table4 generated by hbm2java */ @SuppressWarnings("serial") @Entity @Table (name = "TABLE4", schema = "dbo", catalog = "Test") public class Table41 implements java.io.Serializable { private int t4Id; private String filename1; private Clob content; private String filename2; private Blob fileContent; ...... }
兩種方式,保存到數據庫:
session
Java代碼 package com.pandy.ssh4.dao.impl; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import java.sql.Blob; import java.sql.Clob; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.stereotype.Repository; import com.pandy.ssh4.dao.BasicDao; import com.pandy.ssh4.domian.Table4; import com.pandy.ssh4.domian.Table41; @Repository public class Table4Dao extends BasicDao { public StringBuffer readerTxtFile() { StringBuffer sb; BufferedReader bf; try { sb = new StringBuffer(); bf = new BufferedReader(new FileReader(new File("d:\\a.txt"))); String str = null; while ((str = bf.readLine()) != null) { sb.append(str); sb.append("\n"); } bf.close(); return sb; } catch (Exception e) { throw new RuntimeException(e.getMessage()); } finally { } } public byte[] getFileBtyes() { InputStream in; try { in = new FileInputStream(new File("d:\\a.jpg")); byte[] bytes = new byte[in.available()]; in.read(bytes); in.close(); return bytes; } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } // 第一種方式 public void insertFile1() { try { InputStream in = new FileInputStream(new File("d:\\a.jpg")); StringBuffer sb = readerTxtFile(); Session session = getCurrentSession(); Clob clob = Hibernate.getLobCreator(session).createClob(sb.toString()); Blob blob = Hibernate.getLobCreator(session).createBlob(in,in.available()); Table41 table41 = new Table41(); table41.setFilename1("a.txt"); table41.setContent(clob); table41.setFilename2("a.jpg"); table41.setFileContent(blob); session.save(table41); } catch (Exception e) { e.printStackTrace(); } } // 第二種方式 public void insertFile2() { try { Session session = getCurrentSession(); StringBuffer sb = readerTxtFile(); byte[] bytes = getFileBtyes(); Table4 table4 = new Table4(); table4.setFilename1("a.txt"); table4.setContent(sb.toString()); table4.setFilename2("a.jpg"); table4.setFileContent(bytes); session.save(table4); } catch (Exception e) { e.printStackTrace(); } } // 讀取操做1 @SuppressWarnings("rawtypes") public Table4 getTable4() { Session session = getCurrentSession(); String hql = "from Table4"; Query query = session.createQuery(hql); List list = query.list(); if (list != null && !list.isEmpty()) { return (Table4) list.get(0); } else return null; } // 讀取操做2 @SuppressWarnings("rawtypes") public Table41 getTable41() { Session session = getCurrentSession(); String hql = "from Table41"; Query query = session.createQuery(hql); List list = query.list(); if (list != null && !list.isEmpty()) { return (Table41) list.get(0); } else return null; } }