美文网首页
Hibernate 框架

Hibernate 框架

作者: Playbob | 来源:发表于2017-04-20 15:26 被阅读24次

    JavaEE 三层结构:

    web层 :struts2
    server层 : Spring
    dao层 : Hibernate 对数据库进行crud操作

    MVC思想:model view controller

    Hibernate

    1. 底层实际上是对 jdbc 进行封装
    2. 开源轻量级框架
    3. 目前使用 Hibernate5 版本

    ORM 思想

    1. hibernate 使用orm思想对数据进行crud操作
    2. 使用实体类
    3. orm:object relational mapping 对象关系映射


      映射关系
    创建实体类,直接操作实体类完成数据库操作 导入需要使用的jar包 映射关系

    创建hibernate 配置文件

    1. 文件名: hibernate.cfg.xml
    2. 引入 dtd 约束
    约束

    配置Hibernate

    (1) 配置数据库信息


    数据库信息

    (2) 配置hibernate信息


    hibernate信息

    (3) 配置 映射文件


    映射文件

    映射文件细节注意:

    1. class标签 name属性值为实体类全路径名
    2. id标签和property标签 name属性值, 实体类属性名称
    3. column 可以不写,不写的话会默认和name值保持一致

    核心配置文件细节注意:

    1. 配置文件位置固定,src目录下
    2. 固定文件名 hibernate.cfg.xml

    核心api

    加载 hibernate.cfg.xml文件

    Configuration config = new Configuration().config();

    SessionFactory (重点)

    • 使用 Configuration 对象可以创建该对象
    • 创建 sessionFactory 这个过程特别耗资源(可使用静态代码块来实现,保证整个系统中只创建一次)
    使用工具类确保只创建一次

    Session

    1. 类似于jdbc中的connection
    2. 调用session里面的不同的方法实现crud操作
    3. session 对象是单线程对象(session只能自己使用,不能公用)

    Transaction

    1. 事务对象

            Transaction tx = session.beginTransaction();
      
    2. 事务提交和回滚操作

           tx.commit();
           tx.rollback();
      
    3. 事务概念

      • 原子性
      • 一致性
      • 隔离性
      • 持久性

    Query 对象

    • 使用Query查询,不需要写sql语句,但是需要写 hql语句

      // 1 创建Query对象
          Query query = session.createQuery("from User");
      // 2  调用Query对象的方法得到对象
          List<User> users = query.list();
      

    Criteria 对象

      // 1 创建Criteria 对象
          Criteria criteria = session.createCriteria (User.class);
      // 2  调用Criteria 对象的方法得到对象
          List<User> users = criteria.list();
    

    SQLQuery 对象

        // 创建对象
        SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");
        sqlQuery.addEntity(User.class);
        List<User> list = sqlQuery.list();
    

    配置文件没有提示

    1. 可以上网,就能有提示,因为约束文件可以加载到
    2. 不能上网,可以把约束文件导入到eclipse中
    配置约束文件 配置约束文件

    实体类编写规则

    • 实体类中的属性都是私有的
    • 实体类中的set和get方法都是公有的
    • 实体类中要有属性是唯一的(一般使用id值)
    • 实体类属性建议不使用基础数据类型,建议使用基础类的包装类
      • 比如表示学生的分数 int score;
      • 比如表示学生得了 0 分, int score = 0;
      • 学生没有参加考试 ,int score = null; 不可行,此时使用包装类 Integer 即可解决问题

    Hibernate 主键生成策略

    方式1
    • native : 根据实际使用的数据库选择合适的值
    • uuid : 生成 uuid 作为 主键值
      • 主键的属性需要设置为 String 类型
        <generator class="uuid"></generator>

    对实体类进行增删改查操作

    插入操作 更新操作 删除操作1 删除操作2

    实体类对象状态

    1. 瞬时态 : 对象里边没有id,跟session也没有关联
    2. 持久态 : 对象里边有id,跟session有关联
    3. 托管态 : 对象里边有id,跟session无关联

    Hibernate 的一级缓存

    什么是缓存
    • 把数据存到内存中,不使用流的方式,可以直接从内存中取数据
    • 把数据放在内存中,提高读取效率
    一级缓存特点 一级缓存特性(不调用update仍能更改数据) 一级缓存特性原理

    Hibernate 事务代码规范写法

    事务规范写法

    Session 绑定线程

    配置session 获取session

    相关文章

      网友评论

          本文标题:Hibernate 框架

          本文链接:https://www.haomeiwen.com/subject/vgclzttx.html