`

hibernate 生成一条数据 三种状态

阅读更多

hibernate 持久层有三种状态

 

transient 当一个对象new 出来后 还不有被保存时的状态,以数据库里没有与之对应的记录 可以随时被回收

presistent    这一种状态是被session管理的状态,在数据据库中有与之对应的记录 在commit之前可以随便

                 改里面的记录,在commit里会自动有一个账数据的检查,不同会自动更新,里面的所有变化在commit前

                 是同步的,

detache    在这个阶段,是save后的段,数据库有了实在的记录,不仅是有对应,已经存进去了,如果再update 就会 

                      回到presistent 的状态

 

 

 

 

 

 

 

 

//生成一条数据
 public void testInsert() {
  Session session = null;
  User user= null;
  try{
   session = HibernateUtils.getSession();
   session.beginTransaction();
   //transient
   user = new User();
   user.setName("吕成龙");
   user.setPassword("123456");
  
   //presistent
   session.save(user);
   
   //修改名字
   user.setName("小龙");
   //detache
   session.getTransaction().commit();
   user.setName("大龙");
  }catch(Exception e) {
   session.getTransaction().rollback();
   e.printStackTrace();
  }finally {
   HibernateUtils.closeSession(session);
  }
  //update 后又回到了persistent 可以任意更改了,与commit同步
   try{
    session = HibernateUtils.getSession();
    session.beginTransaction();
    
    session.update(user);
    
    session.getTransaction().commit();
   }catch(Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace();
   }finally {
    HibernateUtils.closeSession(session);
   }
  

  • 大小: 43.9 KB
分享到:
评论

相关推荐

    Hibernate中对象的三种状态

    在Java的持久化框架Hibernate中,对象的状态管理是其核心特性之一...总之,理解Hibernate中对象的三种状态以及它们之间的转换对于开发人员来说至关重要。熟练掌握这些概念有助于编写出更加高效、可靠的Java持久化代码。

    hibernate保存不到数据1

    标题中的"hibernate保存不到数据1"是一个关于Hibernate框架在尝试保存数据到数据库时遇到问题的场景。描述提到了一个具体的解决方案,即通过在`hibernate.cfg.xml`配置文件中设置`connection.autocommit`属性为`true...

    05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法

    总结来说,理解和掌握实体对象的三种状态以及`saveOrUpdate`方法是优化Hibernate应用的基础。通过深入学习这些概念,开发者能够更有效地处理数据持久化,提高代码的稳定性和可维护性。在实践中,应根据具体需求选择...

    hibernate独立开发包

    1. **实体(Entity)**:在Hibernate中,实体通常对应于数据库中的表,一个Java类就是一个实体,它的实例是数据库中的一条记录。 2. **注解(Annotations)**:在Java 5之后,Hibernate开始使用注解来定义实体类和...

    hibernate的各种保存方式的区别

    当调用此方法时,Hibernate会生成一条SQL INSERT语句来将该对象的数据插入到数据库中。如果该对象已经处于持久化状态,则调用`save`方法将会抛出异常。 - **update** 方法用于更新一个脱管状态的对象。当调用此...

    hibernate二级缓存

    例如,如果一个对象在事务内被多次修改,Hibernate只会生成一条包含所有修改的UPDATE语句,而不是每次修改都执行SQL。 二级缓存则是在SessionFactory级别,跨越不同事务和线程共享的。它保存的对象对整个应用都是...

    jsp hibernate 数据保存操作的原理.docx

    接下来,Hibernate会构造一条`INSERT`语句并将实体对象的数据插入到数据库中。需要注意的是,虽然调用了`session.save()`方法,但实际的`INSERT`操作并不是立即执行的,而是在清理Session缓存时进行的,通常是事务...

    hibernate的乐观锁和悲观锁

    观察Hibernate生成的SQL语句可以看到`FOR UPDATE`子句的使用,这就是悲观锁的具体实现方式之一。 **Hibernate的锁模式**: - `LockMode.NONE`:不使用任何锁机制。 - `LockMode.WRITE`:Hibernate在插入或更新记录...

    hibernate jar包汇总

    每个实体类的实例对应数据库中的一条记录。 4. **持久化类与表映射**:使用`@Table`注解来指定实体类所对应的数据库表名,`@Column`注解用于指定字段与表列的映射。 5. **主键**:`@Id`注解定义实体类中的主键字段...

    Hibernate Developer Guide

    Hibernate支持通过一次数据库操作插入多条记录。 ##### 4.2 批量更新 批量更新同样可以提高更新操作的效率。 ##### 4.3 StatelessSession StatelessSession用于执行简单的读写操作,不会维护持久性上下文。 ###...

    Hibernate练习题

    - 如果在事务中对同一个对象的同一属性进行了多次修改,提交时Hibernate只会生成一条UPDATE语句。所以,上述程序提交时只需提交1条UPDATE语句,答案是B) 1。 8. SessionFactory的理解: - A) 错误:...

    hibernate框架相关的例子

    - **保存(Save)**: 使用`Session.save()`方法将临时对象转变为持久化对象,生成一个新的数据库记录。 - **更新(Update)**: 如果对象已经是持久化状态,修改对象后调用`Session.update()`会更新数据库中的记录。 ...

    hibernate中文参考文档

    Hibernate将对象分为瞬时态、持久态、脱管态三种状态。瞬时态对象未被Hibernate管理,持久态对象与数据库中的一条记录相对应,而脱管态对象曾是持久态但已失去Session的管理。对象的生命周期包括了初始化、持久化、...

    Hibernate之API初识及增删改查实现案例hibernate003

    在CSDN博客中,作者分享了一个关于Hibernate API的学习教程,详细介绍了如何在实际项目中使用Hibernate进行数据操作。这个教程涵盖了以下几个关键知识点: 1. **Hibernate配置**:首先,你需要设置Hibernate的配置...

    hibernate_API

    Hibernate定义了对象的三种状态:瞬时态、持久态和脱管态。瞬时态对象未被Session管理,持久态对象已与Session关联,脱管态对象曾是持久态但已从Session中清除。 六、持久化操作 1. 插入:Session的save()或...

    达内Hibernate的PDF下载

    4. 使用批处理操作,批量处理多条数据。 九、实战案例 通过具体的项目案例,如用户管理系统、订单系统等,实践Hibernate的使用,包括实体类设计、映射配置、数据操作及事务管理等。 总结,达内的Hibernate PDF教程...

    精通Hibernate源代码

    2. Persistent:对象已持久化,与数据库中一条记录关联。 3. Detached:对象曾是持久化的,但当前不再与Session关联。 六、缓存机制 Hibernate支持一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的...

Global site tag (gtag.js) - Google Analytics