不得不动手为Hibernate写点什么了 (一)

       首先来说说和Hibernate并无太大联系的实体Bean中数据类型选择上的问题。一般来讲,尽量选用包装类取代原始数据类型。如果数据库中对应的字段不为空,可以选用原始数据类型。一旦字段允许为空,字段里没任何数据的时候给实体Bean的属性赋值再选用原始数据类型时会抛空指针异常。在这里选用包装类可以避免此类错误的产生。

 

      接下来进入主题,来说说关于Hibernate对数据操作的注意事项。先来谈谈Hibernate中关于数据的增删操作需要注意的事项。添加相对于是四种操作中最为简单的一种,可以调用session的save方法或saveOrUpdate方法搞定,也可以自己通过写HQL语句来实现。这里值得注意的是,当所操作数据库表中的主键为自增方式时,使用save方法进行添加操作,如果这时强行给主键对应的属性赋值时并不会报错,Hibernate并不会理会,而是继续按照表中标识列预先定义好的标识增量继续增加。倘若在此种情况之下,调用的是saveOrUpdate方法,你将会接到一个令人生厌的异常作为回报。

 

      若表中的字段不允许为空,当对此表进行反转之后都会在配置文件中添加not-null="true" ,此时删除,如果只给对应主键的属性赋了值,而其他属性都为空,则删除将报错。处理方法有以下几种:一、可以给其他属性都赋于空值,方可正常删除,并不受影响。二、如果程序中做了必要的检查和判断处理,可以将配置中的not-null="true"删掉,此法也可保证正常删除。三、也可通过主键查出一个完整的对象,再通过调用原装的delete方法删除。四、自己写个删除方法。例如:

 

public void delete(Short id) {

 

     try {
            getSession().createQuery("delete from Jobs j where j.jobId = :jid")
           .setShort("jid", id)
           .executeUpdate();
     } catch (RuntimeException re) {
            throw re;
     }


 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值