Hibernate的核心API

一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解:

 1  public void testInsert() {
 2              //(1) 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
 3              Configuration configuration = new Configuration().configure();
 4              //(2)创建会话工厂
 5              SessionFactory sessionFactory = configuration.buildSessionFactory();
 6              //(3) 创建会话
 7              Session session = sessionFactory.openSession();
 8              //(4) 开启事务
 9              Transaction transaction = session.beginTransaction();
10   
11             /*
12              *编写自己的逻辑代码
13              */
14  
15              // 提交事务
16              transaction.commit();
17              session.close();
18              sessionFactory.close();
19          } 

  (1) 实例化配置对象 configuration 

   这一步是用来加载核心配置文件

    核心配置有两种:
      hibernate.properties
        加载:Configuration configuration = new Configuration();
      hibernate.cfg.xml:
        加载:Configuration configuration = new Configuration().configure();

 (2)创建会话工厂  sessionFactory 

     Configuration对象根据当前的配置信息生成 SessionFactory对象,

       SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句

     SessionFactory 对象是线程安全的,SessionFactory还负责维护Hibernate的二级缓存,

      SessionFactory对象根据数据库信息,维护连接池,创建Session(相当于Connection)对象

 (3)创建会话 session对象(相当于 JDBC的 Connection)

        Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,是线程不安全的

        所有持久化对象必须在 session 的管理下才可以进行持久化操作,Session 对象有一个一级缓存

        显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处,持久化类与 Session 关联起来后就具有了持久化的能力,

        Session维护了Hiberante一级缓存.

   session对象提供了许多的方法来实现增删改差:

       save()/persist()         :添加
    update()         :修改
    saveOrUpdate()      :增加和修改对象
    delete()          :删除对象
    get()/load()       :根据主键查询
    createQuery()      :创建一个Query接口,编写HQL语句
    createSQLQuery()   :创建一个SQLQuery接口,编写SQL语句数据库操作对象
    createCriteria()     :返回一个Criteria接口.条件查询 

(4)提取工具类

因为我们在项目开发中经常需要进行相关增删改查的操作,所以都需要这个session对象,这个时候我们可以把她变成一个工具类

 1 public class HibernateUtils {
 2     
 3     private static Configuration configuration;
 4     
 5     private static SessionFactory sessionFactory;
 6     
 7     static{
 8         configuration=new Configuration().configure();
 9         
10         sessionFactory=configuration.buildSessionFactory();   
11     }   
12     public static Session getSession(){
13         return sessionFactory.openSession();
14     } 
15 }
16 /*
17  *通过这个工具类,只要你每次HibernateUtils.getSession
18  *就可以获得session对象
19  */

(5) 开启事务 Transaction 对象

  获得:Transaction tx = session.beginTransaction();

  常用方法:
    commit() :提交相关联的session实例
    rollback() :撤销事务操作
    wasCommitted() :检查事务是否提交

  如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务

6.Query 对象
  Query代表面向对象的一个Hibernate查询操作
  session.createQuery 接收一个HQL语句
  HQL是Hibernate Query Language缩写, 语法很像SQL语法,但是完全面向对象的

 举例

 //1.查询所有的数据
    public  void testQuery(){
        //这里就是通过足记编写的工具类,来获得session对象
        Session session=HibernateUtils.getSession();
        Transaction transaction =session.beginTransaction();
        
        String hql="from Customer"; //类名
        
        Query  query =session.createQuery(hql);
        
        List<Customer> customers=query.list();
        System.out.println(customers);
        
        transaction.commit();
        session.close();
    }
}
查询所有的数据

相关文章:

  • 2021-09-26
  • 2022-12-23
  • 2022-12-23
  • 2021-08-23
  • 2021-09-17
  • 2021-06-09
  • 2021-10-22
  • 2022-01-17
猜你喜欢
  • 2022-12-23
  • 2021-05-14
  • 2022-01-07
  • 2022-12-23
  • 2022-02-22
  • 2021-04-24
  • 2021-04-27
相关资源
相似解决方案