什么是 hibernate 框架

    1.hibernate 框架应用在 javaee 三次结构中 dao 层框架

    2.在dao 层里面对数据库做curd 操作, 使用hibernate

      做crud 操作, hibernate 底层代码就是jdbc, hibernate

      对 jdbc 进行封装,使用hidernate 好处,不需要写复杂的jdbc 代码了,不需要写sql 语句实现。

什么是orm 思想

    1.hidernate 使用orm 思想对数据库进行crud 操作

    2.在web 阶段学习, javabean, 更正叫法为实体类

    3.orm object relational mapping, 对象关系映射

      1.让实体类和数据库表进行一一对应关系。

        让实体类首先和数据表对象,

        让实体类属性  和 表里面字段对应

      2.不需要直接操作数据库,而操作表对应实体类对象。

搭建 hibernate 环境

    第一步:导入hibernate 的jar 包

      

    

    因为用hibernate 的时候,有日志文件输出,hibernate 本身没有

      日志输出的jar 包,导入其他日志输出的jar 包

第二步创建实体类

    

      

    1.使用hibernate 的时候,不需要自己手动创建表hibernate 会自动创建好。

第三步,配置数据库和实体类一一对应关系。(映射)

      使用配置文件来完成映射的关系。

        1.创建xml 格式的配置文件

          映射配置文件名称和位置没有固定的要求建议,在实体类所在包里创建,实体类名称 hbm.xml

        2.配置是xml格式,在配置文件中首先引入xml约束

          学过约束dtd , schema, 在hibernate 里面引入的约束dtd 约束

      

      3.配置映射关系

        <hibernate-mapping>

            <!--1.配置类和表对应

                class 标签

                 name 属性,实体类全路径

                table 属性,数据库表名称

            -->

          <class name="cn.itcast.entity.User" table="t_user">

                <!-- 2.配置实体类id 和表id 对应

                    hibernate 要求实体类有一个属性唯一值

                    hibernate 要求表有字段作为唯一值

                -->

              <!-- id 标签

                  name 属性, 实体类里面id 属性名称

                  column 属性, 生成的表字段名称

              -->

          <id name="uid" column="uid">

            <!-- 设置数据库表id增长策略

              native  生成表id 值就是主键自动增长

            -->

            <generator class="native"></generator>

          </id>

          <!-- 配置其他属性和表字段对应

                name 属性,实体类属性名称

              column 属性,字段名称

          -->

          <propert name="username" column="username"></propert>

          <propert name="password" column="password"></propert>

          <propert name="address" column="address"></propert>

        </class>

      </hibernate-mapping>

第四步创建hibernate 的核心配置文件

    1.核心配置文件格式xml,但是核心配置文件

      名称和位置固定的,位置必须在src 下

      名称必须 hibernate.cfg.xml

      

    2.引入dtd 约束

      <!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    3.hibernate 操作过程中,只会加载核心配置文件

      其他配置文件不会加载。

        第一部分,配置数据库的信息

          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

          <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>

          <property name="hibernate.connection.username">root</property>

          <property name="hibernate.connection.password">root</property>

        第二部分,配置hibernate 信息

          <!-- 第二部分,配置hibernate 信息 -->

          <!-- 输出底层的sql语句 -->

            <property name="hibernate.show_sql">true</property>

          <!-- 输出底层sql语句格式 -->

            <property name="hibernate.format_sql">true</property>

          <!-- hibernate 帮创建表,需要配置之后

              update: 如果有表进行更新,如果没表进行创建

          -->

              <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- 配置数据库的方言

            在mysql 里面实现分页, 关键字limit ,只能使用mysql里面

              在oracle 数据库里面  实现分页 rownum

              让hibernate 框架识别不同数据库的语句

          -->

          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

      实现添加操作

        第一步  加载hibernate 核心文件

        第二步   创建 SessionFactory  对象

        第三步    使用SessionFactory 创建session 对象

        第四步    开启事务

        第五步 写具体逻辑 crud 操作

        第六步 提交事物

        第七步 关闭资源

     Hibernate 核心api

        Configuration

          1.代码

            Configuration cfg = new Configuration();

            cfg.configure();

            Session Factory

        Session

          session 类似于jdbc 中 connection

          调用session 里面的方法实现 crud 操作

            1.添加 save 方法

            2.修改 update 方法

            3.删除 delete 发放

            4 根据id 查询  get 方法。

          session 对象单线程

        Transaction

          1.事务对象

            开启事务对象

              Transaction tx = session.beginTransaction();

            事务提交回滚方法。

              tx.commit();

              tx.rollback();

            事务四个概念

              原子性(一组要么都成功,要么都失败),一致性,隔离性,持久性

      工具类是抽取

        

      

    实体类的编写规则

      1.实体类里面属性私有的

      2.私有属性使用公开的set 和get 方法进行操作。

      3.要求实体类有唯一属性作为唯一值(一般都使用id值)

      4.实体类属性建议不适用基本数据类型,使用基本数据类型对应的包装类型。

  hibernate 主键生成策略     

      实体类的操作

      添加操作

      根据id 查询

      调用session 里面的get 方法实现

        // 添加功能

          User user = new User();

          user.setUsername("小王");

          user.setPassword("250");

          user.setAddress("日本");

        // 调用session 的方法实现添加

          session.save(user);

      

    修改操作

      先查询,修改值

      1根据id 查询,返回对象

      

    删除操作

      

    实体类对象状态

      1.瞬时态,对象里面没有id值,对象与session 没关联。

      2.持久态 对象里面有id 值,对象与session 有关联。

      3.托管态  对象有id值,对象与sesion 没关联   

    hibernate 一级缓存

  

  hibernate  事务操作

        事务相关概念

