看了N多的文档,都是一样的,不理解,完全是网络转载,一点不负责任.所以我把我的完整代码贴如下:
sql: ============================================
create table T_ZP
(
ID NUMBER not null,
RYBH VARCHAR2(21),
ZPXH NUMBER,
PIC BLOB,
OPTIME DATE not null,
DELFLAG CHAR(1) not null
)
============================================
bea和hbm.xml就不用写了吧!先看DAO方法:
package com.sclh.hibernate.dao;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import oracle.sql.BLOB;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.lob.SerializableBlob;
import com.sclh.common.GetTime;
import com.sclh.hibernate.bean.Zp;
/** *//**
* Data access object (DAO) for domain model class Zp.
*
* @see .Zp
* @author MyEclipse - Hibernate Tools
*/
public class ZpDAO extends BaseHibernateDAO ...{
private static final Log log = LogFactory.getLog(ZpDAO.class);
public void delete(Zp persistentInstance) ...{
log.debug("deleting Zp instance");
try ...{
getSession().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) ...{
log.error("delete failed", re);
throw re;
}
}
public boolean saveZp(Zp entity, String filePath) throws IOException ...{
log.debug("saveZp " + entity.getClass().getName() + " instance");
boolean opFlag = false;
String idFlag = "";
InputStream in = null;
Session session = null;
Transaction tx = null;
Integer id = null;
try ...{
session = getSession();
Zp zp = new Zp();
Zp zp1 = new Zp();
/**//* id的判断 */
Query query = session.createQuery("from Zp where delflag ='1'");
Iterator iterator = query.iterate();
while (iterator.hasNext()) ...{
zp1 = (Zp) iterator.next();
System.out.println("while ->照片Rybh:" + zp.getRybh());
if (entity.getRybh().equals(zp1.getRybh())
&& entity.getZpxh().equals(zp1.getZpxh())) ...{
idFlag = "1";
System.out.println("该人员有原始相片!");
update(entity, filePath);
break;
}
}
if (idFlag.equals("")) ...{
save(entity, filePath);
}
} finally ...{
session.close();
}
return opFlag;
}
public boolean save(Zp entity, String filePath) throws IOException ...{
boolean opFlag = false;
InputStream in = null;
Session session = null;
Transaction tx = null;
Integer id = null;
try ...{
session = getSession();
tx = session.beginTransaction();
Query query = session.createQuery("select max(zp.id) from Zp zp");
List zpList = query.list();
Iterator iterator = query.iterate();
Integer integerId = (Integer) iterator.next();
System.out.println("id:" + integerId.toString());
int intId = (integerId.intValue()) + 1;
entity.setId(new Integer(intId));
System.out.println("照片id:" + entity.getId());
entity.setRybh(entity.getRybh());
entity.setPic(Hibernate.createBlob(new byte[1]));
entity.setZpxh(entity.getZpxh());
entity.setOptime(GetTime.getSystemTime());
entity.setDelflag("1");
session.save(entity);
session.flush();
session.refresh(entity, LockMode.UPGRADE);
SerializableBlob blob = (SerializableBlob) entity.getPic();
java.sql.Blob wrapBlob = blob.getWrappedBlob();
BLOB tmpBlob = (BLOB) wrapBlob;
OutputStream out = tmpBlob.getBinaryOutputStream();
FileInputStream image = new FileInputStream(filePath);
byte[] buf = new byte[1024000];
int len = 0;
while ((len = image.read(buf)) > 0) ...{
(out).write(buf, 0, len);
}
image.close();
out.close();
Zp zp2 = (Zp) session.load(Zp.class, entity.getId());
session.flush();
tx.commit();
} catch (HibernateException e) ...{
throw e;
} catch (SQLException e) ...{
e.printStackTrace();
log.error(e.getMessage());
} finally ...{
if (tx != null) ...{
tx.rollback();
}
session.close();
}
return opFlag;
}
public boolean update(Zp entity, String filePath) throws IOException ...{
boolean opFlag = false;
String idFlag = "";
InputStream in = null;
Session session = null;
Transaction tx = null;
Integer id = null;
try ...{
session = getSession();
tx = session.beginTransaction();
Zp oldZp = (Zp) session.load(Zp.
分享到:
相关推荐
下面我们将深入探讨Hibernate对BLOB和CLOB的操作。 首先,我们来看一下如何在数据库中创建包含BLOB和CLOB字段的表。例如,以下SQL语句创建了一个名为`users`的表,其中`uids`为主键,`img`为BLOB类型,`txt`为CLOB...
本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过实际代码示例来展示具体的操作步骤。 #### Hibernate Blob 数据处理原理 在 Hibernate 中,Blob 类型的字段通常被映射为 `java....
Hibernate提供了`BlobType`等类型映射器来简化BLOB字段的读写操作。开发者可以通过实体类中的字段直接与BLOB类型的数据库字段关联,Hibernate会在后台自动处理BLOB的读取和写入过程。 总之,无论是使用JDBC还是...
在Hibernate中,Blob对象与Java的java.sql.Blob接口相对应,用于操作这些大对象。 1. **配置Hibernate映射文件(Hibernate Mapping File)** 在Hibernate的映射文件(.hbm.xml)中,我们需要为Blob字段定义一个...
- 包含在`bigstring_oracle_src`可能有示例代码,展示了如何在Java中创建Clob和Blob对象,以及如何通过Hibernate进行插入、更新和查询操作。 总之,理解并熟练掌握Hibernate对Oracle中的Clob和Blob字段的操作,是...
综上所述,使用Hibernate和JDBC读取Oracle数据库中的Blob数据涉及多个步骤,包括实体类的设计、数据库操作和文件流的处理。理解这些知识点对于处理大对象存储至关重要。在实际项目中,根据需求和性能考虑,选择合适...
以上就是关于在Hibernate中保存Blob和Clob对象的基本操作。在实际项目中,还需要考虑性能优化、错误处理等问题,例如使用流式处理减少内存占用,以及适当地配置Hibernate的缓存策略等。了解并熟练掌握这些技巧,能...
在Java Web开发中,...本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ...
hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan
在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些数据的插入和更新操作。例如,当你调用`session.saveOrUpdate(entity)`或`entityManager.persist(entity)`时,Hibernate会将Clob和Blob的内容正确...
C# 中的 BLOB 读取操作 C# 中的 BLOB(Binary Large OBject)读取操作是指从数据库中读取二进制数据的过程。BLOB 是一种二进制数据类型,用于存储大规模的二进制数据,如图片、音频、视频等。在 C# 中,我们可以...
在实际操作中,可以通过Hibernate实现Oracle数据库中BLOB数据的存储和删除操作,然后利用Struts2框架展示这些BLOB数据。这样的结合,不仅可以提高开发效率,还能保证应用的性能和稳定性。 ### 实际操作步骤 在实际...
本篇将详细介绍如何使用JDBC(Java Database Connectivity)与Hibernate框架来操作Oracle数据库中的BLOB字段。 首先,Oracle数据库的BLOB字段提供了对大对象的高效存储,它的性能优于LONG字段,尤其适合存储大容量...
如果使用Hibernate,操作Blob会更加简洁,因为Hibernate提供了对Blob对象的直接映射。你需要在实体类中定义一个Blob类型的属性,并在映射文件中配置它。然后,你可以直接将文件流写入这个属性,Hibernate会自动处理...
在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...
总结起来,"spring mvc+hibernate 图片存储至blob"这个主题涉及到Spring MVC处理文件上传、Hibernate将图片数据存入数据库BLOB字段、以及前后端交互等多个技术点。通过理解这些知识点,开发者可以构建一个完整的图片...
jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc 操作oracle blob数据jdbc ...