Hibernate学习(四)get和Load比较
package cn.lonecloud.test.crud; import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Before;
import org.junit.Test; import cn.lonecloud.domain.Customer; public class GetAndLoad { private Session session; private SessionFactory buildSessionFactory; public SessionFactory getBuildSessionFactory() {
return buildSessionFactory;
} public void setBuildSessionFactory(SessionFactory buildSessionFactory) {
this.buildSessionFactory = buildSessionFactory;
} public void setSession(Session session) {
this.session = session;
} @Before
public void getSession() {
Configuration cfg = new Configuration().configure();
setBuildSessionFactory(cfg.buildSessionFactory());
session= buildSessionFactory.openSession();
}
@Test
public void getTest(){
Transaction transaction = null;
try {
transaction = session.beginTransaction();//创建session
//get默认为非懒加载模式进行的不管设置设置懒加载
//get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
//反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。
Customer customer = (Customer) session.get(Customer.class, "2c90ab8157cda51a0157cda51b330000");
System.out.println(customer.getId());
customer.getOrders();
transaction.commit();//提交事务
} catch (HibernateException e) {
if (transaction!=null) {
transaction.rollback();//事务回滚
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();//关闭session
}
}
}
@Test
public void loadTest(){
Transaction transaction = null;
try {
transaction = session.beginTransaction();//创建session
//get默认为非懒加载模式进行的不管设置设置懒加载
//get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
//反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。
Customer customer = (Customer) session.load(Customer.class, "2c90ab8157cda51a0157cda51b330000");
System.out.println(customer.getId());
customer.getOrders();
transaction.commit();//提交事务
} catch (HibernateException e) {
if (transaction!=null) {
transaction.rollback();//事务回滚
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();//关闭session
}
}
}
}
//get默认为非懒加载模式进行的不管设置设置懒加载
//get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;
//反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。
具体:
http://blog.csdn.net/javaloveiphone/article/details/8184941
Hibernate学习(四)get和Load比较的更多相关文章
- hibernate学习四(关系映射一对一与组件映射)
一.关系映射简介 在数据库中,表与表的关系,仅有外键.但使用hibernate后,为面向对象的编程,对象与对象的关系多样化:如 一对一,一对多,多对多,并具有单向和双向之分. 开始练习前,复制上一次项 ...
- Hibernate学习之get和load区别
结论: insert():插入记录并将同步更新到session缓存. update():更新记录并同步更新到session缓存. delete():删除记录并同步更新session缓存. get(): ...
- --------------Hibernate学习(四) 多对一映射 和 一对多映射
现实中有很多场景需要用到多对一或者一对多,比如上面这两个类图所展现出来的,一般情况下,一个部门会有多名员工,一名员工只在一个部门任职. 多对一关联映射 在上面的场景中,对于Employee来说,它跟D ...
- Hibernate学习四----------Blob
© 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...
- hibernate学习四 hibernate关联关系映射
在Hibernate中对象之间的关联关系表现为数据库中表于表之间的关系(表之间通过外键关联). 1 单向的一对一 主键关联 外键关联 2 单向的一对多 3 单向的多对一 4 单向的多对多 5 双向的 ...
- SSH框架之hibernate《四》
hibernate第四天 一.JPA相关概念 1.1JPA概述 全称是:Java Persistence API.是sun公司推出的一套基于ORM的规范 ...
- Hibernate学习---缓存机制
前言:这些天学习效率比较慢,可能是手头的事情比较多,所以学习进度比较慢. 在之前的Hibernate学习中,我们无论是CURD,对单表查询还是检索优化,我们好像都离不开session,session我 ...
- Hibernate学习之——搭建log4j日志环境
昨天讲了Hibernate开发环境的搭建以及实现一个Hibernate的基础示例,但是你会发现运行输出只有sql语句,很多输出信息都看不见.这是因为用到的是slf4j-nop-1.6.1.jar的实现 ...
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- Hibernate学习笔记(一)
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...
随机推荐
- windows下搭建virtualenv虚拟环境
操作系统:windows7 旗舰版 64bit pip install django==1.9.1pip install virtualenv 虚拟环境工具>pip install virtua ...
- wigs的理解和应用
1. 首先了解下,Web应用的本质,大体如下: 1.浏览器发送一个HTTP请求: 2.服务器收到请求,生成一个HTML文档: 3.服务器把HTML文档作为HTTP响应的Body发送给浏览器: 4.浏览 ...
- IOS @proporty 关键字(一)retain strong
@interface User : NSObject @property (nonatomic,retain) NSString* tRetain; @property (nonatomic,assi ...
- ie、firefox、chrome中关于style="display:block" 引发的页面布局错乱的解决办法
ie.firefox.chrome中关于style="display:block" 引发的页面布局错乱的解决办法: table中tr 添加style="display:b ...
- 数据库分表之Mybatis+Mysql实践(含部分关键代码)
2018年01月31日 随着我们系统用户数量的日增,业务数据处于一个爆发前,增长的数据量已经给我们的系统造成了很大的不确定.在上个周末用户量较多,并发较大的情况下,读写频繁的验证码表,数据量 ...
- 【Java框架型项目从入门到装逼】第十四节 查询用户列表展现到页面
这一节,我们来实现一下用户列表搜索,最终的效果如下: 这边我们要使用easyUI给我们提供的datagrid组件. HTML结构如下 <!-- 数据列表 --> <table id= ...
- org.json.JSONObject的optXXX方法
JSONObject有很多optXXX方法,比如optBoolean,optString,optInt.... 他们的意思是:如果这个JSONObject对象,如果有返回这个属性的值,如果没有返回一个 ...
- docker入门(二)容器与镜像的理解
10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...
- 【转】shell学习笔记(六)——流程控制之for循环
基本语法格式: for 变量 in 列表 do 命令行(通常用到循环变量) done ********Linux Shell for循环写法总结******** for((i=1;i<</ ...
- 【Shell脚本学习指南笔记】重定向文件描述符 2>&1
如: make > results 2>&1 重定向 > results让文件描述符1(标准输出)作为文件results,接下来的重定向2>&1有两个部分.2& ...