现在任何应用都需要数据持久化。否则就不算是一个完整的应用。那么对于一个数据持久化而言,最重要的无外乎两方面:
- 事务管理(Transaction Management)
- 对象关系映射(Object Relational Mapping)
本文作为JPA(Java Persistence API)这一系列文章的首篇,就来先谈谈事物管理相关的一些概念和基础。
事务(Transaction, TX)
事务管理,事务管理,管理的是事务。那么事务又究竟是个什么呢。
这里尝试用比较好理解的方式来解释一下什么是事务。
我们都知道不管多复杂的代码逻辑最终都是由一行行的代码所组成的。这些代码的执行顺序有先有后,在一个执行单元(如今一般是线程)内部,绝对不可能出现同时执行两个操作的情况,那么当前一个操作出现错误的时候(比如抛出了异常),往往后面的操作就无法执行下去了。如果这两个操作在逻辑上是一个整体,比如我们都知道的银行转帐问题,那么问题就来了。银行转帐粗略可以分为下面两个行为(不考虑查询过程):
- 发起账户的金额减去转账金额
- 目标账户的金额加上转账金额
一个成功的转账操作,上面的两个行为必然都要成功。不会允许行为