Hibernate提供了两种锁机制,悲观锁和乐观锁。
1.悲观锁
其中悲观锁的实现依赖于数据库的锁机制,如果数据库底层没有实现相应的数据排他性,那么就无法实现悲观锁。
加锁模式有:
LockMode.None 不加锁
LockMode.Write
LockMode.Read
以上三种都是在Hibernate内部进行使用的。
LockMode.UPGRADE是利用数据库的select..... for update语句进行加锁的。
LockMode. UPGRADE_NOWAIT :Oracle的特定实现,利用Oracle的for update nowait子句实现加锁
以下是编程实现的语句:
String hql = 'from Tuser as user where user.name='maojiangege'';
Query query = session.createQuery(hql);
query.setLockMode(“user',LockMode.UPGRADE);
List list = query.list();
获取数据 query.setLockMode 对查询语句中特定别名所对
文章转自:http://blog.csdn.net/vastskyjoe/archive/2009/01/07/3729149.aspx
如果 使用HIbernate循环查询某个表的话。他会使用缓存技术,来提高数据库性能。
其思路是:第一次执行某个sql语句,记录下他的参数。第二次执行某个sql语句时候首先拿他的参数表和默认记录的参数表相比较,如果参数表一致,那么hibernate不会重新查询数据库,而是从缓存中读取他的值。因此连续执行某个查询语句的话,如果此时数据库中关于这个表的字段有更新,将不会显示。
附:当两个sql语句完全一样时候,他们的参数表一致。
解决思路:1.使每次执行的查询语句都不一样,但是查询出的结果都一样。
如果要求他强制: 向服务器提交请求,可以,设置页面的属性。最简单的是地址后面加一个无关的随即书
2.因为缓存的生
|
标签:杂谈 |
文章转自:http://luckyapple.javaeye.com/blog/457298
|
标签:杂谈 |
文章转自:http://luckyapple.javaeye.com/blog/457298
|
标签:杂谈 |
import java.util.HashMap;
public class TestDom4jReadExmple {
|
标签:杂谈 |
class ShellSort {
|
标签:杂谈 |
public class MergeSort {
|
标签:杂谈 |
public class HeapOp {
|
标签:杂谈 |
Java
public class QuicklySort {