`
zengbo0710
  • 浏览: 414452 次
社区版块
存档分类
最新评论

终于搞定关于Hibernte的Blob更新操作

阅读更多

看了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操作

    下面我们将深入探讨Hibernate对BLOB和CLOB的操作。 首先,我们来看一下如何在数据库中创建包含BLOB和CLOB字段的表。例如,以下SQL语句创建了一个名为`users`的表,其中`uids`为主键,`img`为BLOB类型,`txt`为CLOB...

    hibernate对Blob类型字段进行数据添加.txt

    本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过实际代码示例来展示具体的操作步骤。 #### Hibernate Blob 数据处理原理 在 Hibernate 中,Blob 类型的字段通常被映射为 `java....

    JDBC+Hibernate将Blob数据写入Oracle

    Hibernate提供了`BlobType`等类型映射器来简化BLOB字段的读写操作。开发者可以通过实体类中的字段直接与BLOB类型的数据库字段关联,Hibernate会在后台自动处理BLOB的读取和写入过程。 总之,无论是使用JDBC还是...

    Hibernate读取blob字段

    在Hibernate中,Blob对象与Java的java.sql.Blob接口相对应,用于操作这些大对象。 1. **配置Hibernate映射文件(Hibernate Mapping File)** 在Hibernate的映射文件(.hbm.xml)中,我们需要为Blob字段定义一个...

    Hibernate操作Oarcle中Clob、Blob字段小结

    - 包含在`bigstring_oracle_src`可能有示例代码,展示了如何在Java中创建Clob和Blob对象,以及如何通过Hibernate进行插入、更新和查询操作。 总之,理解并熟练掌握Hibernate对Oracle中的Clob和Blob字段的操作,是...

    使用hibernate对oracle读取blob

    综上所述,使用Hibernate和JDBC读取Oracle数据库中的Blob数据涉及多个步骤,包括实体类的设计、数据库操作和文件流的处理。理解这些知识点对于处理大对象存储至关重要。在实际项目中,根据需求和性能考虑,选择合适...

    hibernate保存blob,clob对象

    以上就是关于在Hibernate中保存Blob和Clob对象的基本操作。在实际项目中,还需要考虑性能优化、错误处理等问题,例如使用流式处理减少内存占用,以及适当地配置Hibernate的缓存策略等。了解并熟练掌握这些技巧,能...

    Hibernate对Blob,Clob的操作

    在Java Web开发中,...本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ...

    hibernate Blob、Clob字段的映射的例子

    hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan

    关于在Hibernate中对于Clob,Blob字段的处理方法

    在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些数据的插入和更新操作。例如,当你调用`session.saveOrUpdate(entity)`或`entityManager.persist(entity)`时,Hibernate会将Clob和Blob的内容正确...

    C#,BLOB读取操作

    C# 中的 BLOB 读取操作 C# 中的 BLOB(Binary Large OBject)读取操作是指从数据库中读取二进制数据的过程。BLOB 是一种二进制数据类型,用于存储大规模的二进制数据,如图片、音频、视频等。在 C# 中,我们可以...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    在实际操作中,可以通过Hibernate实现Oracle数据库中BLOB数据的存储和删除操作,然后利用Struts2框架展示这些BLOB数据。这样的结合,不仅可以提高开发效率,还能保证应用的性能和稳定性。 ### 实际操作步骤 在实际...

    jdbc+hibernate存取blob字段

    本篇将详细介绍如何使用JDBC(Java Database Connectivity)与Hibernate框架来操作Oracle数据库中的BLOB字段。 首先,Oracle数据库的BLOB字段提供了对大对象的高效存储,它的性能优于LONG字段,尤其适合存储大容量...

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

    如果使用Hibernate,操作Blob会更加简洁,因为Hibernate提供了对Blob对象的直接映射。你需要在实体类中定义一个Blob类型的属性,并在映射文件中配置它。然后,你可以直接将文件流写入这个属性,Hibernate会自动处理...

    oracle+hibernate 处理blob +uploadify实例

    在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...

    spring mvc+hibernate 图片存储至blob

    总结起来,"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 操作oracle blob数据jdbc ...

Global site tag (gtag.js) - Google Analytics