Hibernate基础

来源:互联网 发布:棋牌类算法 编辑:程序博客网 时间:2024/06/06 01:14

Hibernate说白了就是简单的对JDBC进行了封装了。。

使用Hibernate访问数据库很方便,他为我们封装了很多类。可以直接调用具体的某些方法就可以完成以前非常繁琐的代码。

但是Hibernate为我们写的越多我们自己就写的越少这样就会有很多东西我们控制不了。当我们打开Hibernate的源码的时候也只能看看不能修改。

Hibernate我们不好控制他。他访问数据库的时候会造成很多多余的SQL语句这样大大降低了我们访问数据库的效率。尤其是在做多表查询的时候这个问题更为严重。

不过使用Hibernate框架来进行开发会减少我们很多访问数据库的代码量。甚至一些逻辑判断都不用写。

不过一般我们写一些小型的项目就不适合用Hibernate来开发了。

Hibernate最好是用于开发大型项目。项目里面几十张表一起级联查询的时候这个时候Hibernate就展现出他的优势了。这个时候只需要简简单单的在配置里面加个一点配置Hibernate就会帮我们把这几十种表全部级联到一起这样最适合做查询的时候用。

如果你把Hibernate玩转的时候你可以使用Hibernate里面的某部分东西来参与你的项目开发当中。

好把,,屁话不多说了。。现在就来简单介绍下Hibernate的几个关键的对象怎么来访问数据库并对数据库里面的数据进行一些修改,。

Hibernate查询的话分为很多种。一般用的最多的就是Hibernate的标准查询了。。先使用Hibernate来获取Session工厂来获取一个session。其实此时获取到Session的时候就可以对数据库进行简单的增删改查了。。咳咳。。不跑题。。当你把一个查询玩通的时候我相信那些修改之类的SO EASY了。。好的,获取Session之后我们创建一个Criteria对象。此时我们就可以用criteria经行我们的标准查询了。此时我们可以在criteria里面加入我们要和数据库匹配的条件比如一些模糊查询的条件和某些数据要大与小与数据库里面的某些具体的字段啊。也可以进行翻页操作只需要加上你当前页码和每页显示的最大行数。criteria都提供了具体的方法。一般我们从数据库获取数据的话使用标准查询就OK了。。

前面说到了Hibernate为我们写的越多我们写的越少这样的话Hibernate会增加很多垃圾代码。上面的Criteria如果我们要进行一些业务逻辑操作从数据库拿数据的话这样使用Criteria来很好。但是我们单纯就是查询数据库的具体的表不需要任何条件的话此时我们就不适合使用Criteria来查询了。这个时候我们就可以用到HQL语句来查询数据库。使用HQL语句的话这个时候我们就要写原生态的SQL语句了。可以省略前面的 SELECT * 。我们可以直接写 from 表明。。然后调用.list、来获取我们查询数据的集合。记得获取之后强制类型转换为我们需要的类型。如果我们单单只根据某个ID来查询数据的话别担心,此时就只单单根据ID的话也划不来用Criteria来查询,我们可以使用Session的.get(类名,id),或者使用.load(类名,id)个人觉得这两个方法没有什么区别都是根据ID来查询一条数据。用那个不都是用。嘿嘿。。其实它俩之间还是有区别的。。用哪个的话就根据你的业务需求来选择了。

好吧,查询我就说到这里了。。这个是最简单的查询了。够你开发用到了。。下面说下添加和修改把。。Hibernate提供了一个saveorupdate看这个方法名大家都知道了把。顾名思义就是添加或者修改。记住他传进来的是我们要添加或者修改的对象。一般添加的话咱们可以直接new 对面然后给他的属性赋值丢进来基本就可以添加成功了,。然而这个哈哈。。这个修改我就不说了。你修改的时候先根据你要修改的ID把它从数据库里面查询出来之后再对这个查出来的对象进行你要修改的值重新给他,然后再调用saveorupdate的方法。此时它才会修改成功。为什么要根据ID把它查出来再修改数据呢,。嗯嗯,咳咳,这个我也不是很清楚。好像是如果你直接NEW对面的话你肯定是修改了你肯定要给他ID了,不然Hibernate怎么知道是修改哪条数据。关键就来了。如果你直接NEW的话此时这个对象貌似处于什么游离状态但是这个对象你又给了ID和数据库里面的这个ID起了冲突他不知道是修改还是添加了,因为添加是不需要我们给他赋值ID的。如果你要手动给ID的话你也可以改配置文件。好吧,此时他修改不了就对了。反正你要根据ID在数据库里面把他查出来再进行修改。

还有个删除的话我就不多说了。老样子根据ID查询了之后直接调用Session.DELETE()方法里面丢你根据ID查出来的对象。然后你就会惊奇的发现删除成功了。好的,不谢。

本人自我感觉已经把HIBERNATE玩的8分熟了,也掉进过很多莫名其妙的看不懂的坑。自己爬出来之后才知道是哪里出了问题要怎么解决。欢迎大家把你们关于HIBERNATE掉进的莫名其妙的坑交给我。我肯定会乐意帮助你解答的。

0 0
原创粉丝点击