Hibernate框架学习笔记——02

实体类编写规则

  1. 实体类里面属性私有的
  2. 私有属性使用公开的set和get方法操作
  3. 要求实体类有属性作为唯一值(一般使用id值)
  4. 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类
(1)八个基本数据类型对应的包装类
- int – Integer
- char—Character、
- 其他的都是首字母大写 比如 double – Double
(2)比如 表示学生的分数,假如 int score;
- 比如学生得了0分 ,int score = 0;
- 如果表示学生没有参加考试,int score = 0;不能准确表示学生是否参加考试
	解决:使用包装类可以了, Integer score = 0,表示学生得了0分,
	表示学生没有参加考试,Integer score = null;

Hibernate主键生成策略

  • hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略
  • hibernate主键生成策略有很多的值
    在这里插入图片描述
  • 在class属性里面有很多值
    (1)native: 根据使用的数据库帮选择哪个值
    (2)uuid:之前web阶段写代码生成uuid值,hibernate帮我们生成uuid值
    在这里插入图片描述

实体类操作

添加操作

  • 调用session里面的save方法实现
    在这里插入图片描述

根据id查询

  • 调用session里面的get方法实现
    在这里插入图片描述

修改操作

先查询,再修改
在这里插入图片描述

删除操作

  • 调用session里面delete方法实现
    在这里插入图片描述

实体类对象状态

  • 瞬时态:对象里面没有id值,对象与session没有关联
  • 持久态:对象里面有id值,对象与session关联
  • 托管态:对象有id值,对象与session没有关联

Hibernate一级缓存

什么是缓存

1 数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。
(1)把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据
(2)把数据放到内存中,提供读取效率

Hibernate缓存

  1. hibernate框架中提供很多优化方式,hibernate的缓存就是一个优化方式
  2. hibernate一级缓存特点
    (1)hibernate的一级缓存默认打开的
    (2)hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围
    (3)hibernate的一级缓存中,存储数据必须 持久态数据
    在这里插入图片描述

Hibernate事务代码规范写法

//代码结构
try {
  开启事务
  提交事务
}catch() {
  回滚事务
}finally {
  关闭
}

public void testTx() {
		SessionFactory sessionFactory = null;
		Session session = null;
		Transaction tx = null;
		try {
			sessionFactory = HibernateUtils.getSessionFactory();
			session = sessionFactory.openSession();
			//开启事务
			tx = session.beginTransaction();
			
			//添加
			User user = new User();
			user.setUsername("小马");
			user.setPassword("250");
			user.setAddress("美国");
			
			session.save(user);
			
			int i = 10/0;
			//提交事务
			tx.commit();
		}catch(Exception e) {
			e.printStackTrace();
			//回滚事务
			tx.rollback();
		}finally {
			//关闭操作
			session.close();
			sessionFactory.close();
		}
	}


Hibernate 的API使用

Query对象

1 使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似
(2)hql和sql语句区别:
- 使用sql操作表和表字段
- 使用hql操作实体类和属性

2 查询所有hql语句:
(1)from 实体类名称

3 Query对象使用
(1)创建Query对象
(2)调用query对象里面的方法得到结果

在这里插入图片描述

Criteria对象

1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
2 实现过程
(1)创建criteria对象
(2)调用对象里面的方法得到结果

在这里插入图片描述

SQLQuery对象

1 使用hibernate时候,调用底层sql实现
2 实现过程
(1)创建对象
(2)调用对象的方法得到结果

在这里插入图片描述
注意:上面返回list集合每部分是数组

原创文章 19 获赞 8 访问量 870

猜你喜欢

转载自blog.csdn.net/qq_41519304/article/details/105407288
今日推荐