hibernate中lock方法到网上没有找到几个例子,所以自己就写一个放这。
@Test
public void getStudent() {
Session s = sf.openSession();
s.beginTransaction();
Student student = (Student) s.get(Student.class, 4);
student.setName("whp4");//这样改后,因为当前对象还在session管理范围里,所以它的改变hibernate是能够知道的,操作后,数据库里当前记录的name变成了whp4
s.beginTransaction().commit();
s.close();
s = sf.openSession();//重新打开一个新的session
s.beginTransaction();//打开事务
System.out.println(student.getName());
s.lock(student, LockMode.NONE);//将脱管的student对象转化成持久太对象
student.setName("whp8");//对student的name进行修改.
s.beginTransaction().commit();
s.close();
//完成后student的name为whp8.
}
分享到:
相关推荐
在《hibernate_3200_Concurrency_Pessimistic_Lock》这个压缩包中,很可能包含了关于Hibernate框架如何实现悲观锁和乐观锁的详细资料,包括源代码示例、配置方法和使用场景。通过学习这些资料,你可以深入了解这两种...
### Hibernate.lock() 方法中各种锁的区别 #### 一、悲观锁与乐观锁概念解析 **悲观锁**(Pessimistic Lock)与**乐观锁**(Optimistic Lock)是数据库和对象关系映射(ORM)框架中两种重要的锁定机制,主要用于...
首先,`lock` 方法是 Hibernate 提供的一个机制,用于在不同级别的锁定策略之间切换。根据官方文档的注释,`lock` 方法主要有三个功能: 1. **乐观锁检查**:当指定的锁模式为 `LockMode.READ` 时,`lock` 方法会...
本文将深入探讨`Hibernate泛型DAO`的实现及其使用方法。 首先,DAO(Data Access Object)模式是一种设计模式,它的主要作用是封装数据库访问的逻辑,使得业务层与数据访问层解耦。泛型DAO是DAO模式的一种改进,...
在 Hibernate 中,悲观锁的实现方式有多种,例如使用 `LockMode.UPGRADE` 加锁方式,或者使用 `for update` 语句来锁定数据。在查询开始之前加锁,才会真正通过数据库的锁机制加锁处理。 二、乐观锁(Optimistic ...
而泛型DAO(Data Access Object)则是基于Hibernate进一步抽象出来的一个设计模式,用于提供更通用的数据操作方法。本文档主要探讨了如何在Spring+Hibernate环境中创建和使用泛型DAO。 首先,我们来看一下泛型DAO...
例如,使用`session.get()`或`session.createQuery().setLockMode()`方法可以在查询时加锁。`LockMode.UPGRADE`会利用SQL的`for update`子句来实现行级锁定,而`LockMode.UPGRADE_NOWAIT`则是Oracle特有的,用于立即...
Eclipse会根据你的数据库结构生成对应的Java实体类(Bean),以及可能的映射文件(如`.hbm.xml`或使用注解的方式)。 通过以上步骤,你可以在Eclipse中有效地利用HibernateTools快速地创建和更新Java Bean,大大...
此外,通过`merge()`或`lock()`方法可以为已加载的对象绑定新的Session,避免实例化未加载的集合。 3. **集合过滤器**: 有时你可能只需要知道集合的大小或部分内容,而不是全部实例化。可以使用集合过滤器,如`...
在Hibernate中,悲观锁可以通过`Query.setLockMode()`或`Criteria.setLockMode()`方法设置锁模式。例如: ```java String hqlStr = "from TUser as user where user.name='Erica'"; Query query = session....
此属性用于指定 Hibernate 访问实体类属性的方式,默认为通过 getter 和 setter 方法(property)。可以选择字段访问(field),这种方式会直接操作实体类的字段,而不需要调用 getter 和 setter 方法。 #### 2. ...
此外,Hibernate还支持使用JPA的@Lock注解来实现更细粒度的锁控制,如读锁(LockModeType.READ)和写锁(LockModeType.PESSIMISTIC_WRITE)。通过这些机制,开发者可以有效地解决并发环境下的数据一致性问题。 描述...
hibernate框架用于对JDBC的支持
- **何时使用`lock()`**:在需要锁定对象防止并发修改的情况下使用。 综上所述,Hibernate提供了多种保存方式以满足不同的应用场景需求。选择合适的方式不仅能够提高开发效率,还能确保数据的完整性和一致性。在...
**问题描述**:在使用Hibernate执行查询语句时,系统抛出`Nodefaultconstructorforentity`错误。 **可能原因**:该错误通常是由于实体类中缺少无参构造函数导致的。在Java中,如果一个类没有显式地定义任何构造函数...
理解这些状态对于有效地使用 Hibernate 至关重要。 1. **瞬时态(Transient)**: - 瞬时态的对象是刚刚通过 `new` 创建的,它们在内存中独立存在,与数据库没有关联。如果没有任何引用指向这些对象,Java 虚拟机...
在Hibernate中,我们可以使用`setLockMode`方法对查询结果进行加锁,例如设置`LockMode.UPGRADE`,这将使Hibernate在执行SQL时添加`FOR UPDATE`子句,从而实现悲观锁。 接下来是乐观锁(Optimistic Locking)。与...
在Hibernate中,可以通过`Query.setLockMode()`方法来实现悲观锁。例如: ```java String hqlStr = "FROM TUser AS user WHERE user.name = 'Erica'"; Query query = session.createQuery(hqlStr); query.setLock...
### Hibernate入门经典实例详解 #### 实验一:Hibernate开发框架搭建 **实验目的:** ...以上实验覆盖了Hibernate的基本使用和高级特性,通过这些实践,读者可以全面掌握Hibernate的使用方法和技术要点。
2. **LockMode**: Hibernate提供了LockMode类,可以通过Session的`lock()`或`update()`方法,指定LockMode.PESSIMISTIC_WRITE或LockMode.PESSIMISTIC_READ来获取悲观锁。 **乐观锁**(Optimistic Lock)则相对乐观...