Hibernate入门--核心API

Hibernate的核心API

在这里插入图片描述

  • Configuration:Hibernate的配置对象

  • SessionFactory:Session工厂
    SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存。是线程安全的对象。一个项目创建一个对象即可。
    Session:类似Connection对象是连接对象

  • Session代表的是Hibernate与数据库的链接对象。不是线程安全的。(需定义为局部的变量)与数据库交互桥梁。
    Session中的API

  1. 保存方法:
    Serializable save(Object obj);–返回id
  2. 查询方法:
    T get(Class c,Serializable id);
    T load(Class c,Serializable id);

get方法和load方法的区别?

get方法–>采用的是立即加载,执行到这行代码的时候,就会马上发送SQL语句去查询。查询后返回是真实对象本身
查询一个找不到的对象的时候,返回null

load方法–>采用的是延迟加载(lazy懒加载),执行到这行代码的时候,不会发送SQL语句,当真正使用这个对象的时候(除了id以外的属性)才会发送SQL语句。 查询后返回的是代理对象。javassist-3.18.1-GA.jar 利用javassist技术产生的代理。
查询一个找不到的对象的时候,返回ObjectNotFoundException

  1. 修改方法
    void update(Object obj);
    直接创建对象修改(不推荐)
    先查询再修改(推荐)

  2. 删除方法
    void delete(Object obj);
    直接创建对象,删除
    或先查询再删除(推荐–可以进行级联删除)

  3. 保存或更新(不常用)
    void saveOrUpdate(Object obj)

  4. 查询所有
    createQuery()
    createSQLQuery()

//接受HQL
//,Hibernate
// 接收HQL:Hibernate Query Language 面向对象的查询语言
		Query query = session.createQuery("from Customer");
		List<Customer> list = query.list();
		for (Customer customer : list) {
			System.out.println(customer);
		}

// 接收SQL:
		SQLQuery query = session.createSQLQuery("select * from cst_customer");
		//Object数组
		List<Object[]> list = query.list();
		for (Object[] objects : list) {
			System.out.println(Arrays.toString(objects));
		}
  • Transaction:事务对象
    Hibernate中管理事务的对象。
    Transaction transaction = session.beginTransaction();

commit();
rollback();


使用基本步骤
1.加载核心配置文件
2.创建SessionFactory对象:类似JDBC中连接池
3.通过SessionFactory获取到session对象,
4.手动开启事务
5.编写代码
6.事务提交
7.资源释放


//1.加载核心配置文件,Configuration
	Configuration configuration = new Configuration().configure();
		
//2.创建SessionFactory对象,session工厂
	SessionFactory sessionFactory =  configuration.buildSessionFactory();
//3.通过SessionFactory获取到session对象
Session session =  sessionFactory.openSession();
//4.手动开启事务
Transaction transaction =  session.beginTransaction();
		
//5.编写代码
		Customer customer = new Customer();
		customer.setCust_name("zs");
		session.save(customer);
//6.事务提交
		transaction.commit();
//7.资源释放
		session.close();

抽取工具类HibernateUtil

package com.by.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	public static final Configuration cfg;
	public static final SessionFactory sf;
	
	static{
		cfg = new Configuration().configure();
		sf = cfg.buildSessionFactory();
	}
	
	public static Session openSession(){
		return sf.openSession();
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_43843847/article/details/91903818