hibernate 保存大字段数据到数据库(sqlserver)

这里是以sqlserver为例子的 ,oracle的特殊性暂不考虑。

我感觉大字段的保存应该有如下几步:

1 首先你必须得到一个代表上传文件的数据流;

2 需要一张表存储大字段数据:包括内容,类型(mimetype),这就要看你读取时如何操作文件了:

 如果你想缓存到硬盘上的话可能需要一个文件路径字段,等等。

3 进行保存操作

假设你已经能够获得文件流对象了应该是一个inputstream,我们可以编写下面的代码保存数据到数据库:

       tran = session.beginTransaction();
     
       TblEAccessory test=new TblEAccessory();
    test.setId("testId");
    test.setFileCacheName(ufile.getBaseFileName());
  test.setFileExt(ufile.getExt());

//这里没有设置mimetype,应该设置的

    Blob b = Hibernate.createBlob(ufile.fileItem.getInputStream());
    test.setFileContent(b);
    session.save(test);
    tran.commit();

 

这里的ufile对象是封装了fileupload的fileItem的一个类的实例,主要是存储了上传文件的流。最关键的是

ufile.fileItem.getInputStream(),得到了文件的流对象,怎么得到并不是这里需要讨论的问题。

然后我们创建了一个hibernate 大字段,将值设置上就行了。

 

--为什么没使用oracle作例子,因为好风最近做的项目老是使用sqlserver;再加上听说oracle的最新驱动已经解决了hibernate大字段的特殊操作,还没试过,看看。

--使用hibernate进行大字段操作还可以通过自定义类型实现,公司里用的就是这个,不过我懒,还是喜欢这种方法

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值