hibernate框架下修改数据库的常用方法

本文介绍了在Hibernate框架中如何高效地更新数据库记录,包括全字段更新、特定字段排除更新及指定字段更新的方法。

    在java商城开发以及jsp商城建设中,在使用三大框架的时候,我们就对hibernate以其出色的映射机制,实现了对象与关系数据库中的数据之间的自由转化,可通过对持久化对象进行操作来完成对数据库中数据的操作。大大减少了代码编写的工作量,深受开发人员的喜爱。

    修改数据库是一个常见的操作,在hibernate中我们可以通过如下几种方式来进行修改操作。

  1. 修改全部字段。

    在建立实体类的基础上,我们只需简单的调用如下update()方法就可实现对数据库对应表的修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void update(Object obj) throws HibernateException{
        Session session=HibernateSessionFactory.getSession();
        Transaction tran=null;
        try{
            tran=session.beginTransaction();
            session.update(obj);
            tran.commit();
        }catch(HibernateException e){
            if(tran!=null)tran.rollback();
            throw e;
        }finally{
            session.close();
        }
    }

2.一些特殊的字段不需要修改

    实际开发中一些特殊的字段不需要修改,如信息采集时间,录入时间等信息,一旦录入就不需要修改了,在hibernate中我们只需简单的配置一下就可实现。

<property name="entryTime" update="false"></property> 

当然也可以采用注释的方法,在get方法上加上@Column(updatable=false)

3.只对自己指定的字段进行修改

    此时我们就可以用HQL语句自由地进行修改了:

1
2
3
4
5
6
public boolean buidingupdate(int buildingId,StringbuildingName,String propertyAdress){
        Object[] o={ buildingName,propertyAdress,buildingId};
        String hql="update Building set propertyAdress=?,buildingName=? where buildingId = ?";
        hds.batchUpdate(hql,o);
        return true;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public int batchUpdate(String hql,Object[] params){
        int ret=0;
        Session session=HibernateSessionFactory.getSession();
        Transaction t=null;;
        try{
            Query q=session.createQuery(hql);
            t=session.beginTransaction();
            if(params!=null){
                for(int i=0;i<params.length;i++){
                    q.setParameter(i, params[i]);
                }
            }
            ret=q.executeUpdate();
            t.commit();
        }catch(HibernateException e){
            if(t!=null) t.rollback();
            throw e;
        }finally{
            session.close();
        }
        return ret;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值