hibernate的核心思想就是将之前对单个字段的操作变为操作一个对象,使用了ORM(Object relation mapping)对象关系映射的思想

   

·  在hibernate中对数据库特殊字段的有着具体配置,不同的数据库有不同的主键生成策略

      映射到数据的实体对象也需要有以下几点需要注意

  1. 私有化成员变量
  2. 提供get/set方法
  3. 提供无参构造(底层需要反射 反射支持是无参构造)
  4. 类型尽量使用包装类 private int  Integer  因为包装类有null值
  5. 需要有oid( object id )跟主键相对应
  6. 持久化类尽量不使用final修饰

      主键的shengt生成策略、          

        主键的生成有俩个位置可以生成 : JAVA  数据库

        自然主键: 跟业务有关 参与了业务逻辑主要用来区分不同数据 对象 保证数据不重复

        订单表(order_id) 支付 将oid发送了给第三方  第三方响应回来order_id数据

        代理主键: 跟业务无关 主要用来区分不同数据 对象 保证数据不重复

      JAVA

        手动插入

        assigned : 手动插入主键

        自动插入

        increment: 由hibernate 自动查询数据库增长 不适合集群(多个计算机组合成的效果)

        每次查询这个表的最大值 加+1 赋值

      uuid : 自动产生一个随机的id值

    数据库

      native : 根据不同数据的底层自动增长

      identity: mysql的自动增长(auto_increment)  支持自动增长字段 db2 sqlserver

      sequence:oracle 自增长序列

    当然在操作持久化对象的时候,持久化对象也存在三种不同的状态

        对象 在创建到获得 到 session 其实经历了三种状态

      * 瞬时态: 创建一个对象 瞬时态 没有OID 跟session没有关系

      * 持久态: 获得一个对象 (重点) 有OID 跟session有关系

       * 游离态或者脱管态:session关闭后 叫游离态 有OID 跟session没关系

   hibernate的一级缓存和快照机制的原理示意图

      

      

  hibernate对数据库的操作都需要开启事务

    事务指的是  逻辑的一组操作,要么全部成功,要么全部失败

  

事务的特性:

A 原子性: 一组操作 不可再分割

C 一致性: 事务的前后数据保证一致

I 隔离性(lsolation): 多事务之间的操作

D 持久性: 事务不可逆

 

隔离问题:

脏读 : 一个事务读到了另一个事务没有提交的数据

不可重复读: 一个事务读到了另一个事务已提交的数据(update)

虚读/幻读: 一个事务读到了另一个事务已提交的数据(insert)

解决方案:

读未提交 不解决任何问题

读已提交 解决脏读 Oracle默认隔离级别

可重复读 解决脏读 和 不可重复读问题  mysql的默认隔离级别

串行化 解决三个问题

    对事务的配置

   在hibernate的核心配置文件中,

  

    openSession() 表示 每一次调用 获得一个新的session对象

    getCurrentSession() 表示获得当前线程的session对象 等效以前的将connection 绑定的到当前线程上

  hibernate也存在其他的检索方式,但是使用起来要因环境而异

    

  1. oid查询 get/load
  2. 对象导航查询
  3. HQL ( Hibernate Query Language) hibernate查询语言 面向对象
  4. QBC ( Query By Creteria) 比hql更加面向对象  离线查询
  5. SQL

hibernate第二天的更多相关文章

  1. 面试题:hibernate 第二天 快照 session oid 有用

    ## Hibernate第二天 ## ### 回顾与反馈 ### Hibernate第一天 1)一种思想 : ORM OM(数据库表与实体类之间的映射) RM 2)一个项目 : CRM 客户关系管理系 ...

  2. Hibernate第二天——实体类 与缓存机制

    第二天,我们先来了解一下框架里的一个重要概念:实体类 实体类:把数据表或其它持久化数据的格式映射成的类,就是实体类. 实体类的编写规则:由于对应的是javabean,因而也遵循javabean的一些规 ...

  3. Hibernate第二篇【API讲解、执行流程图】

    前言 从上一篇中已经大致介绍了Hibernate并且有了一个快速入门案例的基础了,-.本博文主要讲解Hibernate API 我们看看快速入门案例的代码用到了什么对象吧,然后一个一个讲解 publi ...

  4. SSH框架之Hibernate第二篇

    1.1 持久化类的编写规则 1.1.1 什么是持久化类? 持久化类 : 与表建立了映射关系的实体类,就可以称之为持久化类. 持久化类 = Java类 + 映射文件. 1.1.2 持久化类的编写规则 ( ...

  5. hibernate 第二次深入接触

    1.session 到底如何进行脏处理? 当一个Dept对象加入到session缓存时,Session会为Dept对象的值属性复制一份快照,当Session刷新缓存时,会进行脏处理. 2.OID 用来 ...

  6. ORM和Hibernate的配置方式

    分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...

  7. hibernate简单应用

    Hibernate 第二章 核心API 和CURD实现 核心API介绍 单表操作方法 查询hql语句 1.认识hibernate 核心思想ORM:实现数据库中的文件一一映射为java中的实体类. 使用 ...

  8. Hibernate框架--对象的状态,缓存, 映射

    回顾Hibernate第二天: 1.  一对多与多对一 2. 多对多 3. inverse/cascade 4. 关联关系的维护 一对多: <set name="映射的集合属性&quo ...

  9. SSH框架之hibernate《二》

    Hibernate第二天     一.hibernate的持久化类和对象标识符         1.1持久化类的编写规范             1.1.1什么是持久化类:               ...

随机推荐

  1. Centos 7.0 execute yum update ——File "/usr/libexec/urlgrabber-ext-down", line 75, in <module> 解决方式

    [打开这个文件:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py找到elif errcode in (42, 55,56)   用  eli ...

  2. 【计算机网络】 一个小白的DNS学习笔记

    参考书籍 <计算机网络-自顶向下>  作者 James F. Kurose   DNS的作用   DNS是因特网的目录服务 DNS是因特网的目录服务,它提供了主机名到IP地址映射的查询服务 ...

  3. C 实现可变参数

    C中可以借助va_list实现可变参数: va_start:使用传入的可变参数的第一个变量初始化va_list va_arg:获取当前可变参数,每次调用时会将指针向后移 va_end:结束 利用这个机 ...

  4. mysql 中翻页

    万变不离其中 select * from tableName where 条件 limit 当前页码*页面容量-1 , 页面容量

  5. PHP异常处理机制

    1. 异常: 异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 当异常被触发时,通常会发生: (1)当前代码状态被保存: (2)代码执行被切换到预定义的异常处理器函数: (3)根据 ...

  6. idea中的汉语注释出现乱码的解决方案

    日记 - idea中的汉语注释出现乱码的解决方案 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都是乱码.问过项目负责人,说可能是GB ...

  7. JS框架设计读书笔记之-小知识

    这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识 ...

  8. MUI点击事件获取当前对象,及当前对象的属性值

    //用惯了jquery,开始用mui还是有些不习惯 //直接贴代码吧 <nav class="mui-bar mui-bar-tab"> <a class=&qu ...

  9. Circle

    Circle   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Status Description Your task is so ...

  10. 初入红尘——在安联IT实习的一点感受(未完......)

    文章很短,只有800字. 从踏进安联的大门开始,我便入了红尘. 安联的迎客之道 “花径不曾缘客扫,蓬门今始为君开.”我的第一个贵人就是前台的美君姐.由于路况不熟,所以我没把握好时间,到的时候比约定的面 ...