一. User.java
package test;
import java.util.Set;
public class User {
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
二.User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="test">
<class name="User" table="userinfo">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="string"></property>
<property name="password" column="password" type="string"></property>
</class>
</hibernate-mapping>
三.LifeCycle.java
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class LifeCycle {
public static final SessionFactory sessionFactory;
static{
//初始化SessionFactory;
sessionFactory=new Configuration().configure().buildSessionFactory();
}
//生命周期测试
public static void lifecycle(){
//创建临时实体对象User
User user=new User();
user.setName("abc"+String.valueOf(Math.random()));
user.setPassword("def");
//user仍处于临时状态
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
//user仍处于临时状态
session.save(user);
//此时,user已经被纳入Hibernate实体管理器中,并转为Persistent状态
System.out.println("User 1:"+user);
//此时的id已经有值了。
get(user.getId());
//但并未真正执行数据库操作,所以无法得到对象的值
tx.commit();
//事务被提交后,将向数据库插入一条记录
System.out.println("Transaction 1 commit!");
get(user.getId());
//这时可以出数据库中得到刚插入的对象
Transaction tx2=session.beginTransaction();
user.setPassword("mmmmmmmmmm");
tx2.commit();
//虽然这个事务并没有调用session的save()方法来保存User对象
//但由于这个对象处理持久状态,那么任何修改都会被持久化到数据库中。
System.out.println("Transaction 2 commit!");
session.close();
get(user.getId());
//此时密码已经变成新值。
}
public static User get(Integer id){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
User user=(User)session.get(User.class, id);
System.out.println("在GET中:"+user);
tx.commit();
session.close();
return user;
}
public static void main(String args[]){
LifeCycle.lifecycle();
}
}
package test;
import java.util.Set;
public class User {
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
二.User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="test">
<class name="User" table="userinfo">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="name" column="name" type="string"></property>
<property name="password" column="password" type="string"></property>
</class>
</hibernate-mapping>
三.LifeCycle.java
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class LifeCycle {
public static final SessionFactory sessionFactory;
static{
//初始化SessionFactory;
sessionFactory=new Configuration().configure().buildSessionFactory();
}
//生命周期测试
public static void lifecycle(){
//创建临时实体对象User
User user=new User();
user.setName("abc"+String.valueOf(Math.random()));
user.setPassword("def");
//user仍处于临时状态
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
//user仍处于临时状态
session.save(user);
//此时,user已经被纳入Hibernate实体管理器中,并转为Persistent状态
System.out.println("User 1:"+user);
//此时的id已经有值了。
get(user.getId());
//但并未真正执行数据库操作,所以无法得到对象的值
tx.commit();
//事务被提交后,将向数据库插入一条记录
System.out.println("Transaction 1 commit!");
get(user.getId());
//这时可以出数据库中得到刚插入的对象
Transaction tx2=session.beginTransaction();
user.setPassword("mmmmmmmmmm");
tx2.commit();
//虽然这个事务并没有调用session的save()方法来保存User对象
//但由于这个对象处理持久状态,那么任何修改都会被持久化到数据库中。
System.out.println("Transaction 2 commit!");
session.close();
get(user.getId());
//此时密码已经变成新值。
}
public static User get(Integer id){
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
User user=(User)session.get(User.class, id);
System.out.println("在GET中:"+user);
tx.commit();
session.close();
return user;
}
public static void main(String args[]){
LifeCycle.lifecycle();
}
}