02-Hibernate的API详解

02-Hibernate的API详解

  • hibernate框架API详解

  • Configuration对象

    Configuration功能:

    ​ 配置加载类,用于加载主配置,orm元数据加载

    package com.qingzi.text.b_api;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    //学习Configuration
    //Configuration功能: 配置加载类,用于加载主配置,orm元数据加载
    public class Demo {
    	
    	@Test
    	public void fun1(){
    		//1.创建,调用空参方法
    		Configuration conf = new Configuration();
    		//2.读取指定主配置文件 = 空参加载方法,加载src下的hibernate.cfg.xml文件
    		conf.configure();
    		
    		//3.读取指定orm元数据(扩展)如果主配置中引入映射配置,就不需要手动加载
    		//conf.addResource(resourceName);
    		//conf.addClass(persistentClass);
    		
    		//4.根据配置信息,创建SessionFactory对象
    		SessionFactory sf = conf.buildSessionFactory();
    	}
    }
    
  • SessionFactory对象

    SessionFactory功能:

    ​ 用于创建操作数据库的核心对象session对象的工厂,简单的说功能就一个----创建session对象

    注意:

    1. SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大。

    2. SessionFactory属于线程安全的对象设计

    结论: 保证web项目中,只创建一个SessionFactory
    
    package com.qingzi.text.b_api;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    public class Demo2 {
    	
    	@Test
    	public void fun1(){
    		//1.创建,调用空参方法
    		Configuration conf = new Configuration();
    		//2.读取指定主配置文件 = 空参加载方法,加载src下的hibernate.cfg.xml文件
    		conf.configure();
    		
    		//3.读取指定orm元数据(扩展)如果主配置中引入映射配置,就不需要手动加载
    		//conf.addResource(resourceName);
    		//conf.addClass(persistentClass);
    		
    		//4.根据配置信息,创建SessionFactory对象
    		SessionFactory sf = conf.buildSessionFactory();
    		
    		//-------------------------------------
    		//5.获得session
    		//打开一个新的session对象
    		sf.openSession();
    		//获取一个与线程绑定的session对象
    		sf.getCurrentSession();
    	}
    }
    
  • Session对象

    Session对象的功能:

    ​ 表达hibernate框架与数据库之间的连接(会话),session类似于jdbc年代的connection对象,还可以完成对数据库中的增删改查操作,session是hibernate操作数据库的核心对象

    package com.qingzi.text.b_api;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    public class Demo3 {
    	
    	@Test
    	public void fun1(){
    		//1.创建空参配置
    		Configuration conf = new Configuration();
    		//2.加载hibernate主配置
    		conf.configure();
    		//3.创建sessionFactory工厂以便于创建session对象
    		SessionFactory sf = conf.buildSessionFactory();
    		//4.获取一个新的session对象
    		Session session = sf.openSession();
    		//5.获取一个操作事务的Transaction对象
    		Transaction tx = session.getTransaction();
    		//5.开启事务并获得操作失误的tx对象(推荐使用)
    		Transaction tx2 = session.beginTransaction();
    		
    		//-----------------------------------------
    		//---------------------------------------
    		tx2.commit();//提交事务
    		//tx2.rollback();	//回滚事务
    		session.close(); //释放资源
    		sf.close();	//释放资源
    	}
    }
    
  • hibernate框架中使用session对象对数据进行增删改查

    1. session新增功能

      //session新增功能
      	public void fun2(){
      		//1.创建空参配置
      		Configuration conf = new Configuration();
      		//2.加载hibernate主配置
      		conf.configure();
      		//3.创建sessionFactory工厂以便于创建session对象
      		SessionFactory sf = conf.buildSessionFactory();
      		//4.获取一个新的session对象
      		Session session = sf.openSession();
      		//5.获取一个操作事务的Transaction对象
      		//Transaction tx = session.getTransaction();
      		//5.开启事务并获得操作失误的tx对象(推荐使用)
      		Transaction tx2 = session.beginTransaction();
      		
      		//-----------------------------------------
      			Customer c = new Customer();
      			c.setCust_name("清子");
      			session.save(c);
      		
      		//---------------------------------------
      		tx2.commit();//提交事务
      		//tx2.rollback();	//回滚事务
      		session.close(); //释放资源
      		sf.close();	//释放资源
      	}
      
    2. session删除功能

      //session删除功能
      	//删除ID为8的customer对象
      	public void fun3(){
      		//1.创建空参配置
      		Configuration conf = new Configuration();
      		//2.加载hibernate主配置
      		conf.configure();
      		//3.创建sessionFactory工厂以便于创建session对象
      		SessionFactory sf = conf.buildSessionFactory();
      		//4.获取一个新的session对象
      		Session session = sf.openSession();
      		//5.获取一个操作事务的Transaction对象
      		//Transaction tx = session.getTransaction();
      		//5.开启事务并获得操作失误的tx对象(推荐使用)
      		Transaction tx2 = session.beginTransaction();
      		
      		//-----------------------------------------
      			Customer c = session.get(Customer.class, 8L);
      			session.delete(c);
      		//---------------------------------------
      		tx2.commit();//提交事务
      		//tx2.rollback();	//回滚事务
      		session.close(); //释放资源
      		sf.close();	//释放资源
      	}
      
    3. session修改功能

      //session修改功能
      	//修改ID为11的customer对象的name属性为潭州教育程序员
      	public void fun4(){
      		//1.创建空参配置
      		Configuration conf = new Configuration();
      		//2.加载hibernate主配置
      		conf.configure();
      		//3.创建sessionFactory工厂以便于创建session对象
      		SessionFactory sf = conf.buildSessionFactory();
      		//4.获取一个新的session对象
      		Session session = sf.openSession();
      		//5.获取一个操作事务的Transaction对象
      		//Transaction tx = session.getTransaction();
      		//5.开启事务并获得操作失误的tx对象(推荐使用)
      		Transaction tx2 = session.beginTransaction();
      		
      		//-----------------------------------------
      			Customer c = session.get(Customer.class, 11L);
      			c.setCust_name("谭州程序员");
      			session.update(c);
      		
      		//---------------------------------------
      		tx2.commit();//提交事务
      		//tx2.rollback();	//回滚事务
      		session.close(); //释放资源
      		sf.close();	//释放资源
      	}
      
    4. session查询功能

      	//session修改功能
      	//查询功能
      	public void fun5(){
      		//1.创建空参配置
      		Configuration conf = new Configuration();
      		//2.加载hibernate主配置
      		conf.configure();
      		//3.创建sessionFactory工厂以便于创建session对象
      		SessionFactory sf = conf.buildSessionFactory();
      		//4.获取一个新的session对象
      		Session session = sf.openSession();
      		//5.获取一个操作事务的Transaction对象
      		//Transaction tx = session.getTransaction();
      		//5.开启事务并获得操作失误的tx对象(推荐使用)
      		Transaction tx2 = session.beginTransaction();
      		
      		//-----------------------------------------
      			Customer c = session.get(Customer.class, 11L);
      			System.out.println(c.toString());
      		
      		//---------------------------------------
      		tx2.commit();//提交事务
      		tx2.rollback();	//回滚事务
      		//session.close(); //释放资源
      		sf.close();	//释放资源
      	}
      
  • HibernateUtils工具类的编写

    package com.qingzi.utils;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtils {
    	private static SessionFactory sf;
    	
    	static{
    		//1.创建,调用空参方法,并获取hibernate配置
    		Configuration conf = new Configuration();
    		//2.根据配置信息,创建SessionFactory对象
    		sf = conf.buildSessionFactory();
    	}
    	
    	//获得session => 获得全新session
    	public static Session openSession(){
    		//获得session
    		Session session = sf.openSession();
    		return session;
    	}
    	
    	//获得session => 获得与线程绑定的session
    	public static Session getCurrentSession(){
    		//获得session
    		Session session = sf.getCurrentSession();
    		return session;
    	}
    }
    

猜你喜欢

转载自blog.csdn.net/qq_26270869/article/details/90175680
今日推荐