Hibernate4对文件的操作

Hibernate4对文件的操作

博客分类:


 

Hibernate&MyBatis

 

Druid数据库驱动: Hibernate操作数据库文件不会报错,jdts容易报错。 

注解: 
在hibernate Annotation中,实体BLOB、CLOB类型的注解与普通的实体属性有些不同,具体操作如下:BLOB类型,类型声明为byte[]: 

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即可: 

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;  
  
    ......  
  
}


两种方式,保存到数据库: 

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;  
  
    }  
  
}



转载于:https://my.oschina.net/u/267384/blog/291340

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值