您的位置:首页 > 其它

Hibernate核心API详解

2017-05-20 17:10 323 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate