转载

hibernate对象三种状态

hibernate里对象有三种状态:

1,Transient 瞬时 :对象刚new出来,还没设id,设了其他值。

2,Persistent 持久:调用了save()、saveOrUpdate(),就变成Persistent,有id

3,Detached  脱管 : 当session  close()完之后,变成Detached。

hibernate对象三种状态

例子程序:

Teacher类:

hibernate对象三种状态
 1 package com.oracle.hibernate.id;  2  3 import javax.persistence.Entity;  4 import javax.persistence.GeneratedValue;  5 import javax.persistence.Id;  6  7 @Entity  8 public class Teacher {  9 10 11 12 private int id; 13 private String name; 14 15 private String title; 16 17  @Id 18  @GeneratedValue 19 public int getId() { 20 return id; 21  } 22 23 public void setId(int id) { 24 this.id = id; 25  } 26 27 public String getName() { 28 return name; 29  } 30 31 public void setName(String name) { 32 this.name = name; 33  } 34 35 public String getTitle() { 36 return title; 37  } 38 39 public void setTitle(String title) { 40 this.title = title; 41  } 42 43 44 }
View Code
package com.oracle.hibernate.id; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class HibernateCoreAPITest { private static SessionFactory sf = null; @BeforeClass public static void beforeClass() { //try-chatch是为了解决Junit有错误不提示的bug try { sf = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (HibernateException e) { e.printStackTrace(); } } @Test public void testTeacher() { Teacher t = new Teacher(); //没有设id t.setName("li"); t.setTitle("high"); Session session = sf.getCurrentSession(); session.beginTransaction(); session.save(t); //打印出id  System.out.println(t.getId()); session.getTransaction().commit(); } @AfterClass public static void afterClass() { sf.close(); } } 
正文到此结束
Loading...