纯css打造立体时钟
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
By_jie

dljd_026_两种方式获取到的session查询时对事务环境的不同依赖

一、测试两种获取到的session在查询中的表现

  1.1通过getCurrentSession获取到的session查询对象

  1.1.1get方法通过getCurrentSession获取到的session查询对象  

package edu.aeon.test;

import org.hibernate.Session;

import edu.aeon.aeonutils.GetSessionUtil;
import edu.aeon.beans.Student;

/**
 * [说明]:测试两种获取到的session在查询中(对事务需求)的表现
 *         1、用getCurrentSession()获取到的事务 :必须依赖当前的事务环境、所以当前环境中必须要有事务
 *         2、用openSession()获取到的事务   :不依赖当前事务(也就是在当前环境中没有事务也可进行查询操作)
 * @author aeon
 *
 */
public class TestSelect {
    
    public static void select() {
        //此处的session是通过getCurrentSession获取到的
        Session session=GetSessionUtil.getSession();
        Student student = session.get(Student.class, 1);
        //Student student = session.load(Student.class, 1);
        System.out.println(student);
    }
    
    public static void main(String[] args) {
        select();
    }
}

测试结果截图:

  

  1.1.2load方法通过getCurrentSession获取到的事务查询对象

  

package edu.aeon.test;

import org.hibernate.Session;

import edu.aeon.aeonutils.GetSessionUtil;
import edu.aeon.beans.Student;

/**
 * [说明]:测试两种获取到的session在查询中(对事务需求)的表现
 *         1、用getCurrentSession()获取到的事务 :必须依赖当前的事务环境、所以当前环境中必须要有事务
 *         2、用openSession()获取到的事务   :不依赖当前事务(也就是在当前环境中没有事务也可进行查询操作)
 * @author aeon
 *
 */
public class TestSelect {
    
    public static void select() {
        //此处的session是通过getCurrentSession获取到的
        Session session=GetSessionUtil.getSession();
        //Student student = session.get(Student.class, 1);
        Student student = session.load(Student.class, 1);
        System.out.println(student);
    }
    
    public static void main(String[] args) {
        select();
    }
}

  测试结果:

  

  1.2通过openSession获取到的session查询对象

   1.2.1get方法通过openSession获取到的session查询对象

  

package edu.aeon.test;

import org.hibernate.Session;

import edu.aeon.aeonutils.GetSessionUtil;
import edu.aeon.beans.Student;

/**
 * [说明]:测试两种获取到的session在查询中(对事务需求)的表现
 *         1、用getCurrentSession()获取到的事务 :必须依赖当前的事务环境、所以当前环境中必须要有事务
 *         2、用openSession()获取到的事务   :不依赖当前事务(也就是在当前环境中没有事务也可进行查询操作)
 * @author aeon
 *
 */
public class TestSelect {
    public static void select() {
        //此处的session是通过getCurrentSession获取到的
        Session session=GetSessionUtil.getSessionFactory().openSession();
        Student student = session.get(Student.class, 1);
        //Student student = session.load(Student.class, 1);
        System.out.println(student);
    }
    public static void main(String[] args) {
        select();
    }
}

测试结果截图:

  

  1.2.2load方法通过openSession获取到的session查询对象

  

package edu.aeon.test;

import org.hibernate.Session;

import edu.aeon.aeonutils.GetSessionUtil;
import edu.aeon.beans.Student;

/**
 * [说明]:测试两种获取到的session在查询中(对事务需求)的表现
 *         1、用getCurrentSession()获取到的事务 :必须依赖当前的事务环境、所以当前环境中必须要有事务
 *         2、用openSession()获取到的事务   :不依赖当前事务(也就是在当前环境中没有事务也可进行查询操作)
 * @author aeon
 *
 */
public class TestSelect {
    public static void select() {
        //此处的session是通过getCurrentSession获取到的
        Session session=GetSessionUtil.getSessionFactory().openSession();
        //Student student = session.get(Student.class, 1);
        Student student = session.load(Student.class, 1);
        System.out.println(student);
    }
    public static void main(String[] args) {
        select();
    }
}

结果截图:

  

  结论:

    1.不管是用get还是load通过getCurrentSession获取到的session进行查询(加载)对象时必须依赖当前的事务环境(当前环境中必须存在事务)、也就是在查询之前必须要有事务、必须手动开启(session.beginTransaction())。

    2.不管是用get还是load通过openSession获取到的session进行查询(加载)对象时不依赖当前的事务环境(当前环境中可以不存在事务)、也就是查询之前我们不需要开启事务

  

  

posted @ 2018-12-10 04:20  1024军团  阅读(287)  评论(0编辑  收藏  举报