1. Configuration:Hibernate的配置对象
Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。
写法:
// 默认加载了hibernate.cfg.xml配置文件
Configuration configuration = new Configuration().configure();
2. SessionFactory: Session工厂
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存。一般情况下,一个项目只需要一个SessionFactory,只有当应用中存在多个数据源时,财位每个数据源建立一个SessionFactory实例。在实际项目中,通常会抽取一个HibernateUtils的工具类,用来提供Session对象。
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static final Configuration configuration;
private static final SessionFactory sessionFactory;
static {
configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
public Session getSession() {
return sessionFactory.openSession();
}
}
SessionFactory具有以下特点:
- 它是线程安全的,同一个实例能够提供多个线程共享。
- 它是重量级的,不能随意的创建和销毁它的实例。
3.Session:类似于Connection对象
Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
代表的是Hibernate于数据库连接的一个对象。不是线程安全的。执行操作数据库的方法。
常用的几个方法:
-
save(Object obj) 将对象的属性保存到数据库中
-
T get(Class c, Serializable id); 根据id获取实体对象
-
T load(Class c ,Serializable id); 根据id获取实体对象
get() load()方法的区别:
get()方法:
(1)采用的是立即加载,执行到这行代码的时候,就会立马执行SQL语句
(2)查询后返回真实对象本身
(3)查询一个找不到的对象时,返回为null
load()方法:
(1)采用延迟(懒)加载,执行到这行代码的时候,不会立马发送SQL语句,当真正使用这个对象的时候才会执行SQL语句
(2)查询后,返回的是代理对象
(3)查询一个找不到的对象时,抛出异常 -
void update(Object obj) 根据id进行修改
注意:这里需要先查询在修改,否则的话,就会覆盖原先数据库中的内容 -
void delete(Object obj) 根据id进行删除
建议:采用先查询在删除,方便级联删除 -
void saveOrUpdate(Object obj) 对象中没有id的时候,进行保存,有id的时候,进行更新
4.Transaction:事务对象
Hibernate中管理事务的对象
- commit() 提交
- rollback() 回滚