目录
Hibernate基本操作具体使用
Hibernate操作
1.导入jar包(并Build Path)
2.设置本地.dtd文件验证xml文档(提供代码提示功能)
Location:为自带Hibernate.hbm.xml、 Hibernate.cfg.xml映射文件所在的路径
一般为:project\hibernate-core\src\main\resources\org\hibernate
Key Type | 描述 |
---|---|
Public ID | 文件头注释可取到 |
URI | 文件头注释<!DOCTYPE>可取到 |
Key下面的Alternate也可选择配置,那么Key type则要选择Public ID。
3.编写核心配置文件(hibernate.cfg.xml) 、编写映射文件(实体类名.hbm.xml)
4.编写代码实现
使用Hibernate完成持久化操作
通过Hibernate API访问数据库
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.getCurrentSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
使用Hibernate操作数据库包括七个步骤
(1)读取并解析配置文件及映射文件
//加载默认核心配置文件
Configuration conf = new Configuration().configure();
根据每人位置的Hibernate配置文件中的信息,构建Configuration对象。Configuration负责管理Hibernate的配置信息
(2)依据配置文件和映射文件中的信息,创建SessionFactory对象
SessionFactory sf = conf.buildSessionFactory();
Configuration对象会根据当前的数据库配置信息,构造SessionFactory对象。SessionFactory对象一旦构造完毕,Configuration对象的任何变更将不会影响已经创建的SessionFactory对象。如果Hibernate配置信息有改动,那么需要基于改动后的Configuration对象重新构建一个SessionFactory
(3)打开Session
Session session = sf.openSession();
Session session = sf.getCurrentSession();
SessionFactory负责创建Session对象;Session是Hibernate持久化操作的基础,Session作为贯穿Hibernate的持久化管理器的核心,提供了众多的持久化方法,如save(),delete(),update(),get(),load()等。
通过这些方法,即可透明地完成对象的增、删、改、查(CRUD)
(4)开始一个事务
Transaction tx = session.beginTransaction();
(5)数据库操作
// 保存操作
session.save(user);
(6)结束事务
// 提交事务
tx.commit();
// 回滚事务
tx.rollback();
(7)关闭session
session.close();
如果是通过SessionFactory的openSession()方法获取的Session对象,则需要关闭session
如果在Hibernate配置文件中将参数current_session_context_class设置为thread,并采用SessionFactory的getCurrentSession()方法获得Session对象,则不需要执行session.close()方法,通过这种方法获得的Session对象,会在关联的事务结束(提交或回滚)时自动关闭。
在项目开发的时,一般使用工具类来管理SessionFactory和Session,采用SessionFactory的getCurrentSession()方法来获取Session对象
结合Hibernate配置文件中如下设置:
<property name=”current_session_context_class”/>thread</property>
使用Hibernate实现主键查询
在进行修改或删除操作时,应先加载对象,然后在执行修改或删除操作,Hibernate提供了两种方法按照主键加载对象:get()和load()方法
// 没有主键为id数据返回null
Object get(Class clazz , Serializable id);
// 没有主键为id数据,运行到获取实体类值的时候会抛出异常ObjectNotFoundException(对象没有找到)
Object load(Class clazz , Serailizable id);
虽然都能够加载对象,但是它们有区别
使用Hibernate实现数据库的增、删、改操作
增加:调用save()方法 主键第一个值可以使用new Byte()设定
删除、修改:首先要获得数据,然后在进行修改和删除数据