hibernate之三种时态之间的转换
判断状态的标准
oid 和 session相关性
public class HibernateUtils {
private static SessionFactory sessionFactory=null;
static{
//获取config 加载配置文件
Configuration configure = new Configuration().configure();
sessionFactory = configure.buildSessionFactory();
}
//获取session
public static Session getSession(){
Session session = sessionFactory.openSession();
return session;
}
}
瞬时态
瞬时态------持久态
save和saveOrUpdata操作
@Test//瞬时态转化为持久态
public void test02(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
//处于游离态 没有oid 与session无关
User user=new User("zhangsan111","123456789","zhangfei","1064705527@qq.com","15029021367",new Date(),"M",1,"0");
session.save(user);//处于持久态 与session有关 有oid (瞬时态转化为持久态)
ts.commit();
session.close();
}
瞬时态------游离态 只需要给一个oid (主键生成策略进行了限定 这样我们只能通过持久态进行转换)
@Test//瞬时态转化为游离态态
public void test02(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
//处于游离态 没有oid 与session无关
User user=new User("zhangsan111","123456789","zhangfei","1064705527@qq.com","15029021367",new Date(),"M",1,"0");
session.save(user);//处于持久态 与session有关 有oid (瞬时态转化为持久态)
ts.commit();
session.close();
System.out.println(user.getUid());//处于游离态 有oid session关闭
}
持久态
持久态----瞬时态 delete操作
@Test//持久态转化为瞬时态
public void test03(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
User u=session.get(User.class,"402898a45fcec558015fcec55d5c0000");//处于持久态 与session有关 有oid (瞬时态转化为持久态)
System.out.println(u);
session.delete(u);
ts.commit();
session.close();
}
持久态----游离态 close(关闭session) clear 清除一级缓存(session) evict清除以及缓存(指定的缓存)
@Test//持久态转化为游离态
public void test03(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
User u=session.get(User.class,"987e21997c134dc4b6538010d101bcef");//处于持久态 与session有关 有oid (瞬时态转化为持久态)
ts.commit();
session.close();
System.out.println(u);//此时为游离态 有oid session关闭
}
游离态
游离态----持久态
@Test//游离态转化为持久态
public void test04(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
User u=session.get(User.class,"12");//处于持久态 与session有关 有oid (瞬时态转化为持久态)
ts.commit();
session.close();
u.setUsername("123456");//游离态
Session session1 = HibernateUtils.getSession();
//开启事务
Transaction ts1 = session1.beginTransaction();
session1.update(u);//持久态
ts1.commit();
session1.close();
}
游离态----瞬时态
@Test//游离态转化为瞬时态
public void test04(){
//获取连接
Session session = HibernateUtils.getSession();
//开启事务
Transaction ts = session.beginTransaction();
User u=session.get(User.class,"12");//处于持久态 与session有关 有oid (瞬时态转化为持久态)
ts.commit();
session.close();
u.setUsername("123456");//游离态
Session session1 = HibernateUtils.getSession();
//开启事务
Transaction ts1 = session1.beginTransaction();
session1.delete(u);//瞬时态
ts1.commit();
session1.close();
}
hibernate之三种时态之间的转换的更多相关文章
- 【转】Notepad++中Windows,Unix,Mac三种格式之间的转换
原文网址:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_func_windows_unix_mac.ht ...
- FlyCapture2 fc2Image OpenCV IplImage Conversion 两种图像格式之间的转换
fc2Image是FlyCapture SDK的C语言库中的图片格式,由于在Windows上的MinGW无法编译FlyCapture2的C++库,只能使用C语言库,所以当我们在同时使用OpenCV的图 ...
- C++四种类型之间的转换
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a. C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cas ...
- 【SSH】——Hibernate三种状态之间的转化
Hibernate的三种状态为:transient.persistent和detached.对这三种状态的理解可以结合Session缓存,在Session缓存中的状态为persistent,另外两种不 ...
- 3.13. Notepad++中Windows,Unix,Mac三种格式之间的转换
由于历史原因,导致Windows,Unix/Linux,Mac三者之间,对于文件中所用回车换行符,表示的方法,都不一样. 这就导致了很多人都会遇到回车换行符的困惑,和需要在不同格式间进行转换. 其中, ...
- hibernate04--三种状态之间的转换
public class StudentTest { Session session=null; Transaction transaction=null; //在执行测试方法之前 先执行before ...
- SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换
http://blog.sina.com.cn/s/blog_5aee9eaf0100y44q.html 在CentOS6.2 中安装intel 的c++和fortran 的编译器时,遇到来一个关于S ...
- Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;能够将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/24256091 Session操作过程中的po ...
- 【Go】IP地址转换:数字与字符串之间高效转换
转载:https://blog.thinkeridea.com/201903/go/ip2long.html IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1. ...
随机推荐
- linq join用法
单条件: var query = from person in people join pet in pets on person equals pet.Owner select new { Owne ...
- js原生语法实现表格操作
HTML页面: <!doctype html> <html lang="en"> <head> <meta charset="U ...
- andorid 配置器组件和提示消息
.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
- linux网卡绑定脚本
2013-08-20 15:30:51 此脚本适用于CentOS5.x和CentOS6.x. #!/bin/bash #**************************************** ...
- mysql 8小时timeout问题
MySQL> show variables like '%timeout%'; +--------------------------+-------+ | Variable_name ...
- web前端学习笔记:文本属性
今天的web前端笔记主要讲述文本属性,希望能帮助到正在学习web前端开发的初学者们,废话不多说了,一起来看看文本属性的相关内容吧. 文本属性 文本缩进 将Web页面上的一个段落第一行缩进,这是一种最常 ...
- 20172306《Java程序设计》第五周学习总结
20172306 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第五章主要学习了if以及while的语句的运用 运算符:== 代表相等,是两个之间的内存地址 ...
- post方式发送请求报文
$url="http://www.test.com/04_demo_weather.php?id=5"; $ci=curl_init($url); curl_setopt($ci, ...
- Partition Array into Disjoint Intervals LT915
Given an array A, partition it into two (contiguous) subarrays left and right so that: Every element ...
- git舍弃文件更改
未进行任何提交,即文件更改在工作区 # filename 对应进行操作的文件名 git checkout -- filename 已用git add 命令提交,即文件更改在暂存区 # 舍弃暂存区的修改 ...