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. ...
随机推荐
- Oracle_高级功能(4) 数据库存储结构
数据库存储结构分为:物理存储结构和逻辑存储结构.物理结构和逻辑结构分开,对物理数据的存储不会影响对逻辑结构的访问.1.物理存储结构 数据库文件 os block2.逻辑存储结构 tablespace ...
- Oracle存储过程in、out、in out 模式参数
Oracle存储过程in.out.in out 模式参数 标签: oracle存储inout参数 2016-11-14 11:59 3272人阅读 评论(0) 收藏 举报 分类: oracle(7) ...
- hdu 5326(基础题) work
http://acm.hdu.edu.cn/showproblem.php?pid=5326 一道水题,题目大意是在公司里,给出n个员工和目标人数m,然后下面的n-1行是表示员工a管理b,问在这些员工 ...
- 八皇后问题(dfs)
#include <iostream> #include <stdio.h> using namespace std; ; ], b[], c[], vis[][]; //a, ...
- ROC曲线 Receiver Operating Characteristic
ROC曲线与AUC值 本文根据以下文章整理而成,链接: (1)http://blog.csdn.net/ice110956/article/details/20288239 (2)http://b ...
- Win7下Qt5的安装及使用
1.安装Qt5 Qt5的安装比Qt4的安装简单多了,我装的是Qt5.4(qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe),它集成了MinGW.Q ...
- A面&B面
难难难.道是玄,不遇知音不可谈.遇了知音聊两句,免教那枉费舌尖.难得今天心情不错,反思毕业这五年的种种,有浑噩.迷茫.彷徨.莽撞.执着.困顿.不惧,走到今天迈过了几道坎早已忘却,同时也还在询问自己值不 ...
- Using The jQuery Migrate Plugin
jQuery( html [, ownerDocument ] )Returns: jQuery Description: Creates DOM elements on the fly from t ...
- STL基础1:vector
#include <iostream> #include <vector> #include <algorithm> #include <numeric> ...
- barcode(index)
在很多情况下,我们需要把多个样本混合在一起,在同一个通道(lane)里完成测序.像转录组测序.miRNA测序.lncRNA测序.ChIP测序等等,通常每个样本所需要的数据量都比较少,远少于HiSeq一 ...