如何利用jsp+hibernate将图片存储的orcale数据库中

goldenapple72 2004-11-12 01:26:31
我做了一个页面,想利用jsp+hibernate将图片存储的orcale中,就是说,我在jsp的页面表单里有上传图片的一项,当提交后, 把图片写到我的orcale数据库中,关键问题是要用到hibernate机制,不能用sql,怎么样才能做到这一点呢,请dx们帮帮我,好吗,十分感谢,请详细的说明,谢了, 如果分不够,我在给,这个问题对我很重要,再次说谢谢!!!
...全文
182 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
还有,在我的项目中怎么引入不了oracle.sql.BLOB这个啊,怎么能把这个引入啊,在哪引入啊
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
也就是说在vo中还要定义一个blob类型的字段,是吗,那定义了两个字段,一个是byte[],一个是blob,都是关于图片的,那他们之间怎么转换啊,怎么用啊
我比较笨,希望没有让你感到很烦
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
数据库是BLOB类型字段Bimage,但是页面上接收过去却是byte[]类型Aimage,所以要用两个类型做转换。就是通过流方式,把Aimage写入到Bimage,也就是递交到数据库了。
当然如果你这么做,直接把Blob类型处理至数据库,代码会很难看,而且很乱,是可以实现功能的。
你自己选择吧。
www.hibernate.org.cn
这里多看看。
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
十分感谢你的帮助,但是你说在vo里增加一个byte[],它是用来存什么的啊,而且你说vpo.setBimage(Hibernate.createBlob(buffer));那是不是还要在vo里放一个blob类型的字段啊 ,那它又是存什么东西的啊
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
没测试过,临时找到的。
oracle.sql.BLOB blob = null;
OutputStream out = blob.getBinaryOutputStream();
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
那我不加那个不行吗,关键就是没有OutputStream out = blob.getBinaryOutputStream();这个方法啊,只有一个blob.getBinaryStream();方法
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
weblogic.jdbc.vendor.oracle.OracleThinBlob,这个是weblogic的写法。
好像也有用ORACLE的写法。你找找看吧。我手头上没有。
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
weblogic.jdbc.vendor.oracle.OracleThinBlob blob = null;是什么意思啊,还有啊
blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) vpo.getBimage(); 那个
vpo.getBimage();前面为什么要加(weblogic.jdbc.vendor.oracle.OracleThinBlob)啊
不加可以吗,还有一个问题就是我用的是eclipse+tomcat,可是我试过了,没有
OutputStream out = blob.getBinaryOutputStream();这个方法啊,我用blob打点,也点不出
getBinaryOutputStream();这个方法啊,我以前也看过一篇文章,也是像你刚才教的那么写的,可是没有getBinaryOutputStream();这个方法啊,这是怎么回事啊,
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
以weblogic为例
weblogic.jdbc.vendor.oracle.OracleThinBlob blob = null;
//重新处理BLOB字段
blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) vpo.getBimage();
if (blob!=null) {
OutputStream out = blob.getBinaryOutputStream();
out.write(vpo.getAimage());
out.flush();
out.close();
}
其中Aimage就是byte[]字段
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
我是按照你说的那种方法做的,是不是在赋空值给blob后,然后在将form中的图片写入byte[]中,然后再以流的方式写入到blob字段呢, 如果是这样的话,小弟我的问题就是出在无法用流的方式将图片写入到blob字段中
高人能不能帮帮忙,把怎么用流的方式写到blob中也详细地讲一下呢,谢谢你了!!!!!!!
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
在VPO类(也有人叫VO类)里增加byte[]字段。
赋空值
//插入BLOB空值
byte[] buffer = new byte[1];
buffer[0] = 1;
vpo.setBimage(Hibernate.createBlob(buffer));
上面的Bimage为BLOB类型的字段
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
高人啊,能不能写的详细点啊,怎么赋空值给blob啊,你说映射xml里在增加一byte[]的字段,在哪里增加啊
wangxiaomax 2004-11-12
  • 打赏
  • 举报
回复
用BLOB字段存储。映射XML再增加一byte[]的字段
ACTION里直接取FORM传来的值,写入byte[]。在DAO里,先赋一空值给BLOB字段,然后再将byte[]字段以流的方式写入BLOB字段。就好了。
goldenapple72 2004-11-12
  • 打赏
  • 举报
回复
难道没有人会吗?还是嫌我给的分少啊

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