hibernate个人总结

  1. hibernate的环境安装,映射文件配置,核心文件配置
    1. 环境安装
      1. 下载hibernate;引入jar包,创建实体类
    2. 映射文件配置
      1. 建立类与表的映射<hibernate-mapping> <class  name=”实体类的全路径”  column=”表的名字”>;
      2. 建立类中属性与主键的对应 <id name=”实体类的主键对象” column=”表对应的主键”>;
      3. 配置类中普通属性与表的对应<proterty>
    3. 核心文件配置 <hibernate-configuration>

 <session-factory>

<property name=””>com.mysql.cj.jdbc.driver</property>  (连接数据库基本参数)

<property name=””> </property> (配置hibernate方言)

<mapping  resource=”hbm.xml的全路径”/>

  1. Sessionfactory
    1. Session的创建

创建hibernate的工具类

  1. hibernate的增,删,改,查
    1. 查:
      1. 查询单个:session.get(customer.class,id)/session.load(customer.class,id)注意get和load的区别

 

                       2查询所有:SQLQuery query=session.createsqlquery(select * from customer)

                                             List<customer> list=query.list();

 

    1. 增:先创建一个新对象(customer customer=new customer();),再设置对象的值(session.setcust_name()),再保存(session.saveorupdate();)
    2. 删:先查询到要删除的对象(get/load),session.delete(对象)
    3. :先查询到要删除的对象(get/load),再设置对象的值(session.setcust_name()),再保存(session.saveorupdate();)

 

 

 

  1. 什么是hibernate的持久化类
    1. hibernate是一个持久层的orm映射框架(持久就是将内存中的数据永久存储到关系型数据库中,orm是对象关系映射)
    2. 持久化类:就是一个普通Java类与数据库建立了映射关系
  2. 持久化类的编写规则了解
  3. 持久化类对象的三种状态及转换了解持久态
  4. 为什么持久态可以自动更新数据库?

因为一级缓存(一级缓存就是session缓存,减少程序对数据库的操作次数)

为什么一级缓存就可以自动更新?

因为一级缓存的内部结构有快照区(详情原理见笔记)hibernate向一级缓存存放数据会先向快照区存放一份同样的数据,快照区的作用就是保证一级缓存数据与数据库数据一致

  1. Hibernate的事务控制
    1. 事务的介绍(详情见笔记)
    2. Hibernate事务隔离级别设置:

    1. 如何保证在service层开启的事务使用的session跟在dao层事务使用的session是同一个?

就是将session加入当前线程,dao层就直接从线程中获得session

    1. Hibernate的其他API
      1. Query(面向对象查询+hql)
        1. Query query=session.createQuery(from customer where name=?);创建查询对象
        2. Query.setString(0,张三)有条件一个list集合
        3. Query.list();返回
        4. 若是分页,query.setFirstResult(3);query.setMaxResult(3);
        5. 确保只有一条查询返回记录可以用uniqueResult()
      2. Criteria(完全面向对象)
      3. Sqlquery(sql)
        1. 手动将查询对象封装到实体中

 

  1. Hibernate一对多关系的配置
    1. 一的一方映射文件配置:<set(name=多的一方对象集合的属性名称)
      1. 创建实体注意一的实体放多的一方的实体集合,多的实体里放一的实体对象

    <Key(column=多的一方的外键的名称)

    <One-to-many(class=多的一方的类的全路径)

    2.多的一方映射文件配置:<many-to-one name=一的一方的对象属性名,

Class=一的一方的类的全路径

Column=多的一方的外键的名称

      1. 一对多的相关操作
        1. 保存的时候两边都要保存(两边都要关联),所以用到级联
        2. 级联保存或更新,在两边配置可以
          1. 一的一方在set标签配置   cascade=“save-update”
          2. 多的一方在many-to-one标签里面同样的配置
        3. 级联删除  cascade=“delete”
        4. 一对多设置双向关联产生多的sql语句

使一方放弃外键维护权:在set上设置inverse=true

 

    1. 多对多的配置
      1. <set name=对方对象属性名称   table=中间表名称

<key column=当前对象对应中间表的外键名称

<many-to-many class=对方类的全路径 colum=对方对象在中间表对应的外键名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值