1、Configuration
hibernate的配置对象,用来加载核心配置文件,加载映射文件
new Configuration();//加载hibernate.properties
new Configuration().configure();//加载hibernate.cfg.xml
new Configuration().configure().addResource();//手动加载映射文件
2、SessionFactory对象
通常一个项目只需要一个。内部维护了hibernate的连接池,hibernate的二级缓存(不使用了)。线程安全的。
可以自己配置c3p0连接池
抽取工具类
public class HibernateUtils {
public static final Configuration cfg;
public static final SessionFactory sf;
static {
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
}
public static Seesion openSession() {
return sf.openSession();
}
}
3、Session对象
类似Connection对象。不是线程安全的。用来支持持久化CRUD操作。
-
保存对象:
save(),返回保存记录的Id
-
查询方法:
get()方法
load()方法
两者的区别: load使用了延迟加载,当使用到其中的某个属性才调用语句去查询,查询后返回的是代理对象,利用javassist技术产生的代理。get采用的是立即加载,执行到这行代码时,马上发送语句查询,返回的是真实对象本身。
-
修改方法:update()方法,直接创建对象在修改。或者先查询在修改。
-
删除方法:delete()方法,直接创建对象,删除。或者先查询在删除。
-
保存或更新:saveOrUpdate()方法
-
查询所有:createQuery()方法,使用HQL。query.list(),遍历获取值。
4、Transaction
事务对象,Hibernate管理事务。
- commit()
- rollback()