请教compassTemplate和openSession对事务的影响

问题描述

今天刚学了一下compass。当我把compass的事务由spring的管理的时候,发现如下区别:@TransactionalpublicvoidcreateIndex(Articlearticle){template.create(article);}@TransactionalpublicvoidcreateIndex(Articlearticle){CompassSessionsession=compass.openSession();session.create(article);}如果采用第一个,就可以正常建立索引;如果用第二个,就不能正确建立索引。如果您知道里面的原理,您能说一下吗?谢谢

时间: 2024-07-31 11:18:13

请教compassTemplate和openSession对事务的影响的相关文章

数据库事务浅析

数据库为什么要有事务,因为,事务是数据库区别于文件系统的特性之一.在文件系统中,如果你正在对2个文件进行修改,一个更新成功,另外一个在更新之前系统崩溃了,那么这就会有2个不同步的文件. 数据库中事务的基本作用就是将数据库从一种一致性状态转变为另外一种一致性状态. 数据库事务有4个特征(acid): 1.原子性(atomicity):事务中的所有动作要么都发生,要么都不发生. 2.一致性(consistency):事务将数据库状态从一种一致状态转变为下一种一致状态. 3.隔离性(isolation

什么是事务:维持数据一致性和恢复

1.事务的定义 事务提供了一种将T-SQL语句分组的方法,从而使它们能够被当成一个单元来处理:组中所有语句或都执行,或都不执行. 事务是确保一个或多个SQL语句的集合不被当成单一工作单元处理的机制,SQL Server自动将所有数据修改命令,包括单步改变请求,作为事务处理,缺省时,每个insert.update.delete语句被当成一个事务处理. 2.事务的作用 事务使SQL Server能保证: ·一致性--同时发生的查询或改变请求彼此不冲突,用户不能对正处于改变过程的数据进行查看或操作.

SYBASE的事务

本篇文章描述了数据库事务隔离级对锁的影响,通过对比事务隔离级0和1,理解锁与脏读的关系. 实验内容:分别设置0和1级隔离级,执行两个不同但又有相关的事务.本实验环境如下: 1.有权访问用户数据库(在此是aca_database)和对数据库表有修改和查询权限. 2.数据库中有表auths,包含salary列(数据类型是money),有一定数据量(在此有1万行). 步骤: 1.如在同一台机器,可分别执行两次"SQL Advantage",分别用合法帐号登录,准备各自执行一个事务. 2.在各

Oracle中利用自治事务实现审计功能

在一个事务(外层事务)中可以定义一个或几个自治事务.自治事务可以独立commit,不 对外层事务产生影响,同样外层事务的 rollback 也对自治事务没有影响. 假设现在 有这样一个需求,不能对某个表进行某些操作(如更新),一旦有这类操作,就强制整个回 滚,并且在审计日志中记录该次违规操作.现在的问题是当事务回滚之后,日志中的记录也 会跟着被回滚,这时就可以利用自治事务来防止这个问题. 首先,定义日志表,用于 审计. create table error_logs( id number(10)

SQL Server 中的事务(含义,属性,管理)

含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT.INSERT.UPDATE和DELETE都是隐式事务的一部分.即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行. 事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入.修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引.当取消这些事务操作时,系统自动执行这些操作的反操作,保证系

SQL Server 中的事务

事务的含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT.INSERT.UPDATE和DELETE都是隐式事务的一部分.即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行. 事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入.修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引.当取消这些事务操作时,系统自动执行这些操作的反操作,

Spring的声明式事务管理

在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚.这个例外是unchecked 如果遇到checked意外就不回滚. 如何改变默认规则: 1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class) 2 让unchecked例外不回滚: @Trans

spring事务详解

Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无需要去处理获得连接.关闭连接.事务提交和回滚等这些操作.再也无需要我们在与事务相关的方法中处理大量的try-catch-finally代码.我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性.事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成.我们在进行事

oracle数据库自治事务的学习笔记

oracle自治事务是指的存储过程和函数可以自己处理内部事务不受外部事务的影响,用pragma autonomous_transaction来声明.要创建一个自治事务,必须在匿名块的最高层或者存储过程.函数.数据包或触发器的定义部分中,使用PL/SQL中的PRAGMA AUTONOMOUS_TRANSACTION语句. 以下是使用自治事务的几种情况: (1)Declaring Autonomous Function in Package CREATE OR REPLACE PACKAGE emp