基本概念和CURD
Hibernate需要的三个条件
(1)、Domain类
(2)、 映射文件User.hbm.xml
(3)、表create table user();
一、开发流程
1、 由Domian object –>mapping->db(官方推荐)
2、 由DB开始,用工具生成mapping和Domain object。(使用较多)
3、 有映射文件开始
二、
1、实体类对象的限制
(1)默认的构造方法(必须的)。Hibernate反射机制调用实体类
(2)有无意义的标示符id(主键)(可选)
(3)非final的,对懒加载有影响(可选)
2、映射文件
一个Java类在映射文件中用一对<class>标签表示。如果有多个Java类在映射文件中要有多个<class>标签。这些<class>标签可以放到一个映射文件中,也可以放到多个映射文件中。
映射文件名一般用 类名.hbm.xml
4、 代码编写
工具类HibernateUtil
public final class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){
}
static{
Configuration cfg=new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
}
Session接口中常用方法
1、save,persist保存数据,persist在事务外不会产生insert语句。
2、delete,删除对象
3、update,更新对象,如果数据库中没有记录,会出现异常。
4、get,根据ID查,会立刻访问数据库。
5、Load,根据ID查,(返回的是代理,不会立即访问数据库)。
6、saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象还是托管的。
7、lock(把对象变成持久对象,但不会同步对象的状态)。
(1) 瞬时状态:自己new出来的对象就是状态
User user=new User();//user是一个瞬时对象数据库的表中是没有记录和瞬时对象是相对应的
Session.save(user);
(2) 持久状态:数据库表中有相应记录是和这个对象相对应的,并且被session管理
(3) 脱管状态:数据库的表中有一条记录和对象相对应,但它和session没有任何关系了