Hibernate操作Blob数据

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-10-10 17:22
 


首先看数据库,数据库中新建一个BlobTable表,表中有两个字段,一个id(主键)一个picture字段是Blob类型字段。然后使用Hibernate向该数据库中写入和读取数据

在POJO类中picture属性用的是Blob类型数据。

下面看操作源码

package dao;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.math.BigDecimal;import java.sql.Blob;import org.hibernate.LobHelper;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import Factory.HibernateSessionFactory;import entity.Blobtable;public class BlobDao {private Session session = null;private Transaction tran = null;public BlobDao(){this.session = HibernateSessionFactory.getSession();}public void saveBlob(Blobtable bigdate,String path) throws IOException{/*InputStream in = this.getClass().getResourceAsStream(path);byte[] bytes = new byte[in.available()];in.read(bytes);in.close();*/File file = new File(path);FileInputStream fis = new FileInputStream(file);byte[] bytes = new byte[fis.available()];fis.read(bytes);LobHelper lh = session.getLobHelper();bigdate.setPicture(lh.createBlob(bytes));tran = session.beginTransaction();try{session.save(bigdate);tran.commit();System.out.println("插入成功!");}catch(Exception e){System.out.println("插入失败!");tran.rollback();}finally{HibernateSessionFactory.closeSession();fis.close();}}public void getBlob(BigDecimal id,String targetpath) throws Exception{String hql = "From Blobtable where id = ?";Query query = session.createQuery(hql);query.setBigDecimal(0, id);Blobtable bt = (Blobtable) query.uniqueResult();Blob image = bt.getPicture();InputStream in = image.getBinaryStream();OutputStream os = new FileOutputStream(targetpath);int n = -1;while((n=in.read())!=-1){os.write(n);}in.close();os.close();}}
package Test;import java.io.IOException;import java.math.BigDecimal;import dao.BlobDao;import entity.Blobtable;public class Test {public static void main(String[] args) {BlobDao bb = new BlobDao();Blobtable bt = new Blobtable();bt.setId(new BigDecimal(5));try {String path = "f:\\a.jpg";bb.saveBlob(bt, path);} catch (IOException e) {e.printStackTrace();}BlobDao bd = new BlobDao();try {bd.getBlob(new BigDecimal(1), "e:\\a.jpg");System.out.println("写出成功!");} catch (Exception e) {e.printStackTrace();}}}



  • 尽管现在有许多好的FTP应用程序,但服务器命令行ftp命令的应用程序仍然很多,下面就让爱站技术频道小编带你一起来学习详解Linux ftp 命令行中下载文件get与上传文件put的操作方法。

    尽管现在有许多好的FTP应用程序,但服务器命令行ftp命令的应用程序仍然很多,下面就让爱站技术频道小编带你一起来学习详解Linux ftp 命令行中下载文件get与上传文件put的操作方法。

    介绍:从本地以用户anok登录的机器192.168.0.16上通过ftp远程登录到192.168.0.6的ftp服务器上,登录用户名是peo。以下为使用该连接做的实验。

    查看远程ftp服务器上用户peo相应目录下的文件所使用的命令为:ls,登录到ftp后在ftp命令提示符下查看本地机器用户anok相应目录下文件的命令是:!ls。查询ftp命令可在提示符下输入:?,然后回车。

    1、从远程ftp服务器下载文件的命令格式:

    get 远程ftp服务器上当前目录下要下载的文件名 [下载到本地机器上当前目录时的文件名],如:

    get nmap_file [nmap]

    意思是把远程ftp服务器下的文件nmap_file下载到本地机器的当前目录下,名称更改为nmap。

    带括号表示可写可不写,不写的话是以该文件名下载。

    如果要往ftp服务器上上传文件的话需要去修改一下vsftpd的配置文件,名称是vsftpd.conf,在/etc目录下。要把其中的“#write_enable=YES”前面的“#”去掉并保存,然后重启vsftpd服务:

    sudo service vsftpd restart。 

    2、向远程ftp服务器上传文件的命令格式:

    put 本地机器上当前目录下要上传的文件名 [上传到远程ftp服务器上当前目录时的文件名],如:

    put sample.c [ftp_sample.c]

    意思是把本地机器当前目录下的文件smaple.c上传到远程ftp服务器的当前目录下,名称更改为ftp_sample.c。

    带括号表示可写可不写,不写的话是以该文件名上传。

    3、最后附上ftp常用命令,如下所示:

    FTPgt;open [ftpservername],和指定的远程Linux FTP服务器连接?
    FTPgt;user [username] [password],使用指定远程Linux FTP服务器的用户登录?
    FTPgt;pwd,显示远程Linux FTP服务器上的当前路径?
    FTPgt;ls,列出远程Linux FTP服务器上当前路径下的目录和文件?
    FTPgt;dir,列出远程Linux FTP服务器上当前路径下的目录和文件(同上)?
    FTPgt;mkdir [foldname],在远程Linux FTP服务器上当前路径下建立指定目录?
    FTPgt;rmdir [foldname],删除远程Linux FTP服务器上当前路径下的指定目录?
    FTPgt;cd [foldname],更改远程Linux FTP服务器上的工作目录?
    FTPgt;delete [filename],删除远程Linux FTP服务器上指定的文件?
    FTPgt;rename [filename] [newfilename],重命名远程Linux FTP服务器上指定的文件?
    FTPgt;close,从远程Linux FTP服务器断开但保留FTP命令参数提示?#p#分页标题#e#
    FTPgt;disconnect,从远程Linux FTP服务器断开但保留FTP命令参数提示(同上)?
    FTPgt;bye,结束和远程Linux FTP服务器的连接。
    FTPgt;quit,结束和远程Linux FTP服务器的连接(同上)。
    FTPgt;!,直接从远程Linux FTP服务器进入到本地shell中?
    FTPgt;exit,(接上步)从本地shell环境中返回到远程Linux FTP服务器环境下?
    FTPgt;!ls,列出本地机器上当前路径下的目录和文件?
    FTPgt;lcd [foldname],更改本地机器的工作目录?
    FTPgt;?,显示ftp命令说明?
    FTPgt;help,显示ftp命令说明(同上)?

    总结

    以上所述是爱站技术频道小编给大家介绍的详解Linux ftp 命令行中下载文件get与上传文件put的操作方法,希望对大家有所帮助。

  • 相关推荐:

  • 详解Linux ftp 命令行中下
  • 携程解释瘫痪原因:员工
  • 5.28黄金走势分析 操作建
  • iOS12在iPad上的体验iOS12手
  • 逆水寒血河输出手法解析
  • excel表格的基本操作技巧
  • DOS基础操作命令大全
  • bios和cmos有什么区别
  • 电脑加内存条操作步骤与
  • 如何彻底清理注册表?小
  • 网站内容禁止违规转载,转载授权联系中国云计算网