Hibernate是解决javaEE中的dao层的框架,解决了底层JDBC的连接封装,是一种轻量级的框架。它可以独立运行
Spring框架,管理框架 Struts2-Hibernate就是一个重量级的框架
Hibernate的版本情况,Hibernate3.0+Struts2.0+Spring3.0
Hibernate的核心思想, ORM Object Relative Mapping 对象的关系映射的思想
JDBC的连接步骤
加载驱动的
Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection(uri,username,password);
通过连接来拿到预处理类
通过预处理对象来执行查询。
ResultSet rst=prep.executeQuery();
遍历rst对象
while(rst.next()){}
Hibernate框架就是解决了这层关系,
实体类javabean和数据库之间的关联关系
他可以使用配置文件(对象关系配置文件+核心配置文件)来建立映射关系,解决程序员只需要知道具体实体类的属性和实体类的属性以及实体类,和实体类之间的关系,就可以创建表,这个创建表的过程是由框架完成的。
配置文件的说明
对象关系配置文件hibernate-Mapping文件名称和位置可以任意
核心配置文件hibernate-configuration文件名称和位置必须要在src下命名为hibernate.cfg.xml
property中的name属性指定成员类的类成员的属性,可以省略column字段名称,省略则和name属性一致
property中的type=""属性指定了主键和非主键一般type不用写
hibernate 中的API
Configuration
查看src下是否有Hibernate.cfg.xml
没有就会出现FileNotFoundException。
SessionFactory
通过Configuration对象加载后获得一个SessionFactory对象,保障Session唯一节约
Session
用来操作数据库,类似于Connection 单线程实例
Session为我们提供了增,删,改,查操作。
Transaction
事务,操作一件事情要么成功要么失败
Transaction 原子性,一致性,隔离性,持久性
原子性:做一件事情要么成功,要么失败
一致性:两个一致性状态都要保证同步改变,跟原子性密切相关
隔离性:一个事务操作不能被其他的事务干扰
持久性:一旦事务提交,那么数据库中的数据永远保持持久不会发生变化
Hibernate 框架中,成员属性必须是private修饰
为了提高数据访问数据的安全性
属性是私有的,只能通过public公共的方法来供外界进行访问,作为一个实体类而言,必须要有一个唯一的方法来对应数据库,以保证
Hibernate解决dao层表的创建,主键和外键都可以有框架实现,一般默认属性是ID
在Hibernate的实体类中应该最好使用包装类来声明,因为数据库中存在Null
主键生成策略的配置
<generator class="native"></generator>
native:自动帮助选择不同的数据库
Uuid:Hibarnate采用128位的UUID,32位的16进制字符串
实体类的三种状态
瞬时态,
对象中没有id值,对象跟session没有关联一般做的都是save()操作
持久态,
对象与id值,并且跟session都有关联
查询操作就是持久态
托管态
对象有id值,但是和session是没有关联的。修改操作
Hibernate的缓存问题
两种缓存机制
第一种是一级缓存
Hibernate一级缓存,把数据写到内存中,不需要读取流的方式,可以直接读取内存中的数据
默认操作的特点
Hibernate的一级缓存是默认就是打开的。
Hibernate的一级缓存使用范围是session范围,从session创建到关闭范围
Hibernate的一级缓存,存储数据必须是持久态的数据
二级缓存操作SessionFactory
第二种是二级缓存用redis技术