快速业务通道

使用JDBC和Hibernate来写入Blob型数据到Oracle中 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
的接口,而没有写Blob的接口,JDK1.4带的JDBC3.0加入了写Blob的接口。你可以使用JDBC3.0的接口,也可以直接使用Oracle的JDBC的API,我在上例中使用了Oracle的JDBC的API。

另外要注意的是:

java.sql.Blob

oracle.sql.BLOB

注意看blob的大小写,是不一样的。写程序的时候不要搞混了。

下面看看用Hibernate怎么写,原理是一样的,也要分三步,但是代码简单很多

这是Cat对象定义

java代码:

package com.fankai; import java.sql.Blob; public class Cat {    private String id;    private String name;    private char sex;    private float weight;    private Blob image;    public Cat() { } public String getId() { return id; }    public void setId(String id) { this.id = id; } public String getName() { return name; }    public void setName(String name) { this.name = name; } public char getSex() { return sex; }    public void setSex(char sex) { this.sex = sex; } public float getWeight() { return weight; }    public void setWeight(float weight) { this.weight = weight; } public Blob getImage() { return image; }    public void setImage(Blob image) { this.image = image;}    }

使用JDBC和Hibernate来写入Blob型数据到Oracle中(3)

时间:2011-07-28

这是Cat.hbm.xml

java代码:

<?xml version="1.0"?>    <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping>    <class name="com.fankai.Cat" table="cat">    <!--jcs-cache usage="read-only"/-->    <id name="id" unsaved-value="null">    <generator class="uuid.hex"/>    </id>    <property name="name" length="16" not-null="true"/>    <property name="sex" length="1" not-null="true"/>    <property name="weight" />    <property name="image" />    </class>    </hibernate-mapping>

下面是完整的用Hibernate写入Blob的例子,相比JDBC,已经简单轻松多了,也不用写那些Oracle特殊的sql了:

java代码:

package com.fankai; import java.sql.Blob;    import net.sf.hibernate.*;    import oracle.sql.*;    import java.io.*; public class TestCatHibernate {    public static void testBlob() {    Session s = null;    byte[] buffer = new byte[1];    buffer[0] = 1;    try {    SessionFactory sf = HibernateSessionFactory.getSessionFactory();    s = sf.openSession();    Transaction tx = s.beginTransaction();    Cat c = new Cat();    c.setName("Robbin");    c.setImage(Hibernate.createBlob(buffer));    s.save(c);    s.flush();    s.refresh(c, LockMode.UPGRADE);    BLOB blob = (BLOB) c.getImage();    OutputStream out = blob.getBinaryOutputStream();    String fileName = "oraclejdbc.jar";    File f = new File(fileName);    FileInputStream fin = new FileInputStream(f);    int count = -1, total = 0;    byte[] data = new byte[(int)fin.available()];    fin.read(data);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号