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;
     }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值