zoukankan      html  css  js  c++  java
  • Java三大框架之——Hibernate

    什么是Hibernate?

      Hibernate是基于ORM(O:对象,R:关系,M:映射)映射的持久层框架,是一个封装JDBC的轻量级框架,主要实现了对数据库的CUPD操作。

      注:CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能。

    Hibernate中的核心接口和类

      Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心类和接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

      Session接口:负责对象的持久化操作,但需要注意的是它非线程安全的。

      SessionFactory接口:负责Hibernate的初始化操作,数据存储的代理对象,并且负责创建Session对象,

      Transaction接口:负责数据的事务操作。

      Query接口:负责数据库及持久化对象的查询操作,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

      Criteria接口:Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。

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

    Hibernate的工作流程:

       工作流程图:  

            

     Hibernate持久化操作的七个步骤:

      1.创建Configuration对象,并加载cfg.xml配置文件;(配置文件可以通过Eclipse自动生成)

      2.通过Configuration对象构建SessionFactory工厂;

      3.通过SessionFactory工厂打开一个Session会话;

      4.开启事务;(查询方法可省略)

      5.用Session会话进行数据库及持久化对象的CRUD操作;

      6.提交事务;(查询方法可省略)

      7.关闭会话;

            代码如下:

    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Query;
    import org.hibernate.SQLQuery;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.criterion.Restrictions;
    
    
    
    public class HibernateTest {
    
        public void Test(){
            //创建Configurtion对象并加载cfg.xml配置文件
            Configuration conf = new Configuration().configure("hibernate.cfg.xml");
            //构建SessionFactory工厂
            SessionFactory sessionFactory = conf.buildSessionFactory();
            //打开Session会话
            Session session = sessionFactory.openSession();
            //开启事务(增删改)需要开启事务 查询可以不用开启事务
            Transaction transaction = session.beginTransaction();
            
            //创建Users类对象
            Users users = new Users();
            
            /**
             * Session中封装的几个常用的方法
             */
            //调用Session中添加的方法
            session.save(users);
            //调用Session中删除的方法
            session.delete(users);
            //调用Session中修改的方法
            session.update(users);
            //调用Session中根据主键查询某个类的方法
            session.get(Users.class,users.getId());
            
            
            //根据HQL语句查询
            String hql = "from Users";
            Query query = session.createQuery(hql);
            List<Users> userList = query.list();
            
            
            //根据SQL语句查询
            String sql = "select * from Users";
            SQLQuery sqlQuery = session.createSQLQuery(sql);
            List<Users> sqlUsersList = sqlQuery.list();
            
            
            //根据你给的Bean.class类来指定查询哪个类
            Criteria criteria = session.createCriteria(Users.class);
            //用Criteria对象来添加条件(括号中用Restrictions对象来选择你要添加哪一种条件)
            criteria.add(Restrictions.ilike("name", "华盛顿%"));
            
            /**
             * 提交事务后将对数据库进行增删改查操作
             * 可以通过条件判断来确定是否提交事务
             * 例如:
             *         如果程序运行正常提交事务
             *         否则让事务回滚
             *         回滚后将不对数据库进行操作
             * 事务的回滚:        transaction.rollback();
             */
            //提交事务  
            transaction.commit();
                
            
            //关闭Session会话释放资源
            session.close();
      
        }
        
    }

      

  • 相关阅读:
    操作系统设计与实现(二)
    SpringCloud(八)Consul的微服务注册
    图的实现(邻接矩阵)及DFS、BFS
    SpringCloud(七)服务注册之Consul的简介和原理
    Mybatis笔记目录(6天)
    Mybatis学习笔记——day02
    C语言教程Day01
    Linux C/C++方向开发(13周学习路线)
    基于Java的实验室预约管理系统
    基于Android的高校学生考勤系统的设计与实现
  • 原文地址:https://www.cnblogs.com/hcl22/p/6098579.html
Copyright © 2011-2022 走看看