两个方法

方法一:
public void saveTest() {
try {
System.out.println("saveTest start");
User user = entityDao.get(User.class, 1L);
// User user = entityDao.getTemplate().get(User.class, 1L, LockMode.READ);
System.out.println("saveTest " + user.getMail());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
user.setMail("test@qq.com");
entityDao.getTemplate().saveOrUpdate(user);
System.out.println("saveTest " + user.getMail());
System.out.println("saveTest end");
} catch (Exception e) {
e.printStackTrace();
}
}

方法二:

public void saveTest2() {
try {
System.out.println("saveTest2 start");
User user = entityDao.get(User.class, 1L);
// User user = entityDao.getTemplate().get(User.class, 1L, LockMode.READ);
System.out.println("saveTest2 " + user.getMail());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
user.setMail("test2@qq.com");
entityDao.getTemplate().saveOrUpdate(user);
System.out.println("saveTest2 " + user.getMail());
System.out.println("saveTest2 end");
} catch (Exception e) {
e.printStackTrace();
}

声明式事务的弊端。事务会自动提交。无法有效对不同线程的事务进行阻塞。方法1中先查询出结果,但是保存在后,期间方法二做出查询和保存操作。这样两个线程独立操作互不影响。有个比较奇葩的现象:如果方法一种的查询出的结果和set方法设置的结果一致。那么hibernate不对发送update语句。及时此时数据库的实际数据已经发生变化,对hibernate而言。它并不知道。所以他做出的判断是:如果set前后的值相同,将不会发送sql。

搜集资料时看到有人提出。并发量较高时使用Queue来作为一个缓冲池,集中进行插入更新操作,感觉是个不错的想法。只是如果做了负载均衡呢?

最新文章

  1. cosbench 异常 FreeMarker template error: The following has evaluated to null or missing
  2. java中的数据结构 --- 集合
  3. awk 反过滤不想要的列 和循环列
  4. Debian 上面五分钟搭建 WordPress - 博客/网站平台
  5. BLE Device Monitor
  6. python学习-day11-内建函数
  7. android模拟器(genymotion)+appium+python 框架执行过程中问题解答
  8. WPF 之 TreeView右键选中节点及节点重命名
  9. CentOS6.5安装MySQL及完全卸载
  10. Entity Framework 插入数据 解决主键非自增问题
  11. android-sdk-windows下载版
  12. PHP IOS PUSH Demo
  13. Enum:枚举
  14. USACO 2017 January Platinum
  15. 一些矩阵范数的subgradients
  16. shell测试命令test、[ ]、[[ ]]
  17. Jenkins实现SVN+Maven+Java项目的持续集成
  18. hdoj1257 最少拦截系统
  19. maven3官网下载地址
  20. 马士兵Spring-声明式事务管理-annotation

热门文章

  1. 【网页浏览】关键字搜索PIXIV插图
  2. QT5.1+中文乱码问题
  3. 管理QT的组件
  4. jquery使用ajax实现实时刷新,轮询
  5. java多线程之wait和notify协作,生产者和消费者
  6. js/jquery加入的select value显示不正确问题
  7. P1908 逆序对(归并排序)
  8. Uncaught TypeError: Cannot read property 'addEventListener' of null
  9. layui-form下隐藏元素的验证问题
  10. 微服务监控平台获取网关(zuul)配置列表