Hibernate框架的多个特点

一、实体类编写规则

1 实体类里面属性私有的

2 私有属性使用公开的setget方法操作

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主键生成策略

    流行使用将主键设置成自动增长的,如下

 <!-- 
   	native:生成表的id值就是主键自动增长
     -->
    <generator class="native"></generator>

三、对实体类的crud操作

1.调用session的save方法实现添加操作

        Student stu = new Student();
	stu.setAge(36);
	stu.setStuName("王强");
	stu.setStuNo("20142480244");
	session.save(stu);

2.调用session的get方法实现根据id查询操作

        Student stu = session.get(Student.class, 4);
        System.out.println(stu);

3.修改操作 ,先查询出来,再用session的update方法修改,下面方法将查询出来的学生名字改为小明

        Student stu = session.get(Student.class, 1);
	stu.setStuName("小明");
	session.update(stu);

4.删除操作,调用session的delete操作,也是先查询再删除    

		Student stu = session.get(Student.class, 1);
		session.delete(stu);

四、实体类对象的状态

1.瞬时态:对象里面没有id值,对象与session没有关联

2.持久态:对象里面有id值,对象与session关联

3.对象有id值,对象与session没有关联

五、Hibernate的缓存

 hibernate框架中提供很多优化方式,hibernate的缓存就是一个优化方式

1.第一类 hibernate的一级缓存

1hibernate的一级缓存默认打开的

2hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围

3hibernate的一级缓存中,存储数据必须 持久态数据

 2. hibernate的二级缓存

1)目前已经不使用了,替代技术 redis

2)二级缓存默认不是打开的,需要配置

3)二级缓存使用范围,是sessionFactory范围

Hibernate的一级缓存执行过程

一级缓存特性:持久态实体类自动更新数据库

六、Hibernate事务操作

1.不考虑隔离性产生问题

1)脏读

2)不可重复读

3)虚读

 

2.设置事务隔离级别

1mysql默认隔离级别 repeatable read

3.Hibernate代码规范

try {

  开启事务

    具体操作

  提交事务

}catch() {

  回滚事务

}finally {

  关闭

}

七、Hibernte的session绑定本地线程操作
1、在Hibernate核心配置文件中配置
<!-- session绑定本地线程 -->
		<property name="hibernate.current_session_context_class">thread</property>

2.通过方法获取本地线程session

public static Session getSession(){
		return factory.getCurrentSession();
	}
3.获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了

八、Hibernate的API使用

1.Query

1> 使用query对象,不需要写sql语句,但是写hql语句

1hqlhibernate query languagehibernate提供查询语言,这个hql语句和普通sql语句很相似

2hqlsql语句区别:

- 使用sql操作表和表字段

- 使用hql操作实体类和属性

2 >查询所有hql语句:

1from 实体类名称

3> Query对象使用

1)创建Query对象

2)调用query对象里面的方法得到结果

使用Query对象查询所有的例子如下

Query query = session.createQuery("from Student");
			List<Student> stuList = query.list();

2.Criteria对象

 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现

实现过程

1)创建criteria对象

2)调用对象里面的方法得到结果

	Criteria criteria = session.createCriteria(Student.class);
			List<Student> stuList = criteria.list();

3.SQLQuery对象(用的不多)

1 使用hibernate时候,调用底层sql实现

2 实现过程

1)创建对象

2)调用对象的方法得到结果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值