zoukankan      html  css  js  c++  java
  • 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)类与类之间关系:关联关系、聚集关系、继承关系。

  • 相关阅读:
    linux kgdb 补丁
    linux kdb 内核调试器
    linux 使用 gdb
    linux 系统挂起
    linux oops 消息
    linux strace 命令
    linux ioctl 方法
    linux seq_file 接口
    [数据结构] 迷宫问题(栈和队列,深搜和广搜)
    简化浏览器地址栏訪问路径
  • 原文地址:https://www.cnblogs.com/hongwei2085/p/8878003.html
Copyright © 2011-2022 走看看