一.搭建环境
1. 导入依赖包
依赖包问题有两个方式,可以直接下载hibernate依赖包或者使用maven通过中心库下载。
依赖包中C3P0不是必须
hibernate-entitymanager是jpa的依赖包
2.配置主配置文件
主配置文件通常放置在src目录下,因为hibernate有默认的无参方法可以直接加载这个位置的配置文件,主配置文件名为hibernate.hbm.xml,注意这里的hibernate.cfg是文件名。.xml为扩展名
在配置属性之前我们使用hibernate提供的约束文件以帮助我们配置。文件位置在依赖库中的hibernate-core jar包中的org.hibernate包,hibernate-configurnation-3.0.dtd
导入约束
关于最后一个连接映射文件,我们需要写从src下的文件路径
3.编写实体类并配置映射文件
通常我们将实体类和映射文件写在同一包下,实体类的编写对应数据库表即可。映射文件名为类名.hbm.xml。同样导入hibernate-mapping-3.0.dtd约束文件
二.使用功能
hibernate框架的作用就是CRUD那么他的核心也必然是对数据库的连接,操作前的步骤:
1使用configuration的configure()方法加载默认的配置文件。
2.调用buildSessionFactory方法创建session工厂
3.调用openSession方法得到Session对象
4.开启事务 session.beginTransation:在hibernate框架的增删改查中开启事务是一个必须的过程,有很多方法依赖于事务,例如update方法
5.创建一个对象调用sesison.save方法持久化到数据库,提交事务
以上就是hibernate的一个简单操作流程,这里面要着重提一个词(持久化)。为什么要说持久化呢,这里要谈到hibernate对执行操作过程中对象的所分的三种状态。
三、hibernate对象的三种状态
瞬时状态:当一个对象被直接创建时,不存在OID以及与session连接没有发生联系,就称这个对象的状态为瞬时状态,在这个状态下的任何操作都不会影响到数据库中的数据。
持久化状态:当一个对象有了OID并被session操作过与之发生了联系,这时称这个对象为持久化状态,这种状态下任何修改对象属性的操作都会在事务提交时同步到数据库中去。
这个他是怎么做到的呢? 这里hibernate框架使用了缓存技术以及快照技术:首先当一个对象变为持久化状态后,这个对象会存入到hibernate提供的一个缓存集合中和快照集合中去,这时,这两个对象是一模一样的,当我们修改该对象时,操作的就是缓存中的对象,在事务提交时,hibernate会比对快照中的对象与缓存中的对象,当两个对象不一致时就会像数据库写入缓存中对象。
游离状态:当一个对象有OID但没有和session产生联系,这时这个对象是一个游离对象,对该对象的任何操作不会影响数据库中的数据。