【Java事务(三) - 使用ThreadLocal】教程文章相关的互联网学习教程文章

Java架构师之解决分布式事务数据一致性开发与实践分布式事务实现

今天在看书的时候,看到了分布式事务的一致性问题,就赶紧记下来。 一、分布式事务介绍 在我们平时写的代码中,我们可以用一个事务包含许多个SQL调用,如果某一个数据库操作发生异常,就可以将之前的SQL操纵全部进行回滚,只有当所以的SQL操作全部成功,才进行提交,这就保证了事务的一致性。 抠张图看看 但是在分布式环境下,多个数据库操作可能被拆分到独立的三个数据库访问服务中,此时原来的本地SQL调用就演变成了远程服务调...

吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring事务管理接口PlatformTransactionManager、TransactionDefinition和Transactio【代码】【图】

Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。 在 Java EE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。 在 Spring 解压包的 libs 目录中,包含一个名称为 spring-tx-3.2.13.RELEASE.jar 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务...

java-Spring数据如何清除事务方法中的永久实体?【代码】

我需要在休眠状态下使用spring数据接收并保存大量数据.我们的服务器分配的RAM不足,无法同时保留所有实体.我们肯定会得到OutOfMemory错误. 因此,我们需要分批保存数据,这很明显.同样,我们需要使用@Transactional来确保所有数据持久化或非持久化,即使出现单个错误也是如此. 因此,问题是:@Transactional方法期间的spring数据是否将实体存储在RAM中或被刷新的实体可被垃圾收集器访问? 那么,用spring数据处理海量数据的最佳方法是什么...

java-有关事务管理的问题

我正在尝试通过Spring实现业务需求,并且在事务管理方面遇到一些问题. 简单来说,业务需求是1)使用某些条件查询数据库(#1).2)将查询结果写入平面文件.3)将数据库(#1)中的记录更新为“已处理”.4)作为前三个步骤的结果,将记录插入另一个数据库(#2). 我需要这4个步骤才能过关.例如,如果第四步失败,则应回滚第二步中写入平面文件的最后一项.我找到了“ Apache Commons File Resource Manager”来实现文件的回滚机制. 我的导师建议我将Sp...

Java中的多表&事务【代码】

多表查询: 准备sql: 创建部门表 CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'); # 创建员工表 CREATE TABLE emp (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),gender CHAR(1), -- 性别salary DOUBLE, -- 工资join_date DATE, -- 入职日期dept_id INT,FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门...

java-Spring声明式事务和手动调度线程【代码】

我有一个奇怪的问题. 在课堂上,我有:private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();public MyClass(final MyService service) {executor.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {service.foo();}}, 0, 30, TimeUnit.SECONDS); }MyService是一个Spring Bean,其foo方法具有@Transactional. MyClass仅实例化一次(在应用程序中有效地单例) 在第一次调用...

Java-高吞吐量事务处理策略

我的系统对它的工作有严格的“仅一次”的要求.它是一个事件驱动的系统,带有中间件,不能保证一次和一次消息传递(如果怀疑给定的消息是否是重新交付的,它将标记任何给定的消息为“已传递”).本质上,“仅一次”处理就归结为我们核心域对象的状态,即,这是一个相当标准的设置,… >消息到达>执行业务逻辑>状态已更新>生成输出并将其发送到下游系统 3必须最终达到数据库(帐簿和记录),4可以采用多种形式,但是所有形式都是到外部系统的某种消...

java-OpenJPA事务-单个或多个实体管理器?

我有一个DBManager单例,可确保实例化单个EntityManagerFactory.我正在讨论使用单个或多个EntityManager的问题,因为只有单个事务与EntityManager相关联. 我需要使用多个交易. JPA不支持嵌套事务. 所以我的问题是:在大多数在单个数据库环境中使用事务的普通应用程序中,您是否完全使用单个EntityManager?到目前为止,我一直在使用多个EntityManager,但是想看看创建单个EntityManager是否可以达到目的,并且还可以加快速度. 因此,我发现...

java-如何执行Spring LDAP和JPA事务【代码】

我更喜欢使用通过LocalContainerEntityManagerFactoryBean获得的JPA Entitymanager工厂进行持久化.但是,当我想支持spring ldap和JPA之间的事务时,我碰壁了.我的服务层同时调用LDAP dao和JPA dao.春天的ldap具有ContextSourceAndHibernateTransactionManager,它需要sessionFactory而且它没有ContextSourceAndJPATransactionManager当我将ContextSourceAndDataSourceTransactionManager与为LocalContainerEntityManagerFactoryBean配...

java-在新的事务范围内更新对象【代码】

我有一个与事务性边界有关的问题,我无法弄清楚出了什么问题.@Transactional( propagation = Propagation.REQUIRED ) Class A { void methodA() {try {new B().callMethodB(obj)} catch(Exception e) {updateSomeProperty(obj1)} } @Transactional(propagation = Propagation.REQUIRES_NEW) void updateSomeProperty(Object obj1) {obj1.setProperty(1);obj1.save(); }}Class B {public void callMethodB(Object obj) throws...

java-使用AbstractRoutingDataSource切换数据源时共享事务【代码】

使用AbstractRoutingDataSource切换活动数据源时,如何在数据源之间共享事务? 到目前为止,没有事务,查询将在两个数据库上正确执行,但是当我开始事务时,所有事情都在同一个数据库上执行(即,我无法再切换到第二个数据库). 有任何想法吗?@Transactional public void crossDbTransactionTest() {// Selects a datasource from my pool of AbstractRoutingDataSourcesDbConnectionContextHolder.setDbConnectionByYear(2012);// execut...

java-具有容器管理的事务的Singleton-EJB并发性【代码】

我有一个Singleton-EJB,它从数据库中读取具有特定状态的所有对象.然后,我对这些对象进行处理,并将状态设置为其他状态:@Singleton public class MyEJB {@PersistenceContext(unitName = "MyPu")private EntityManager em;@Lock(LockType.WRITE)public void doSomeStuffAndClose() {List<MyObj> objects = getAllOpenObjects();for (MyObj obj : objects) {// do some stuff here...obj.setClosed(true);}}private List<MyObj> getA...

Java通用事务管理

我正在开发一个将服务器存储在Amazon S3上的Java服务器.我需要使用S3进行事务管理,以便如果对外部服务器的操作失败,则必须回滚保存到S3的每个文件. 基本上就像对数据库的事务管理一样,只是在这种情况下,数据源是AWS S3,它也可能是文件系统. 我无法找到现有技术,并且想知道我是否只需要实现它,或者是否已经存在用于此目的的库/技术. 提前谢谢.解决方法:没有任何开箱即用的方式来实现交易管理.因此您可以自行编写逻辑和实现代码. 您相...

java-Spring Hibernate“您不能在托管事务中提交!”【代码】

将我的应用程序从JSF 1.2升级到JSF 2.1之后,尝试登录时出现以下Spring Hibernate异常:DEBUG,[interceptor.ExceptionInterceptor][],org.springframework.transaction.TransactionSystemException: Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: commit failedat org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java...

java-如何从HibernateTransactionManager获取事务状态【代码】

我正在尝试将Spring事务管理器从JtaTransactionManager升级到HibernateTransactionManager.在JTA TransactionManager中,我们有一种提供当前交易状态的方法.根据状态,我们正在执行一些操作.实现如下:private void checkTransactionStatus(TransactionStatus status){if(status instanceof DefaultTransactionStatus) {DefaultTransactionStatus transactionStatus = (DefaultTransactionStatus) status;if(transactionStatus.getTr...