Hibernate征途(八)之锁
锁是在开发中常见的一个问题,锁住的数据可以保证访问的排他性,可以说只要当同一个资源有可能被同时访问时,就应当考虑到锁的问题。Hibernate中锁有两种:悲观锁和乐观锁。
悲观锁悲观锁的意思是,对数据访问、修改可能出现的问题持悲观的态度,所以要防范于最初的未然:在数据的整个访问过程中都将数据锁定。悲观锁的实现,依靠数据库提供的锁机制,因为在数据一旦被访问就被锁定,所以可以保证实现真正的访问排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据。
最常见的方式为:
乐观锁机制避免了长事务中的数据库加锁开销,大大提升了大并发量下的系统整体性能表现;但因为乐观锁机制往往与系统的数据存储逻辑有关系,例如其他系统对数据的同时修改,可能会将脏数据存入数据库。
总结二者的使用要根据实际情况,悲观锁和乐观锁就先说到这里。