Hibernate是什么

Posted Hendy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate是什么相关的知识,希望对你有一定的参考价值。

 

Hibernate课堂笔记

1 Hibernate是什么

        Hibernate是一个数据库的操作框架

1.1 Jdbc的缺点

l jdbc的效率比较低

每一次请求,打开连接、发送sql语句,在数据库中解析sql语句等需要消耗大量的资源。

重复性代码特别多

       每一次都需要关闭connection,statement,rs

       Jdbc没有做到面向对象编程

       没有做到数据缓存

          现在世界上数据缓存做的很不错的框架(hibernate,oscache,ehcache)

               Oscache和ehcache都有页面缓存

                  *  就是把页面上的数据缓存到本地磁盘上

                  *  当应用程序再次访问的时候,直接从磁盘上读取数据就

可以了

                        *  页面缓存不适合做更新特别频繁的数据

1.2    Jdbc的优点

        是最底层的操作数据库的框架,所以在java的层面上说速度最快

        Jdbc做到了connection pool

1.3 Hibernate优点

l 面向对象编程

l Hibernate的底层也是由jdbc实现的

l Hibernate的数据缓存做的相当棒

l Hibernate做到了connection pool

1.4 Hibernate缺点

      Hibernate不会让程序员干涉sql语句的生成,sql语句是hibernate内部操作jdbc生成的,所以在一个项目中,如果对sql的优化要求比较高,这个时候,不适合用hibernate

      如果一张表的数据量特别大(千万级别以上),也不适合用hibernate

2 Hibernate的学习内容

l 学习hibernate的crud操作

l 持久化对象的状态

l 一对多和多对多(重点)

l 数据缓存(一级缓存、二级缓存、查询缓存)(重点)   数据缓存的特点

l Hql语句

3 hibernate的crud操作

 

3.1 类与表的映射关系

 

3.2 Hibernate配置文件的加载方式

3.2.1 方式一

 

     注意:

1、 配置文件的名称必须是hibernate.cfg.xml

2、 把hibernate.cfg.xml文件必须放在classpath下

3.2.2 方式二

 

       注意:

1、 利用该方法配置文件的名称可以随意写

2、 路径可以随意放

3、 Resource代表路径名称+文件名称

 注意:hibernate的事务默认不是自动提交的

3.3 crud操作注意事项

3.3.1 session.get方法

1、 要使用session.get方法,那么相对应的持久化类中必须保证有一个无参的构造函数

2、 该方法的第二个参数与持久化类中的主键的类型要保持一致。

3、 Session.get方法的第二个参数的形参:Serializable.因为只有这样才能接受所有的数据库的主键的类型

3.3.2 session.update

               参数可以是session.get方法得到的对象,也可以是新创建的对象,但是cid的值必须和数据库的值相对应。

4 Hibernate流程

 

5 Hibernate错误分析

5.1 错误一

 

    分析:

l 在配置文件中加载该文件,但是路径写错了,找不到

l 该文件根本没有加载到配置文件中

5.2 错误二

 

分析:

     当生成sql语句的时候,利用get方法获取值,这个时候,需要映射文件中的name属性拼接成get方法,然后利用java的反射机制赋值,拼接的时候出错了,所以属性找不到。

5.3 错误三

 

分析:说明持久化没有找到,持久化类没有找到并不一定意味着该类不存在,有可能映射文件路径写错了

    

 

 以上两个错误结合一起,就是总结出:

    在映射文件中,class元素的name属性的值写错了

5.4 错误四

     

 

      在hibernate的配置文件中,映射文件的路径写错了

5.5 错误五

 

分析:

1、 有可能在映射文件中,class元素的name属性的值写错了

2、 在客户端session.save进行操作的时候,因为操作的是持久化对象,所以该对象所在的类必须是映射文件中class元素的name属性,如果不一致,也会报这样的错误

5.6 错误六

 

         分析:

             Session.get方法两个参数,第二个参数的类型必须与持久化类中的主键的类型保持一致。

以上是关于Hibernate是什么的主要内容,如果未能解决你的问题,请参考以下文章

面试 hibernate第二篇hibernate相关问题

Hibernate是什么

转使用Hibernate的好处是什么?

hibernate中的annotations是啥意思

Hibernate入门

Struts+Hibernate+Spring面试题合集及答案