1、Hibernate接口
访问数据库操作的接口:Session、Transaction、Query
配置Hibernate的接口:Configuration
【五大核心接口】【考】
Configuration接口:配置Hibernate,启动Hibernate,创建sessionFactory对象
Session接口:持久化操作的基础,相当于JDBC的connection(自动提交事务),提供了一系列的持久化操作方法save(),update(),delete(),load(),find()【考选择题,没有谁?】
还持有一级缓存。(获得了session相当于获得了数据库连接,执行session方法时候必须要放在事务中,非自动提交事务)
即:不开启事务就不能将对象保存在数据库中!!
如何获得session对象?
1)openSession:手动关闭,每次创建心得session对象
2)getCurrentSession:自动关闭,使用现有的session对象
SessionFactory接口:保存了当前数据库配置的所有映射关系,保存在内存中。还是生成Session的工厂,一个SessionFactory对应一个数据库连接(可创建多个session,每创建一个session记得要关闭session啊,如果不关闭,那么hashcode就不一样)
Transaction接口:实现数据库中的事务的控制,是由Session对象产生的,所以他的生命周期比Session短,Ssession的生命周琪中可以有多个Transaction对象
Query接口和Criteria接口:执行数据库的查询
else:
大类型向小类型转换即强转类型转换-简称强转或显式类型转换
2、单表的CRUD操作实例:
save()
update()
Student s = (Student)session.get(String.class,100)//,反射机制,主键100
s.setGender("女");
session.update(s);
delete()
Student s = (Student)session.get(String.class,100)//,反射机制,主键100
session.update(s);
或者
tx=sesion.beginTransaction();
session.delete("from Customer as c");
tx.commit()
;get/load()
Student s =(Student) session.get(String.class,100)//,反射机制,主键100,立刻发送sql语句
Student s = (Student)session.load(String.class,100)//,反射机制,主键100,等要使用这个对象的时候才发送sql语句,返回代理对象
system.out.println(s);
3、Hibernate对象的生命周期【考】
(1)瞬态:表示该实体对象与数据库中的数据无任何关联,也从未与任何持久化上下文联系过,也没有持久化标识(主键)
(2)持久态:一个实体对象与一个Session对象的实例相关的。也与数据库数据相关联。Hibernate会根据持久态对象的属性的变化而改变数据库中的相应记录
(3)游离态:由持久态对象转换而来,不再与Session关联,与数据库的中数据没有直接联系