day35-hibernate映射 03-Hibernate持久态对象自动更新数据库
持久态对象一个非常重要的能力:自动更新数据库。
package cn.itcast.hibernate3.demo1; import static org.junit.Assert.*; import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test; import cn.itcast.utils.HibernateUtils; /**
* Hibernate的测试类
*
* @author zhongzh
*
*/ public class HIbernateTest1 {
@Test
//测试持久态的对象自动更新数据库(因为它依赖了hibernate的一级缓存区域)
public void demo2() {
//1.创建Session
Session session = HibernateUtils.openSession();
//2.开启事务
Transaction tx = session.beginTransaction(); //获得一个持久态的对象
Book book = (Book) session.get(Book.class, 1);
book.setName("Struts2开发");//现在不用update(book)也可以自动完成数据库的更新
//没有手动调用update()方法也可以完成数据库的更新 //session.update(book);//之前是update(book)才能完成修改 //3.提交事务
tx.commit();
//4.关闭资源
session.close();
}
@Test
//区分持久化对象的三种状态:
public void demo1() {
// 1.创建Session
Session session = HibernateUtils.openSession();
// 2.开启事务
Transaction tx = session.beginTransaction(); //往数据库去保存一本图书:
Book book = new Book();//book是一个持久化对象,因为book有一个实体类已经
//和我们的表建立起映射了 Book是一个持久化类 一new()就是瞬时态了
//瞬时态: 没有唯一标识OID,没有与session关联.
//刚new()出来,从数据库里面也不知道它是什么。它根本就没有OID,没有和session关联,是一个单独的
//对象
book.setName("Hibernate开发");
book.setAuthor("孙XX");
book.setPrice(65d); session.save(book); //持久态 往数据库一存它就有OID了,而且是和session关联。
//持久态: 有唯一标识OID,与session关联. // 3.事务提交
tx.commit();
//4.释放资源
session.close(); book.setName("Struts2开发"); //脱管态 session关闭了,book不与session关联了。
//脱管态:有唯一的标识,没有与session关联.
fail("Not yet implemented");
} }
//******自动更新数据库的能力依赖了Hibernate的一级缓存.
day35-hibernate映射 03-Hibernate持久态对象自动更新数据库的更多相关文章
- Hibernate的游离态与持久态转换
在Hibernate中,一个PO可能经过长时间的操作,session已过时关闭,此时PO已经是一个游离态的对象,这时要转换为持久战态,有下面几种方法: 1.session.saveOrUpdate(o ...
- Hibernate映射文件创建和删除触发器,存储过程等数据库对象
创建表,触发器,和存储过程等数据库对象,这里一定要用create 在hibernate.cfg.xml文件中
- hibernate 对象三态(瞬态、持久态、脱管态)之我见
刚开始学习hibernate时,对其对象的三种状态理解的模模糊糊,一直停留在一知半解的状态,前两天又回顾了一下,顿时醒悟,原来三种状态理解起来是很容易的. 先看一下对Hibernate对象状态的解释: ...
- hibernate课程 初探单表映射1-3 hibernate简介
1 hibernate定义: Java领域一项开源的orm框架技术: hibernate对jdbc进行轻量级的封装. hibernate 作为持久层存在.就是通过对象关系映射把项目中的对象持久化到数据 ...
- hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系
hibernate环境配置:导包.... 单向n-1:单向 n-1 关联只需从 n 的一端可以访问 1 的一端 <many-to-one> 元素来映射组成关系: name: 设定待映射的持 ...
- 生成 hibernate 映射文件和实体类
创建web工程,使用Hibernate的时候,在工程里一个一个创建实体类太麻烦,浪费时间,现在教大家如何用MyEclipse自动生成Hibernate映射文件及实体类 方法/步骤 创建数据库,创建 ...
- Hibernate学习之——Hibernate环境搭建
之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...
- Hibernate(3)配置文件hibernate.cfg.xml
5.配置文件 Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性,每个 Hibernate 配置文件对应一个 Configuration 对象 Hibern ...
- hibernate查询出的实体,set值后,自动更新到数据库
1.问题症状描述 最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这个 ...
随机推荐
- hzau 1199 Little Red Riding Hood
1199: Little Red Riding Hood Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 918 Solved: 158[Submit ...
- 51nod 1449 贪心
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1449 1449 砝码称重 题目来源: CodeForces 基准时间限制 ...
- c#线程中下载文件到本地
额,太懒了 直接上示例代码... /// <summary> /// 下载文件到本地 2017-05-31 /// </summary> /// <param name= ...
- mac上获取手机的uuid
把手机连上mac 终端中输入: system_profiler SPUSBDataType | grep "Serial Number:.*" 修改用 | sed s#" ...
- abd 命令
adb全称Android Debug Bridge ,安卓调试桥接器.它是Android SDK里面的一个工具,用这个工具可以直接操作管理Android模拟器或者真实Android设备.adb的工作方 ...
- HttpClient与Spring RestTemplate
需要的包 ,除了Spring的基础包外还用到json的包,这里的数据传输使用json格式 客户端和服务端都用到一下的包 <!-- Spring --> <dependency> ...
- Memcache mutex设计模式
Memcache mutex设计模式 转自:https://timyang.net/programming/memcache-mutex/ 场景 Mutex主要用于有大量并发访问并存在cache过期的 ...
- CI框架后台添加左侧导航栏出现的一系列问题
- Python3.7安装pyspider
下面是Python3.7安装pyspider的方式,能安装成功但是后期有很多问题,所以不建议,请使用3.5版本的Python进行安装!!!由于要做爬虫工作,所以学习pyspider框架,下面介绍安装步 ...
- 洛谷 P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper
题目描述 A little known fact about Bessie and friends is that they love stair climbing races. A better k ...