Hibernate(5.3.7版)核心API

版权声明:版权所有@万星明 https://blog.csdn.net/qq_19533277/article/details/84893560

1、Configuration

该接口只存在系统初始化阶段,将SessionFactory创建完成,语法如下:

Configuration configuration = new Configuration().configure();

或者:

Configuration configuration = new Configuration().configure("xml文件位置");

2、SessionFactory

该接口负责hibernate初始化和建立Session对象,起到缓冲区作用,hibernate将自动生成的SQL语句、映射数据和某些可重复利用的数据放在这个缓冲区中。

SessionFactory sessionFactory = config.buildSessionFactory();
  • 线程安全,同一个实例能够供多个线程共享
  • 重量级,不能随意创建和销毁实例

通常抽取出HibernateUtils工具类,用来提供session对象:

public class HibernateUtils{
    //声明一个私有的静态final类型的Configuration对象
    private static final Configuration config;
    //声明一个私有的静态final类型的sessionFactory对象
    private static final SessionFactory factory;
    //通过静态代码块构建SessionFactory
    static {
        config = new Configuration().configure();
        factory = config.buildSessionFactory();
    }
    //提供一个公有的静态方法供外部获取,并返回一个session对象
    public static Session getSession(){
        return factory.openSession();
    }
    
}

3、Session

应用程序与数据库之间交互操作的一个单线程对象,主要为持久化对象提供创建、读取和删除等功能。

//采用openSession创建
Session session = sessionFactory.openSession();
//采用getCurrentSession创建
Session session = factory.getCurrentSession();

采用openSession:SessionFactory直接创建一个新的session实例,在使用完后需要调用close()方法进行手动关闭。
采用getCurrentSession:会将创建的Session的实例绑定在当前线程,在提交或回滚操作时自动关闭。

4、Transaction

数据库事务接口,对底层事务接口进行了封装。

Transaction trans = session.beginTransaction();
  • commit():提交相关联的session实例
  • rollback():回滚,撤销事务操作
  • wasCommitted():检查事务是否提交

5、Query

1、获得Hibernate Session对象
2、编写HQL语句
3、调用session.createQuery创建查询对象
4、如果HQL语句包含参数,调用Query的setXxx设置参数
5、调用Query对象的list()或uniqueResult()方法执行查询

猜你喜欢

转载自blog.csdn.net/qq_19533277/article/details/84893560