Hibernate核心API详解

Configuration类,类负责管理 Hibernate 的配置信息
包括如下内容:
加载 hibernate.properties 和 hibernate.cfg.xml
持久化类与数据表的映射关系(*.hbm.xml 文件)

创建 Configuration :
构造方法,new Configuration()获得当前实例,可以加载hibernate.properties
Configuration cfg = new Configuration(); // 手动加载hbm

Xml文件(hibernate.cfg.xml)
Configuration cfg = new Configuration().configure();

.configure() 用于加载hibernate.cfg.xml

通过Configuration对象 addResource方法添加hbm文件映射
config.addResource(“com/my/bean/User.hbm.xml”);

通过addClass添加持久化类,Hibernate会在类所在包 自动搜索hbm 映射文件
config.addClass(User.class);

Configuration对象根据当前的配置信息生成 SessionFactory对象
SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句
SessionFactory 对象是线程安全的
SessionFactory还负责维护Hibernate的二级缓存
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
可以通过SessionFactory对象 获得Session对象
Session session = sessionFactory.openSession();

构造SessionFactory 很消耗资源,一般情况下一个应用只初始化一个

方法:
openSession() , 获得session对象(获得链接)
getCurrentSession() , 二级缓存使用

org.hibernate.Session 接口,相当于链接Connection

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
Session是线程不安全的
所有持久化对象必须在 session 的管理下才可以进行持久化操作
Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处
持久化类与 Session 关联起来后就具有了持久化的能力

方法 :
beginTransaction() ,开启事务
createQuery(String queryString) ,创建query对象,执行HQL语句
save(Object object) ,保存对象(自动添加id)
update(Object object) 更新对象(通过id)
saveOrUpdate(Object object) ,id如果没有值,将执行save,自动添加id值,如果id有值将执行update语句
delete(Object object) 通过id删除,传递是javabean对象
get(Class clazz, Serializable id) 通过id查询
load(Class theClass, Serializable id) 通过id查询
createSQLQuery(String queryString) ,执行sql (不常用)
createCriteria(Class persistentClass) ,通过hibernate提供api直接拼凑对象生成sql
close() 关闭链接,释放资源

Transaction 事务操作

代表数据库操作的事务对象
Transaction transaction = session.beginTransaction();
提供事务管理的方法
commit():提交相关联的session实例
rollback():撤销事务操作
wasCommitted():检查事务是否提交

如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务

Query对象,执行HQL语句,hibernate query language ,与sql相同,但操作的是对象

方法:
list(),获得所有的数据
query.setFirstResult(startIndex); ,设置开始索引
query.setMaxResults(pageSize);,设置每页显示个数
query.uniqueResult() , 获得HQL直接只有一个结果,如果结果不是一个将抛异常
** 例如:session.createQuery(“select count(*) from User”).uniqueResult();

Coding Diary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值