前言
在上一篇日志的基础上对Hibernate进行升级并且根据Query用法进行查询
提示:以下是本篇文章正文内容,下面案例可供参考
一、基本概念
1、Configuration:
概述: Configuration类负责管理Hibernate的配置信息。启动Hibernate、创建SessionFactory对象。
(1) Hibernate运行的底层配置信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。
(2) Hibernate对象关系映射文件(*.hbm.xml) 。
Hibernate配置的两种方法:
(1)属性文件( (hibernate.properties)
调用代码:Configuration cfg = new Configuration();
(2)XML文件(hibernate.cfg.xml) 。
调用代码:Configuration cfg = new Configuration().configure();
configrure()方法默认读hibernate.cfg.xml
2.SessionFactory:
概述:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。
(1) SessionFactory是线程安全的(Thread-Safe),可以让多个执行线程同时存取SessionFactory而不会有数据共享的问题。
(2) 会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。
(3) 需要注意的是SessionFactory是重量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够(单例模式),当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
调用代码: SessionFactory sessionFactory =cfg.buildSessionFactory();
3.Session
概述:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流)
(1)Session也称为持久化管理器,因为它是与持久化有关的操作接口。
(2)Session不是线程安全的,应该避免多个线程共享同一个Session实例。
(3)Session通过SessionFactory打开,在所有的工作完成后,需要关闭。
(4)保证在一个线程中仅存在一个Session实例
getCurrentSession (Hibernate 3+)
可以采用ThreadLocal的办法.(Hibernate 2)
把Session对象放在方法内部定义.
它与Web层的HttpSession没有任何关系。
4.Transaction(事务)
概述: Transaction接口负责事务相关的操作。
它将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。
这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
调用代码:
Transa