判断状态的标准

  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. asp.net core webapi 日期返回中出现字母T

    全局配置 在Startup文件中修改 // This method gets called by the runtime. Use this method to add services to the ...

  2. laravel中不使用 remember_token时退出报错,如何解决?

    Route::get('auth/logout','Auth\AuthController@getLogout'); 这是laravel自带的退出功能只需要写这一条路由就行了,但是很可能爆出以下错误: ...

  3. andorid 表格布局

    tablelayout.xml表格布局 <?xml version="1.0" encoding="utf-8"?> <TableLayout ...

  4. OSX.PackageManager-Homebrew

    How to install pip on mac? http://stackoverflow.com/questions/12092306/how-to-install-scipy-with-pip ...

  5. b2c项目访问

    http://xmpw.testbase.smi170.com:8091/member/movie_coupon_new.php

  6. socket 长连接

    实现: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的. 如果,长时间未发送维持连接包,服务端程序将断开连接. 服务端: 由于客户端会定时(keepAliveDelay毫秒)发送 ...

  7. sleep()方法和yield()方法有什么区别?

    两者都是Thread类的静态方法,定义如下 public static void sleep(long millis) throws InterruptedException public stati ...

  8. Laravel Session() 失效的问题

    之前因为自己自定义了后台的路由,然后路由定义的乱七八糟的. 突然发现session失效了,记录一下,避免后者遇坑. 路由组统一通过web中间件或者存在于一个中间件中 protected $middle ...

  9. Microsoft translater

    professional  tranlater tool : https://translator.microsoft.com/neural/

  10. redis2

    一.安装redis 1)     下载redis安装包 可去官网http://redis.io ,也可通过wget命令, wget http://download.redis.io/redis-sta ...