zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    读《成交》有感
    【VC++学习笔记二】绘制图片的双缓冲技术
    【VC++学习笔记一】MFC操作Excel
    敏捷软件开发
    VIM常用命令
    Ubuntu下配置samba实现文件夹共享
    linux系统编程之管道(三):命令管道(FIFO)
    linux系统编程之管道(二):管道读写规则
    linux系统编程之管道(一):匿名管道(pipe)
    《Linux环境进程间通信》系列文章链接
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7229913.html
Copyright © 2011-2022 走看看