SSH框架之HibernateAPI详解:
一、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看起,如果没有那就只能看第一行了。