专栏首页柠檬先生hibernate-笔记

hibernate-笔记

什么是 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  事务操作

        事务相关概念

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • zepto 基础知识(1)

    1.$() 的用法。   获取元素     $('div') //获取所有页面中的div元素     $('#foo') // 获取ID ...

    用户1197315
  • Extjs grid 组件

    表格面板类Ext.grid.Panel 重要的配置参数 columns : Array 列模式(Ext.grid.column.Columnxtype: gr...

    用户1197315
  • jquery 层级选择器

    关于层级选择器。 $("parent > child") 选择所有指定“parent”元素中指定的“child”的直接子项元素。 parent :...

    用户1197315
  • 【SSH快速进阶】——Hibernate环境搭建

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • J2EE中搭建hibernate 原

    注意:如果只是搭建hibernate的话不需要再Web.xml中配置hibernate信息

    克虏伯
  • 第16章 Spring Boot + Kotlin: 下一代 Java 服务端开发

    2017-11-22 11:55:17.205 INFO 14721 --- [ main] org.hibernate.Version ...

    一个会写诗的程序员
  • Hibernate之HelloWorld

    qubianzhong
  • Hibernate的基本配置

    爱撒谎的男孩
  • springboot+druid+mybatis plus的多数据源配置

    参考上面的方法,可以随意配置三四五六七八九十个数据源都没问题,有问题欢迎随时来撩!

    小尘哥
  • springboot+druid+mybatis plus的多数据源配置

    参考上面的方法,可以随意配置三四五六七八九十个数据源都没问题,有问题欢迎随时来撩!

    小尘哥

扫码关注云+社区

领取腾讯云代金券