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();

 

posted @ 2018-06-18 00:26  Jin同学  阅读(1125)  评论(0)    收藏  举报