`

Hibernate理解其生命周期....

阅读更多
一. 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();
   }
}
分享到:
评论

相关推荐

    一套不错的hibernate学习教程

    一套不错的hibernate教程,发现这里没有. 我是从百度上文库里搞来的,花了我30多分. 现在整合一起.只要5分啦.. 内容简介 --------------------------------- ...Hibernate对象的生命周期 ..............

    HibernateAPI中文版.chm

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. ...

    Hibernate持久化对象的生命周期

    Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached Objects)、 Java对象在JVM中的生命周期 理解Session的缓存 在Hibernate应用...

    hibernate3.04中文文档.chm

    22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 23.2. Hibernate 映射 23.3. Hibernate 代码 24. ...

    Hibernate+中文文档

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. ...

    hibernate3.2中文文档(chm格式)

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. ...

    Hibernate中文详细学习文档

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. ...

    Hibernate 中文 html 帮助文档

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:...

    Hibernate教程

    22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 23.2. Hibernate 映射 23.3. Hibernate 代码 24. 示例...

    最全Hibernate 参考文档

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     23.1.1 Session对象的生命周期与本地线程绑定  23.1.2 Session对象的生命周期与JTA事务绑定  23.2 实现对话  23.2.1 使用游离对象  23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    hibernate 教程

    持久化生命周期(Lifecycle)中的回调(Callbacks) 4.5. 合法性检查(Validatable)回调 4.6. XDoclet标记示例 5. O/R Mapping基础 5.1. 映射声明(Mapping declaration) 5.1.1. Doctype 5.1.2. ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     23.1.1 Session对象的生命周期与本地线程绑定  23.1.2 Session对象的生命周期与JTA事务绑定  23.2 实现对话  23.2.1 使用游离对象  23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章...

    hibernate 框架详解

    长生命周期session和自动版本化 12.3.3. 脱管对象(deatched object)和自动版本化 12.3.4. 定制自动版本化行为 12.4. 悲观锁定(Pessimistic Locking) 13. 拦截器与事件(Interceptors and events) 13.1. 拦截...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.3.1. 理解代码........................................................................................................................................................... 27 1.3.2. 工作原理..............

    Hibernate3+中文参考文档

    21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     23.1.1 Session对象的生命周期与本地线程绑定  23.1.2 Session对象的生命周期与JTA事务绑定  23.2 实现对话  23.2.1 使用游离对象  23.2.2 使用手工清理缓存模式下的Session  23.3 小结  23.4 思考题 第24章...

Global site tag (gtag.js) - Google Analytics