This chapter covers:
- Integrating with transaction managers
- Managing transactions programmatically
- Using declarative transactions
- Describing transactions using annotations
we must ensure that the integrity of the data is maintained by performing the updates within a transaction