Spring Transaction(1)

1. What is transaction?


This is the definition from wiki :

transaction symbolizes a unit of work performed within a database management system (or similar system) against a database, and treated in a coherent and reliable way independent of other transactions. A transaction generally represents any change in a database. Transactions in a database environment have two main purposes:

  1. To provide reliable units of work that allow correct recovery from failures and keep a database consistent even in cases of system failure, when execution stops (completely or partially) and many operations upon a database remain uncompleted, with unclear status.
  2. To provide isolation between programs accessing a database concurrently. If this isolation is not provided, the programs' outcomes are possibly erroneous.

A database transaction, by definition, must be atomicconsistentisolated and durable.[1] Database practitioners often refer to these properties of database transactions using the acronym ACID.

Transactions provide an "all-or-nothing" proposition, stating that each work-unit performed in a databasemust either complete in its entirety or have no effect whatsoever. Further, the system mustisolate each transaction from other transactions, results must conform to existing constraints in the database, and transactions that complete successfully must get written to durable storage.


From my perspective, it is an all-or-nothing and isolated unit of work performed within a database management system against a database.


2. Three important interfaces in transaction

  •  PlatformTransactionManager

Method Summary

All Methods Instance Methods Abstract Methods
Modifier and Type Method and Description
void commit(TransactionStatus status)
Commit the given transaction, with regard to its status.
TransactionStatus getTransaction(TransactionDefinition definition)
Return a currently active transaction or create a new one, according to the specified propagation behavior.
void rollback(TransactionStatus status)
Perform a rollback of the given transaction.

  • TransactionDefinition

  • Field Summary

    Fields
    Modifier and Type Field and Description
    static int ISOLATION_DEFAULT
    Use the default isolation level of the underlying datastore.
    static int ISOLATION_READ_COMMITTED
    Indicates that dirty reads are prevented; non-repeatable reads and phantom reads can occur.
    static int ISOLATION_READ_UNCOMMITTED
    Indicates that dirty reads, non-repeatable reads and phantom reads can occur.
    static int ISOLATION_REPEATABLE_READ
    Indicates that dirty reads and non-repeatable reads are prevented; phantom reads can occur.
    static int ISOLATION_SERIALIZABLE
    Indicates that dirty reads, non-repeatable reads and phantom reads are prevented.
    static int PROPAGATION_MANDATORY
    Support a current transaction; throw an exception if no current transaction exists.
    static int PROPAGATION_NESTED
    Execute within a nested transaction if a current transaction exists, behave like  PROPAGATION_REQUIRED else.
    static int PROPAGATION_NEVER
    Do not support a current transaction; throw an exception if a current transaction exists.
    static int PROPAGATION_NOT_SUPPORTED
    Do not support a current transaction; rather always execute non-transactionally.
    static int PROPAGATION_REQUIRED
    Support a current transaction; create a new one if none exists.
    static int PROPAGATION_REQUIRES_NEW
    Create a new transaction, suspending the current transaction if one exists.
    static int PROPAGATION_SUPPORTS
    Support a current transaction; execute non-transactionally if none exists.
    static int TIMEOUT_DEFAULT
    Use the default timeout of the underlying transaction system, or none if timeouts are not supported.

  • TransactionStatus

Method Summary

All Methods Instance Methods Abstract Methods
Modifier and Type Method and Description
void flush()
Flush the underlying session to the datastore, if applicable: for example, all affected Hibernate/JPA sessions.
boolean hasSavepoint()
Return whether this transaction internally carries a savepoint, that is, has been created as nested transaction based on a savepoint.
boolean isCompleted()
Return whether this transaction is completed, that is, whether it has already been committed or rolled back.
boolean isNewTransaction()
Return whether the present transaction is new (else participating in an existing transaction, or potentially not running in an actual transaction in the first place).
boolean isRollbackOnly()
Return whether the transaction has been marked as rollback-only (either by the application or by the transaction infrastructure).
void setRollbackOnly()
Set the transaction rollback-only.

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值