hibernate知识点总结

来源:互联网 发布:dnf阿里云搭建 编辑:程序博客网 时间:2024/04/30 16:38

             这篇博文主要对hibernate框架概念进行总结。后面会从原理和源码方面对hibernate进一步总结和分析

            但是对hibernate框架没有太明确的认识,所以对hibernate框架的难点和大概的雏形没有很好的把握,希望能够在完成这篇博文后通过阅读书籍以及对源码的

  阅读能够提高对hibernate的理解;同时在数据库方面没有很好的认知;希望有大神能够给予指教,特别是框架学习方面

          

          持久化--将程序数据在持久状态和瞬时状态转换的机制
          对象关系映射--用于解决面向对象与关系数据库互不匹配现象的技术;通过描述对象和数据库之间映射的元数据进行持久化操作


          hibernate目录结构
                   doc--API文档
                   eg---映射文件实例
                   etc--配置文件实例
                   grammar-hql语法规定
                   lib--第三方类库
                   src--核心类库源码
                   test-测试程序


          元素
                  Configuration--配置hibernate,通过读取配置创建SessionFactory对象,是启动期间对象
                  SessionFactory--针对单个数据库映射关系经过编译后的内存镜像,是线程安全的
                  Session--应用程序与持久化存储层交互操作的单线程对象,持有一级缓存
                  Transaction--用于指定原子操作单元范围的单线程对象
                  ConnectionProvider--数据库连接,用于创建连接池,在创建SesionFactory时实现
                  映射对象
                         状态
                             瞬态--未与持久化上下文关联过,没有持久化标识
                             持久化--实例正与持久化上下文关联,拥有持久化标识
                             脱管--曾经与持久化上下文关联且拥有持久化标识


          hibernate对象关系映射
                   序列生成器(generator)
                           increment; identity; sequence; hilo  ;
                           seqhilo  ; uuid    ; guid    ; native;
                           assigned ; select  ; foreign ;
                   加载方式(抓取策略)    
                           立即加载--指在实体数据加载完成立即加载相关的数据
                           延迟加载--在真正需要数据时才执行数据加载操作,包括实体延迟加载
                                             集合延迟加载,属性延迟加载;使用了代理模式;可以通过配置
                                             OpenSessionInViewFilter实现延迟加载
                           预先加载--将实体数据和相关数据同时进行加载,使用连接查询的方式
                           批量加载--一次对多条数据进行加载  
                    关联关系映射
                           <1>从关联的角度看包括单向关系和双向关系,其中双向关系中可通过inverse设置方向一端
                           <2>从关系的角度看包括一对多关系,一对一关系,多对多关系


         hibernate查询语句
                    <1>HQL
                    <2>Native SQL
                    <3>Criteria--包括关联查询;投影查询;离线查询


        缓存
                   <1>一级缓存--session级别缓存
                         注意:一级缓存内数据没有过期策略,即在session关闭之前不会清空
                   <2>二级缓存--sessionFactory级别缓存


        事务管理
                     事务--指单个逻辑工作单元执行的一系列操作 ,特性包括原子性,一致性,隔离性,持久性
                    <1>事务并发
                               事务并发问题
                                  (1)第一类丢失更新:在完全未隔离事务的情况下,两个事务更新同一条数据资源,某一事务异常终止回滚造成更新丢失
                                  (2)脏读:第二个事务查询到第一个事务未提交更新的数据
                                  (3)虚读:一个事务执行两次查询,第二次结果集包含第一次中没有或某些行被删除,造成两次结果不一致
                                  (4)不可重复读:一次事务两次读取同一行得到不同结果,两次结果不同造成不可信任
                                  (5)第二类丢失更新:两个事务同时提交同一行数据造成第一个事务改变丢失
                     <2>事务隔离机制      
                                数据库事务隔离级别
                                   (1)Serializable(串行化)
                                   (2)Repeatable Read(可重复读)
                                   (3)Read Commited(可读已提交)
                                   (4)Read Uncommited(可读未提交)              
                      <3>锁机制  
                                悲观锁--在整个数据处理过程中将数据锁定,通过数据库锁机制实现排他性
                                乐观锁--通过数据版本记录机制实现对数据版本检查解决事务并发问题
                                              可通过增加optimistic-lock属性实现
























1 0