• 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  事务操作

            事务相关概念

  • 相关阅读:
    Mrrobot靶机渗透实战-vuluhub系列(六)
    Evilscience靶机渗透实战-vulnhub系列(五)
    raven靶机实战(linux-udf提权)-vuluhub系列(四)
    XXE靶机实战-vuluhub系列(三)
    Library靶机cookie注入-vuluhub系列(二)
    nodejs 搭建 RESTful API 服务器的常用包及其简介
    webpack分离第三方库(CommonsChunkPlugin并不是分离第三方库的好办法DllPlugin科学利用浏览器缓存)
    react 热替换 ([HMR])
    React-Router 4 的新玩意儿
    nodejs爬虫
  • 原文地址:https://www.cnblogs.com/nmxs/p/7762650.html
Copyright © 2020-2023  润新知