美文网首页
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