• Hibernate学习(四)get和Load比较


     1 package cn.lonecloud.test.crud;
     2 
     3 import org.hibernate.HibernateException;
     4 import org.hibernate.Session;
     5 import org.hibernate.SessionFactory;
     6 import org.hibernate.Transaction;
     7 import org.hibernate.cfg.Configuration;
     8 import org.junit.Before;
     9 import org.junit.Test;
    10 
    11 import cn.lonecloud.domain.Customer;
    12 
    13 public class GetAndLoad {
    14 
    15     private Session session;
    16 
    17     private SessionFactory buildSessionFactory;
    18 
    19     public SessionFactory getBuildSessionFactory() {
    20         return buildSessionFactory;
    21     }
    22 
    23     public void setBuildSessionFactory(SessionFactory buildSessionFactory) {
    24         this.buildSessionFactory = buildSessionFactory;
    25     }
    26 
    27     public void setSession(Session session) {
    28         this.session = session;
    29     }
    30 
    31     @Before
    32     public void getSession() {
    33         Configuration cfg = new Configuration().configure();
    34         setBuildSessionFactory(cfg.buildSessionFactory());
    35         session= buildSessionFactory.openSession();
    36     }
    37     @Test
    38     public void getTest(){
    39         Transaction transaction = null;
    40         try {
    41             transaction = session.beginTransaction();//创建session
    42             //get默认为非懒加载模式进行的不管设置设置懒加载
    43             //get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
    44             //反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。
    45             Customer customer = (Customer) session.get(Customer.class, "2c90ab8157cda51a0157cda51b330000");
    46             System.out.println(customer.getId());
    47             customer.getOrders();
    48             transaction.commit();//提交事务
    49         } catch (HibernateException e) {
    50             if (transaction!=null) {
    51                 transaction.rollback();//事务回滚
    52             }
    53             e.printStackTrace();
    54         }finally{
    55             if (session!=null&&session.isOpen()) {
    56                 session.close();//关闭session
    57             }
    58         }
    59     }
    60     @Test
    61     public void loadTest(){
    62         Transaction transaction = null;
    63         try {
    64             transaction = session.beginTransaction();//创建session
    65             //get默认为非懒加载模式进行的不管设置设置懒加载
    66             //get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
    67             //反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。
    68             Customer customer = (Customer) session.load(Customer.class, "2c90ab8157cda51a0157cda51b330000");
    69             System.out.println(customer.getId());
    70             customer.getOrders();
    71             transaction.commit();//提交事务
    72         } catch (HibernateException e) {
    73             if (transaction!=null) {
    74                 transaction.rollback();//事务回滚
    75             }
    76             e.printStackTrace();
    77         }finally{
    78             if (session!=null&&session.isOpen()) {
    79                 session.close();//关闭session
    80             }
    81         }
    82     }
    83 }

    //get默认为非懒加载模式进行的不管设置设置懒加载

    //get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;

    //反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。

    具体:

    http://blog.csdn.net/javaloveiphone/article/details/8184941

  • 相关阅读:
    CF-911E.Stack Sorting(栈)
    随机算法 && CodeForces
    CF-579D."Or" Game(或运算)
    CF-242E.XOR on Segment(异或线段树)
    莫队 && 洛谷 P1494 [国家集训队]小Z的袜子
    洛谷 P4168 [Violet]蒲公英(分块)
    分块 && 洛谷 P2801 教主的魔法
    启发式合并 && U41492 树上数颜色
    使用mysqlbinlog server远程备份binlog的脚本
    mysqldump备份过程中都干了些什么
  • 原文地址:https://www.cnblogs.com/lonecloud/p/5967882.html
Copyright © 2020-2023  润新知