一、核心接口:
Session接口
此Session不是JSP中的HttpSession,而是Hibernate中数据连接和事务管理之间的一个中间接口,是持久化操作的基础,提供了save(),update()、delete()等方法SessionFactory接口
负责初始化Hibernate,创建Session实例,它保存了当前数据库配置的所有映射关系Transaction
负责事务的相关操作
二、Hibernate运行过程
- 通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
- 由hibernate.cfg.xml中的
三、调用Hibernate API对数据库进行操作
1、首先需要创建Hibernate的Session工厂,这是一个单例类,在后续的操作中需要用到这个Session工厂类
public class HibernateSessionFactory {
private static SessionFactory sessionFactory;//会话工厂属性
private HibernateSessionFactory(){
}
//获得会话工厂对象
public static SessionFactory getSessionFactory(){
if(sessionFactory==null){
//创建配置对象
Configuration config = new Configuration().configure();
//创建服务注册对象
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(config.getProperties()).buildServiceRegistry();
sessionFactory = config.buildSessionFactory(serviceRegistry);
return sessionFactory;
}else{
return sessionFactory;
}
}
}
2、使用Session进行对数据库增删改查的操作,这里的hql语句与sql语句不同,from Student,这里的Student一定是类名,而非表名
基本结构
public 返回值 方法名() {
返回对象声明
Transaction tx = null;
String hql = null;
try {
Session session = HibernateSessionFactory.getSessionFactory()
.getCurrentSession();
tx = session.beginTransaction();
hql = "hql语句";
Query query = session.createQuery(hql);
Session操作语句
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
tx.commit();
} finally {
if (tx != null)
tx = null;
}
return list;
}
删除操作
不需要用到hql语句,一般需要id即可,将基本结构中的Session操作语句改为下面的即可
Student s = (Student) session.get(Student.class, sid);
session.delete(s);
获取列表操作
hql = "from Student";
Query query = session.createQuery(hql);
list = query.list();
添加操作
其中一般要为其在数据库表中设置一个新的id,需要自己写一个私有方法getNewSid()来获得
student.setSid(getNewSid());
session.save(student);
更新操作
session.update(student);