关于blob与流互转的问题

   日期:2020-06-05     浏览:284    评论:0    
核心提示:网上有好多blob与byte[]互相转换的代码,但是很难找到流直接写入到数据库的。显然流写入效率更高,内存占用更少(不需要把所有数据放到内存里面),一下便是代码(基于SpringDataJPA的版本的JDBC的话实现类同)importorg.hibernate.Hibernate;importorg.hibernate.Session;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springfra

网上有好多blob与byte[]互相转换的代码,但是很难找到流直接写入到数据库的。显然流写入效率更高,内存占用更少(不需要把所有数据放到内存里面),以下便是代码(基于Spring Data JPA的版本的 JDBC的话实现类同)

import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.SQLException;

@Component
public class BlobUtil {
    private final static Logger logger = LoggerFactory.getLogger(BlobUtil.class);
    @Autowired
    private EntityManager entityManager;

    private Session session;

    @PostConstruct
    public void init() {
        entityManager = entityManager.getEntityManagerFactory().createEntityManager();
        session = entityManager.unwrap(Session.class);
    }

    public InputStream getStream(Blob blob) {
        try {
            if (blob != null) {
                return blob.getBinaryStream();
            }
        } catch (SQLException e) {
            logger.error("转化出现错误 {}", e);
        }
        return null;
    }

    public Blob getBlob(InputStream inputStream) {
        if (inputStream != null) {
            try {
                return Hibernate.getLobCreator(session).createBlob(inputStream, inputStream.available());
            } catch (IOException e) {
                logger.error("转化出现错误 {}", e);
            }
        }
        return null;
    }
}

 

 

 
标签: 文章标签: java
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服