Hibernate学习5—Hibernate操作对象

Posted 有点懒惰的大青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate学习5—Hibernate操作对象相关的知识,希望对你有一定的参考价值。

第一节:Hibernate 中四种对象状态                                    
删除状态:处于删除状态的Java 对象被称为删除对象。比如说session delete一个对象,这个对象就不处于session缓存中了, 已经从session的缓存中移出来了,只要提交事务的话,对应的数据库记录也会被删除。
 
游离状态:比如说session被关闭了,这里面的对象就变为游离状态了,游离状态和删除状态中的对象,如果不用的话,会被垃圾收集器回收。
 
几种状态之间的转化:
例子:
public class StudentTest {
    public static void main(String[] args) {
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.openSession();    
        session.beginTransaction();    
        
        Class c1 = new Class();        //临时对象1
        c1.setName("08计本");
        
        Class c2 = new Class();        //临时对象2
        c2.setName("09计本");
        
        session.save(c1);        //持久化对象
        session.save(c2);        //持久化对象
        
        session.delete(c2);     //删除对象
        
        session.getTransaction().commit();    //提交事务
        session.close();                    //关闭session
        
        System.out.println(c1.getName());    //游离对象
        System.out.println(c2.getName());    //删除对象
    }

}
View Code

解释:

c1、c2刚被new出来的时候是临时状态
 
session.save(c1) session.save(c2),c1/c2就变成了持久化对象
 
 
session被关闭之后,c1就是游离状态了,c1已经不在session缓存中了,当然呢,有一个对象引用依然指向着它,这个对象依然存在,只不过是变成游离对象了;
System.out.println(c1.getName())这个数据依然能取得到;
 
session.delete(c2)后,c2从session缓存中被移出,c2变为删除状态了,它指的删除是,session提交事务时会删除这个对象对应的数据库里面的一条记录
System.out.println(c2.getName())还是能打印,只不过是删除状态;
 
 
 
console打印:
 

以上是关于Hibernate学习5—Hibernate操作对象的主要内容,如果未能解决你的问题,请参考以下文章

hibernate操作大文本字段Blob和Clob

Hibernate学习5—Hibernate操作对象

Hibernate学习笔记_02

Hibernate学习5—Hibernate操作对象2

hibernate框架学习笔记5:缓存

[原创]java WEB学习笔记89:Hibernate学习之路-- -Hibernate检索方式(5种),HQL介绍,实现功能,实现步骤,