Hibernate API、Hibernate实现增删改查
Hibernate各类说明
Configuration:配置加载类,用于加载主配置跟orm元数据
Configuration conf = new Configuration().configure();
SessionFactory:用于创建操作数据库的核心对象sesson对象的工厂
注意:①、SessionFactory负责保存和使用所有的配置信息,消耗内存资源非常大
②、SessionFactory属于线程安全的设计
结论:应该保证WEB项目中只创建一个SessionFactory对象
SessionFactory sf = conf.buildSessionFactory();
Session:表达hibernate框架与数据库之间的连接(会话),还可以完成对数据库的增删改查,是hibernate操作数据库的核心对象
// ①、获取session Session session = sf.openSession(); // ②、获取一个与线程绑定的session对象 Session session = sf.getCurrentSession();
Transaction:操作事务的对象
// ①、获得操作事务的Transaction对象 Transaction tx = session.getTransaction(); // ②、开启事务并获取操作事务的Transaction对象(推荐使用) Transaction tx2 = session.beginTransaction();
Hibernate API
类 | 方法 | 描述 |
Configuration | configure() | 读取指定的配置文件,默认读取src下的hibernate.cfg.xml文件 |
buildSessionFactory() | 根据配置信息创建sessionFactory对象 | |
conf.addResource(resourceName); | 骨灰级方法 hibernate 1.0时不支持XML,使用的是properties加载,需要单独加载orm元数据跟主配置文件,现在已经不使用 | |
conf.addClass(persistentClass); | ||
SessionFactory | openSession() | 获取session对象 |
getCurrentSession() | 获取一个与线程绑定的session对象 | |
close() | 关闭sessionFactory,释放资源 | |
Session | getTransaction() | 获得操作事务的Transaction对象 |
beginTransaction() | 开启事务并获取操作事务的Transaction对象(推荐使用) | |
save(Object obj) | 向数据库表中插入一条数据,参数是一个代表数据库某张表的javabean类的对象 | |
get(Object obj, id) | 从数据库表中获取数据,第一个参数是代表数据库某张表的javabean类的对象,后面是筛选条件 | |
update(Object obj) | 修改数据库表的某条数据,参数是一个代表数据库某张表的javabean类的对象 | |
delete(Object obj) | 删除数据库表的某条数据,参数是一个代表数据库某张表的javabean类的对象 | |
close() | 关闭session,释放资源 | |
Transaction | commit() | 提交事务 |
rollback() | 回滚事务 |
封装HBUtils类
在编写程序的时候,有一些代码是重复的,那么就可以提取出来,单独的封装在一起,下面就对Hibernate加载配置文件,获取生成session对象的工厂以及创建session对象进行一个单独的封装,使在使用的时候可以直接获取到Session对象而不需要再做重复的操作
package com.jinxin.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * 本类封装了操作hibernate的相关方法 * */ public class HBUtils { // 产生session对象的工厂 private static SessionFactory sessionFactory; // 静态代码块,生成工厂,使用静态代码块的原因:使整个WEB项目只有一个SessionFactory,节省资源 static { // 配置加载类,用于加载主配置跟orm元数据 Configuration conf = new Configuration(); // 读取指定的配置文件,默认读取src下的hibernate.cfg.xml文件 conf = conf.configure(); // 根据配置信息创建sessionFactory对象 sessionFactory = conf.buildSessionFactory(); } // 获取session public static Session getSession() { return sessionFactory.openSession(); } }
使用Hibernate实现增删改查
增
// 获取session对象 Session session = HBUtils.getSession(); // 开启事务并获取操作事务的Transaction对象 Transaction transaction = session.beginTransaction(); // 向数据库中插入用户信息 Customer customer = new Customer(); // 创建实体类对象 customer.setCust_name(“Eric Jin”); session.save(customer); // 保存数据 // 提交事务 transaction.commit(); // 释放资源 session.close();
删
// 获取session对象 Session session = HBUtils.getSession(); // 开启事务并获取操作事务的Transaction对象 Transaction transaction = session.beginTransaction(); // 删除数据库中一条用户数据 Customer customer = session.get(Customer.class, 1L); // 获取id为1的用户信息 session.delete(customer); // 删除该条信息 // 提交事务 transaction.commit(); // 释放资源 session.close();
改
// 获取session对象 Session session = HBUtils.getSession(); // 开启事务并获取操作事务的Transaction对象 Transaction transaction = session.beginTransaction(); // 删除数据库中一条用户数据 Customer customer = session.get(Customer.class, 1L); // 获取id为1的用户信息 costomer.setCust_name("Eric Jin"); // 修改用户名 session.update(customer); // 将修改后的数据更新到数据库 // 提交事务 transaction.commit(); // 释放资源 session.close();
查
// 获取session对象 Session session = HBUtils.getSession(); // 开启事务并获取操作事务的Transaction对象 Transaction transaction = session.beginTransaction(); // 删除数据库中一条用户数据 Customer customer = session.get(Customer.class, 1L); // 获取id为1的用户信息 // 提交事务 transaction.commit(); // 释放资源 session.close();