org.hibernate.dialect.MySQL5InnoDBDialect update true false thread jdbc:mysql:///user root 123456 com.mysql.jdbc.Driver
UserTest.java
package com.xiaohao.test; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration; public class UserTest { public static void main(String[] args) { Configuration conf=new Configuration().configure(); SessionFactory sf=conf.buildSessionFactory(); Session session=sf.getCurrentSession(); Transaction tx=session.beginTransaction();// User user=new User("张三","英雄");// session.save(user);// session.createSQLQuery("insert into user(userName,password) value('李四','123')")// .executeUpdate(); User user=(User) session.get(User.class, 1); user.setUserName("221");// session.save(user); System.out.println("恭喜您,用户的数据插入成功了哦~~"); tx.commit(); } }
每次对 TUser 进行更新的时候,我们可以发现,数据库中的 version 都在递增。
订票系统案例,某航班只有一张机票,假定有1w个人打开你的网站来订票,问你如何解决并发问题(可扩展到任何高并发网站要考虑
建议使用的是对象锁或者是乐观锁,不建议使用悲观锁,
使用对象所的好处就是当没有抢到锁的时候,可以及时的反馈,锁定失败,
使用乐观锁的好处就是,每个人都有锁定的机会,谁最先完成信息的前些,谁的网速最快,谁将购票成功,减少了对象锁中,当票被锁定之后,由于信息填写时间过长而导致的票重新进入不被锁定状态,节约了时间,但是这种操作带来的后果可能会降低客户的体验度,已经填写了大量信息后发现票已近出售。