hibernate-笔记的更多相关文章

  1. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  2. hibernate笔记--cascade级联以及inverse属性

    cascade : 不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例, ...

  3. Hibernate 笔记 HQL查询 条件查询,聚集函数,子查询,导航查询

    在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题? 解决方案一,按照Object[]数据取出数据,然后自己组bean 解决方 ...

  4. Hibernate笔记一

    背景 jdbc的优缺点 A:直接操作底层,提供了简单,便捷的访问数据库方法,跨平台比较强,灵活,可以写很多赋值的SQL语句:是最底层的数据库操作,所以效率比较高,Sql语句可以自己选择写,采用效率最高 ...

  5. hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存

    二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...

  6. hibernate笔记--缓存机制之 一级缓存(session缓存)

    一级缓存: 又称为session缓存,它和session生命周期相同,周期非常短.是事务级别的缓存: 还是以Book和Category这两个表为例,我们用代码观察一个缓存的存在: 假设现在我要去查询i ...

  7. hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系

    前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...

  8. hibernate笔记--继承映射关系的三种实现方式

    单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...

  9. hibernate笔记--单(双)向的多对多映射关系

    在讲单向的多对多的映射关系的案例时,我们假设我们有两张表,一张角色表Role,一张权限表Function,我们知道一个角色或者说一个用户,可能有多个操作权限,而一种操作权限同时被多个用户所拥有,假如我 ...

  10. hibernate笔记--基于主键的单(双)向的一对一映射关系

    上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...

随机推荐

  1. 前端使用nginx上传文件时,进度获取不对

    在使用iview时,上传文件获取进度时onUploadProgress返回数据不对. 原因是开启了nginx代理,本地上传时先传到本地nginx然后在传到服务器,导致获取进度不对 解决:在nginx的 ...

  2. git之删除过滤

    把不想提交的内容删除过滤 git rm --cached **/** -f

  3. ASICS各跑鞋分类及选购方法

    从跑吧转来的,老帖子后面的鞋子可能不能与时俱进 不过前面的方法不错. 1简介: ASICS鞋子鞋底如果有AHAR或AHAR+的为超耐磨标志,而且超耐度一般都是黑色,用指甲刮鞋底时如刮车轮底胶.ASIC ...

  4. vs2017源文件创建代码自动版权声明注释

    原来在vs2015下用的挺好,顺便移植到2017下. 用文本打开,在其头部加上 “C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterpr ...

  5. Python学习---Python下[set集合]的学习

    Set集合[可变]是一个无序的,不重复的数据组合,它的主要作用如下: 1. 去重,把一个列表变成集合,就自动去重了 2. 关系测试,测试两组数据之前的交集.差集.并集等关系 集合(set):把不同的元 ...

  6. ubuntu桌面便签 sticky note, xpad

    sudo apt-get install xpad 软件有一个选项,叫做Show window decorations,显示窗口的标题栏.

  7. ZT 骆家辉宣布辞职 他给中国带来什么留下什么?

    骆家辉宣布辞职 他给中国带来什么留下什么? 字号|2013年11月20日 15:20    已有1933人阅读    57 导 读 美国驻华大使骆家辉20日上午发表声明,宣布辞职.骆家辉履任期间为中国 ...

  8. 如果把PNG、JPG、BMP和GIF文件批量转换为ICO文件?

    有时候需要将大量的图片文件(比如PNG.JPG.BMP和GIF文件)批量转换为ICO图标文件,如果一个一个操作,非常费时间.本文将介绍如何用Dr. Folder软件快速批量转换图片文件为ICO图标文件 ...

  9. 2017U-Mail邮件营销平台新邮件模板功能

    据U-Mail调查表明,企业用户中普遍最关心群发邮件会不会被列入垃圾箱?的确,哪怕你最用功,一旦邮件进了垃圾箱,意味着全盘尽废.业界知名服务商U-Mail一直想用户之所想,急用户之所急,十几年如一日, ...

  10. swagger使用二:swagger配置多个项目注释

    在项目中采用swagger测试接口,提供接口给其他人员都非常的方便. 在swagger默认配置中,默认只显示接口访问层中的注释,可是很多的参数说明都已经在实体层中了啊?(如下图)不可能再把实体层中的模 ...