读书人

hibernate惯用API详解

发布时间: 2012-09-05 15:19:34 作者: rapoo

hibernate常用API详解

?

?

?

?结果:一句SQL将所有结果查询出来

?

如果修改一下for循环的代码,查询FK的name:

?

?

?结果:一句SQL查询Member表,每一次for循环又发一句SQL查询Userinfo表

总结:被查询表中如果有外键关联,在执行查询时能将外键关联字段的值查询出来,但如果想查询关联表的其它字段会另外发SQL,这个特别要注意!

?

?

?结果:一句SQL将所有结果查询出来

?

如果修改一下for循环的代码,查询FK的name,结果与前面使用HQL查询一样:一句SQL查询Member表,随后每一次for循环又发一句SQL查询Userinfo表

?

1-3Hibernate条件查询(Criteria)

?

?其实上面这种方式就是发了一句SQL:SELECT * FROM member

?

?

?

2-2使用SQL

?

?

?

2-3使用Criteria

?

?

?

?

?

?

?通过query.setParameter(int,Obejct)方法即可给每个?赋值,注意第一个参数是从下标0开始!

?

?

?

?上面例子关键代码是Query调用setParameter(String,Object)和setParameterList两个方法,前者是赋单一值,后者是赋多个值(特别适合in查询赋值)。这两种赋值方法都需要传两参数:第一个参数是key值,对应HQL语句中的“:xxx”;第二个参数是value值,就对应key的实际值。这种传值比3-1-1更准确方便:一来不用担心下标错位的问题,二来如果存在”xx,xx,xx”这种格式的参数可以使用setParameterList方法,屡试不爽!

?

3-2-1使用SQL“WHERE 字段=?”的形式给参数赋值

?上面这段代码与3-1-2的代码极其相似,但是有以下几点区别:①使用SQLQuery的形式查询;②SQL语句m.login_code和m.delete_flag与前面的HQL里面不对应,前面说了HQL里面对应的是POJO(也就是Member类)的属性,而SQL语句是直接对应数据库的字段名!

?

?

?Criteria对象通过add方法添加查询条件,Restrictions提供了各种各样的查询条件API:like、in、eq、between、or等等。这里要注意一点:像Restrictions.like(key,value)这些方法的key就是POJO中的属性,而不是数据库中的字段!

?

?

?

?上面这段代码有几个功能点:

Member member = (Member) getSession().get(Member.class, id);member.setLoginCode("akaka");member.setPassword("654321");

?猜想上面这段代码会发几句SQL?根据控制台调试发现总共发了两句SQL:一句是SELECT语句查询Member表,另一句是UPDATE语句更新Member表字段,最终查询数据库时发现logincode和password的值都变成了上面设置的值。

这是一种非常好使的UPDATE方法,不用写SQL语句,直接先get后set即可自动发送SQL。

?

以上介绍的是非常通用的Hibernate API,当然Hibernate还提供了很多其它优秀的功能,比如缓存、复杂映射等等,这些技术需要大家在学会通用API之后再深入了解。

1 楼 yanshien 2011-12-28 总结的不错,受益 2 楼 白糖_ 2011-12-28 yanshien 写道总结的不错,受益
总结地不详细,欢迎指正、补充,共同提高

读书人网 >编程

热点推荐