JavaWeb学习笔记 (十五)Hibernate的核心API

1. Configuration:Hibernate的配置对象

Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。

写法:

// 默认加载了hibernate.cfg.xml配置文件
Configuration configuration = new Configuration().configure();

2. SessionFactory: Session工厂

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

SessionFactory内部维护了Hibernate的连接池和Hibernate的二级缓存。一般情况下,一个项目只需要一个SessionFactory,只有当应用中存在多个数据源时,财位每个数据源建立一个SessionFactory实例。在实际项目中,通常会抽取一个HibernateUtils的工具类,用来提供Session对象。

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

public class HibernateUtils {
	private static final Configuration configuration;
	private static final SessionFactory sessionFactory;
	static {
		configuration = new Configuration().configure();
		sessionFactory = configuration.buildSessionFactory();
	}
	public Session getSession() {
		return sessionFactory.openSession();
	}
}

SessionFactory具有以下特点:

  • 它是线程安全的,同一个实例能够提供多个线程共享。
  • 它是重量级的,不能随意的创建和销毁它的实例。

3.Session:类似于Connection对象

Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

代表的是Hibernate于数据库连接的一个对象。不是线程安全的。执行操作数据库的方法。
常用的几个方法:

  • save(Object obj) 将对象的属性保存到数据库中

  • T get(Class c, Serializable id); 根据id获取实体对象

  • T load(Class c ,Serializable id); 根据id获取实体对象
    get() load()方法的区别:
    get()方法:
    (1)采用的是立即加载,执行到这行代码的时候,就会立马执行SQL语句

    (2)查询后返回真实对象本身
    (3)查询一个找不到的对象时,返回为null
    load()方法:
    (1)采用延迟(懒)加载,执行到这行代码的时候,不会立马发送SQL语句,当真正使用这个对象的时候才会执行SQL语句
    (2)查询后,返回的是代理对象
    (3)查询一个找不到的对象时,抛出异常

  • void update(Object obj) 根据id进行修改
    注意:这里需要先查询在修改,否则的话,就会覆盖原先数据库中的内容

    扫描二维码关注公众号,回复: 6206752 查看本文章
  • void delete(Object obj) 根据id进行删除
    建议:采用先查询在删除,方便级联删除

  • void saveOrUpdate(Object obj) 对象中没有id的时候,进行保存,有id的时候,进行更新

4.Transaction:事务对象

Hibernate中管理事务的对象

  • commit() 提交
  • rollback() 回滚

猜你喜欢

转载自blog.csdn.net/Time__Lc/article/details/88981241