如何从本地jdbc事务升级到全局事务

问题描述

之前项目只是用一个数据库。id都是用hibernate自增方式,1、2、3这样的int类型。但是后来因为业务的增加,采用了两个数据库分布在不同的服务器上、为了保证id的唯一,要采用全局事务了,想采用hibernate的UUID,但是这样该表的话,变化太大了,维护量太多。大家有什么好的办法吗?

解决方案

一般而言数据库建表时int不明确说明的话应该是4字节int,最大值2的32次方,4294967295,42亿,如果你确定或者预见再未来的可接受的N年内你们每个库的记录不会超过20亿,那就让一个从0自增,另一个库从20亿开始自增,根本不用管什么全局事务。
解决方案二:
ID 这个东西.. 要么 uuid 要么使用标识区分 比如 BJ01_XXXXXXXX 按照你们的实际去划分这个层次关系 最后容易汇总信息 还容易查询

时间: 2024-09-19 20:36:26

如何从本地jdbc事务升级到全局事务的相关文章

Java中JDBC事务与JTA分布式事务总结与区别_java

Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理.在JDBC中,

java 连接异常-java 启动jdbc 事务报错 嵌套异常

问题描述 java 启动jdbc 事务报错 嵌套异常 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC

JDBC事务级别,请大家多了解了解

JDBC事务级别 为了解决与"多个线程请求相同数据"相关的问题,事务之间用锁相互隔开.多数主流的数据库支持不同类型的锁:因此,JDBC API 支持不同类型的事务,它们由 Connection 对象指派或确定.在 JDBC API 中可以获得下列事务级别: TRANSACTION_NONE 说明不支持事务. TRANSACTION_READ_UNCOMMITTED 说明在提交前一个事务可以看到另一个事务的变化.这样脏读.不可重复的读和虚读都是允许的. TRANSACTION_READ_

浅谈如何结合JDBC事务与Spring+Hibernate

问题:客户在其数据库操作过程中需要调用我们的工作流接口,这样就需要将我们的工作流操作与他 们的业 务操作置于同一个事务中.我们的服务采用的都是spring的声明式事务,而客户采用的是对 connection进行事务处理. 如何保证JDBC事务的一致性? 想到的解决方案一:使用jta事务,用tomcat+jotm提供事务管理器.为什么一开始就想到要使用jta事 务??实际上我们和客户都是使用的同一个数据库,为了方便,各自使用了不同的数据库连接方式,使用 jta的话确实有bt的意思在里面.但是事实上

JDBC事务编程模型备忘

在Spring一统天下的情况下,JDBC快没有生存余地了.不过JDBC还是Java操作数据库的基础,现在Java项目中JDBC的应用快绝迹了,有必要对JDBC的事务编程模型做个象征性的总结. 下面是示例,保证代码可以编译,但不保证能运行,呵呵. import java.sql.*; /** * JDBC编程事务控制模型备忘 * * @author : leizhimin,2008-8-21 14:48:42.<p> */ public class JdbcTxText { public sta

CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)

  JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管理.  5.3.1  Spring对事务的支持 事务是一组原子(Atomic)操作的工作单元,以数据库存取的实例来说,就是一组SQL指令,这一组SQL指令必须全部执行成功,若因为某个原因未全

JDBC事务管理及SavePoint示例

默认情况下,当我们创建一个数据库连接时,会运行在自动提交模式(Auto-commit)下.这意味着,任何时候我们执行一条SQL完成之后,事务都会自动提交.所以我们执行的每一条SQL都是一个事务,并且如果正在运行DML或者DDL语句,这些改变会在每一条SQL语句结束的时存入数据库.有时候我们想让一组SQL语句成为事务的一部分,那样我们就可以在所有语句运行成功的时候提交,并且如果出现任何异常,这些语句作为事务的一部分,我们可以选择将其全部回滚. 让我们通过一个简单的示例理解一下,这里使用JDBC的事

深入解析Java中的JDBC事务_java

事务事务是一步或多步组成操作序列组成的逻辑执行单元,这个序列要么全部执行,要么则全部放弃执行.事务的四个特性:原子性(Atomicity).一致性(Consistency).隔离性(IsoIation)和持续性(Durability)原子性(Atomicity):事务应用最小的执行单元,不可再分.是事务中不可再分的最小逻辑执行体. 一致性(Consistency):事务的执行结果,必须使数据库的从一个一致性的状态变到另一个一致性的状态. 隔离线(IsoIation):各个事务的执行互不干扰,任意

JDBC事务难题

问题描述 大牛们 ,,,有一段加了JDBC事务的方法 public boolean updateStuAcc(int stuID, List accL, int schID) { boolean b = true; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql1 = "select * from stuAccounts where stuID!=? and Account=