Hibernate的Api
一、Configuration 配置管理类对象
1、config.configure(); 加载主配置文件的方法(hibernate.cfg.xml)
默认加载src/hibernate.cfg.xml
2、config.configure(“cn/config/hibernate.cfg.xml”); 加载指定路径下指定名称的主配置文件
3、config.buildSessionFactory(); 创建session的工厂对象
package sram.hello;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class App2 {
private static SessionFactory sf;
static{
/*
//1.创建配置管理类对象
Configuration config = new Configuration();
// 加载配置文件(默认加载src/hibernate.cfg.xml)
config.configure();
//2.根据加载的配置管理类对象,创建SessionFactory对象
sf = config.buildSessionFactory();
*/
//创建sf对象
sf = new Configuration().configure().buildSessionFactory();
}
二、SessionFactory:session的工厂(或者说代表了这个hibernate.cfg.xml配置文件)
1、sf.openSession(); 创建一个sesison对象
2、sf.getCurrentSession(); 创建session或取出session对象
三、Session:session对象维护了一个连接(Connection), 代表了与数据库连接的会话。
Session是Hibernate最重要的对象:只要使用hibernate与数据库操作,都用到这个对象。
1、session.beginTransaction(); 开启一个事务; hibernate要求所有的与数据库的操作必须有事务的环境,否则报错!
2、更新:
1)session.save(obj); 保存一个对象
2)session.update(emp); 更新一个对象
3)session.saveOrUpdate(emp); 保存或者更新的方法:
a)没有设置主键,执行保存;
b)设置主键,执行更新操作;但是注意:如果设置主键不存在报错!
3、主键查询:
1)session.get(Employee.class, 1); 主键查询
2)session.load(Employee.class, 1); 主键查询 (支持懒加载)
四、Transaction hibernate事务对象
五、问题:
1、ClassNotFoundException….异常的原因
答:缺少jar文件!
2、如果程序执行了,hibernate也生成了sql语句,但数据没有结果影响。
答:一般是事务忘记提交或者根本就未开启事务等…….
查询可以不提交事务,因为查询只是只读事务,没有修改操作。
六、处理问题:
遇到问题,一定要学会看错误提示!
错误信息从下往上看,从一个cause by看起,如果没有那就只能看第一行了。