一、Configuration类(一个应用创建一个)
如果有要加载多个hbm.xml,可使用config.addResource("x11.hbm.xml")
或者config.addClass(org.hibernate.x11.class)
config.setProperty()动态配置属性值
二、SessionFactory接口
三、Session(会话)接口
Session接口是Hibernate中的核心接口,它不是Java Web应用中HttpSession接口。Hibernate操作数据库之前必须先获取一个Session对象,相当于JDBC在操作数据库之前必须获取一个Connection对象一样。
//也可以使用Session session=session.openSession()方法
获取Session对象后,Hibernate内部并不会获取操作数据库的java.sql.Connection对象,而是等待Session对象真正需要对数据库进行CRUD等操作时,才会从数据库连接池中获取java.sql.Connection对象。而关闭Session对象时,则是将java.sql.Connection对象返回到连接池中,而不是直接关闭java.sql.Connection对象。
对象的三种状态:瞬时态、持久态、游离态
save() 、update()、saveOrUpdate()、delete()、get()、load()、
contains()、evict()、clear()、createQuery()、createCriteria()、
createSQLQuery()、createFilter()
四、Transaction接口
ACID(原子性、一致性、隔离性、持久性)
不完全隔离事务出现的问题:
更新丢失(两事务试图更新一行数据)、
脏数据(第二个应用使用第一个修改过的数据,但此数据处于未提交状态)、
不可重复度(一个事务两次读取,结果不一样)、
幻读(一个事务两次查询结果增加)
隔离级别:
1读操作未提交、2读操作已提交、4可重读、8可串行化。
五、Query接口(面向对象查询)
list()、iterator()、uniqueQuery()
executeUpdate()更新或删除、setFirstResult()、setMaxResult()与前一结合使用实现分页。
HQL http://blog.chinaunix.net/article.php?articleId=47942&blogId=1655
六、Criteria接口(QBC、面向对象)
setProjection()