判断状态的标准

  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之三种时态之间的转换的更多相关文章

  1. 【转】Notepad++中Windows,Unix,Mac三种格式之间的转换

    原文网址:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_func_windows_unix_mac.ht ...

  2. FlyCapture2 fc2Image OpenCV IplImage Conversion 两种图像格式之间的转换

    fc2Image是FlyCapture SDK的C语言库中的图片格式,由于在Windows上的MinGW无法编译FlyCapture2的C++库,只能使用C语言库,所以当我们在同时使用OpenCV的图 ...

  3. C++四种类型之间的转换

    C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a. C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cas ...

  4. 【SSH】——Hibernate三种状态之间的转化

    Hibernate的三种状态为:transient.persistent和detached.对这三种状态的理解可以结合Session缓存,在Session缓存中的状态为persistent,另外两种不 ...

  5. 3.13. Notepad++中Windows,Unix,Mac三种格式之间的转换

    由于历史原因,导致Windows,Unix/Linux,Mac三者之间,对于文件中所用回车换行符,表示的方法,都不一样. 这就导致了很多人都会遇到回车换行符的困惑,和需要在不同格式间进行转换. 其中, ...

  6. hibernate04--三种状态之间的转换

    public class StudentTest { Session session=null; Transaction transaction=null; //在执行测试方法之前 先执行before ...

  7. SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换

    http://blog.sina.com.cn/s/blog_5aee9eaf0100y44q.html 在CentOS6.2 中安装intel 的c++和fortran 的编译器时,遇到来一个关于S ...

  8. Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;能够将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/24256091 Session操作过程中的po ...

  9. 【Go】IP地址转换:数字与字符串之间高效转换

    转载:https://blog.thinkeridea.com/201903/go/ip2long.html IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1. ...

随机推荐

  1. (转)JavaScript escape() 函数(该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。)

    JavaScript escape() 函数 JavaScript 全局对象参考手册 定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape ...

  2. How to Solve Lonsdor K518ISE Abnormal Display by Factory Resetting

    Here’s the working solution to Lonsdor K518ISE Key Programmer abnormal display after upgrade. Proble ...

  3. BZOJ 1791: [IOI2008]Island 岛屿 - 基环树

    传送门 题解 题意 = 找出无向基环树森林的每颗基环树的直径. 我们首先需要找到每颗基环树的环, 但是因为是无向图,用tarjan找环, 加个手工栈, 我也是看了dalao的博客才知道tarjan找无 ...

  4. Vim 基本配置

    1.关闭vi的一致性模式 set nocompatible 2.配置backspace的工作方式 set backspace=indent,eol,start 3.显示行号 set number 4. ...

  5. Centos安装配置Postfix邮件服务器--网址

    http://www.haiyun.me/archives/centos-install-postfix.html http://blog.csdn.net/liuyunfengheda/articl ...

  6. P1083龙舟比赛

    题目如下: 现在正在举行龙舟比赛,我们现在获得了最后冲刺时的俯视图像,现在你要输出各条龙舟的名次. 这张图像由r行c列的字符组成,每行的最左边的字符表示起点,所以字符为'S',最右边的字符为'F'.并 ...

  7. error C4996: 'GetVersionExW': 被声明为已否决

    1.Project Properties > Configuration Properties > C/C++ > General > SDL checks关掉 其他方法:2. ...

  8. ApplicationContext(九)初始化非延迟的 bean

    ApplicationContext(九)初始化非延迟的 bean 此至,ApplicationContext 已经完成了全部的准备工作,开始初始化剩余的 bean 了(第 11 步). public ...

  9. windows下忘记mysql的root密码

    1.停止mysql 2.命令行启动mysqlmysqld --defaults-file="c:\mysql\mysql server 5.1\my.ini" --console ...

  10. php中如何解决显示数据库中的内容乱码

    第一步: 第二步:在代码开始处加一行