Hibernate理解?

Posted 清-华-园

tags:

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

(1)Hibernate是对象关系映射框架,对JDBC进行非常轻量级的对象封装,是全自动的ORM框架,可以自动生成SQL语句、自动执行。

(2)语言特点

     <1>将对数据库的操作转换为对Java对象的操作从而简化开发。

     <2>提供线程和进程两个级别的缓存提升应用程序性能。

     <3>有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。

     <4>非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类。

(3)Hibernate优点:

    <1>封装了JDBC,简化了很多重复性代码。

    <2>简化了DAO层编码工作,使开发更对象化了。

    <3>移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变Hibernate代码。

     <4>支持透明持久化,没有实现任何接口,没有侵入性。

(4)Hibernate核心API有6个分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这些接口可以对持久化对象进行存取、事务控制。

    <1>Session接口负责执行被持久化对象的CRUD操作,Session对象是非线程安全的。

    <2>SessionFactory接口负责初始化Hibernate。

   <3>Query负责查询

    <4>Configuration作用是对Hibernate进行配置以及对它进行启动。

(5)主键有两种:

<1>Assigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常,特点是主键的生成值完全由用户决定与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。

<2>UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。特点是能够保证数据库中的主键唯一性,生成的主键占用比较多的存贮空间。

(6)Hibernate中提供了两级Cache,第一级别的缓存是Session,它是属于事务范围的缓存。第二级别的缓存是SessionFactory,它是属于进程范围或集群范围的缓存。Hibernate还为查询结果提供了一个查询缓存它依赖于第二级缓存。

(7)Session级别的缓存:save()、update()、saveOrUpdate()、get()、load()、list()。

(8)延迟加载:get不支持延迟加载,load支持延迟加载。

(9)性能优化:

     <1>使用一对多的双向关联,尽量从多的一端维护。

     <2>不要使用一对一,尽量使用多对一。

     <3>配置对象缓存,不要使用集合缓存。

      <4>表字段要少,表关联不要怕多,有二级缓存支持。

(10)类与类之间关系:关联关系、聚集关系、继承关系。

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

Hibernate 框架理解

如何理解Hibernate中的HibernateSessionFactory类

Java之旅hibernate——第一个hibernate的样例

面试题:谈谈你对hibernate的理解

Hibernate

深入理解hibernate的三种状态