?? persistent.java
字號(hào):
package cn.hxex.basic.exercise;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import cn.hxex.basic.model.User;
public class Persistent
{
public static final SessionFactory sessionFactory;
static
{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public static void main(String[] args)
{
Persistent.save();
}
public static void save()
{
// 創(chuàng)建游離態(tài)實(shí)體對(duì)象User
User user = new User();
user.setName( "abc" + String.valueOf( Math.random() ) );
// 為了避免兩次運(yùn)行的用戶名重復(fù),所以增加了隨機(jī)數(shù)
user.setPassword( "def" );
// user仍然處于游離態(tài)
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
// 此時(shí)user對(duì)象仍然是Transient狀態(tài)
System.out.println( "User ID:" + user.getId() );
session.save( user );
// 此時(shí),user對(duì)象已經(jīng)被納入了Hibernate的實(shí)體管理容器中,并轉(zhuǎn)變?yōu)镻ersistent狀態(tài)
// user.setPassword( "mmmmmmmmmmmmm" );
System.out.println( "User ID:" + user.getId() );
//load( user.getId() );
tx.commit();
// 事務(wù)被提交后,將向數(shù)據(jù)庫的用戶表中插入一條記錄
System.out.println( "Transaction 1 commit!" );
//User u = load( user.getId() );
if( session.load( User.class, user.getId() )==user )
{
System.out.println( "Equals!" );
}
else
{
System.out.println( "Not Equals!" );
}
User u = load( user.getId() );
if( u==user )
{
System.out.println( "Equals!" );
}
Transaction tx2 = session.beginTransaction();
user.setPassword( "mmmmmmmmmmmmm" );
load( user.getId() );
tx2.commit();
// 雖然這個(gè)事務(wù)中并沒有調(diào)用Session的save()方法來保存user對(duì)象
// 但由于user對(duì)象處于Persistent狀態(tài),所以對(duì)user對(duì)象所做的任何修改都將被持久化到數(shù)據(jù)庫中
// 那么數(shù)據(jù)庫中的用戶密碼也應(yīng)該變?yōu)榱薲ef。
System.out.println( "Transaction 2 commit!" );
load( user.getId() );
session.close();
}
public static User load( String id )
{
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = (User)session.load( User.class, id );
// Hibernate在返回User對(duì)象之間會(huì)將其納入到Hibernate的實(shí)體管理容器中
// 所以,這時(shí)的user對(duì)象是Persistent狀態(tài)的
System.out.println( user );
tx.commit();
session.close();
return user;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -