什么是 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. html高度塌陷问题解决

    高度塌陷的问题: 当开启元素的BFC以后,元素将会有如下的特性 1 父元素的垂直外边距不会和子元素重叠    开启BFC的元素不会被浮动元素所覆盖    开启BFC的元素可以包含浮动的子元素 如何开启 ...

  2. iview框架下,modal内容过长,select选项位置不对

    问题 modal组件中内容过长,超过一屏,有滚动条后,里面包含的select组件选项内容,位置会不对 解决 在使用select的时候添加transfer属性

  3. ajax方法XHR.readyState五种状态与示例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 关于background定位

    直到刚刚我才发现我小瞧了background定位 因为项目里需要显示隐藏的按钮上有两个图标 开始想了几种方法都不行,然后突然就想到了background定位 果断试了一下 <input type ...

  5. push本地代码到github发生错误的解决办法

    有一天,我在github上编写好了README.md这个文件,接着发现本地有段代码忘记上传了,于是熟练的输入git add .   git commit -m "modify",以 ...

  6. PHP 使用WampServer环境,如何配置虚拟主机域名

    很多人不会配置虚拟主机,我这里简单交一下大家,分三步: 1.在 C:\Windows\System32\drivers\etc 文件夹中的文件 Hosts 文件修改代码为: 127.0.0.1 loc ...

  7. Windows ->> Windows下一代文件系统 -- Resilient file system(ReFS)

    Comming soon!!! 参考文献: Building the next generation file system for Windows: ReFS ReFS: What you need ...

  8. Scrapy框架Windows下安装

    在windows下安装好Python3 后,安装Scrapy也有许多种方法,我这里采用pip 安装.前提您已经安装了pip 直接在cmd命令行中 pip install Scrapy building ...

  9. 【Leetcode】【Medium】Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  10. Docker的安装及加速

    使用 yum 安装(CentOS 7下) Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname ...