• hibernate API 操作数据库


    //学习Configuration对象
    //Configuration功能: 配置加载类.用于加载主配置,orm元数据加载
    //----------------------------------------------------
    //学习SessionFactory对象
    // SessionFactory功能: 用于创建操作数据库核心对象session对象的工厂.
    //                     简单说功能就一个---创建session对象
    //注意:1.sessionfactory 负责保存和使用所有配置信息.消耗内存资源非常大.
    //      2.sessionFactory属于线程安全的对象设计.
    //结论: 保证在web项目中,只创建一个sessionFactory.
    //----------------------------------------------------
    public class Demo {
    
        @Test
        public void fun1(){
            //1 创建,调用空参构造
            Configuration conf = new Configuration();
            
            //2 读取指定主配置文件 => 空参加载方法,加载src下的hibernate.cfg.xml文件
            conf.configure();
            //以上两步可以合起来Configuration conf = new Configuration().configure();
            
            //3 读取指定orm元数据(扩展),如果主配置中已经引入映射配置.不需要手动加载
            //conf.addResource(resourceName);
            //conf.addClass(persistentClass);
            
            //4 根据配置信息,创建 SessionFactory对象
            SessionFactory sf = conf.buildSessionFactory();
            
            //5 获得session
            //打开一个新的session对象
            Session session = sf.openSession();
            
            //6获得操作事务的tx对象
            //Transaction tx = session.getTransaction();
            //开启事务并获得操作事务的tx对象(建议使用)
            Transaction tx2 = session.beginTransaction();
            
            //----------------------------------------------
            操作数据库
            //----------------------------------------------
            tx2.commit();//提交事务
            tx2.rollback();//回滚事务
            session.close();//释放资源
            sf.close();//释放资源
        }
    }

    抽取的工具类

    HibernateUtils.java

    public class HibernateUtils {
        private static SessionFactory sf;
        
        static{//保证里面的代码只执行一次
            //1 创建,调用空参构造
            Configuration conf = new Configuration().configure();
            //2 根据配置信息,创建 SessionFactory对象
            sf = conf.buildSessionFactory();
        }
        
        //获得session => 获得全新session
        public static Session openSession(){
            //3 获得session
            Session session = sf.openSession();     
            return session;
            
        }
    //获得session => 获得与线程绑定的session public static Session getCurrentSession(){ //3 获得session Session session = sf.getCurrentSession(); return session; } }

    注意1:调用getCurrentSession方法必须配合主配置中的一个属性使用

    <property name="hibernate.current_session_context_class">thread</property>

    注意2:通过getCurrentSession方法获得的session对象,当事务提交时,session会自动关闭,不要手动调用close

  • 相关阅读:
    Spring Boot 2 实践记录之 Powermock 和 SpringBootTest
    Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性
    Spring Boot 2 实践记录之 使用 Powermock、Mockito 对 UUID 进行 mock 单元测试
    Spring Boot 2 实践记录之 MyBatis 集成的启动时警告信息问题
    Spring Boot 2 实践记录之 条件装配
    Spring Boot 2 实践记录之 组合注解原理
    Spring Boot 2 实践记录之 Redis 及 Session Redis 配置
    Spring Boot 2 实践记录之 MySQL + MyBatis 配置
    ES6 学习笔记之四 对象的扩展
    ES6 学习笔记之三 函数参数默认值
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7229913.html
Copyright © 2020-2023  润新知