java相关 求方法 实现数据库数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java相关 求方法 实现数据库数据同步相关的知识,希望对你有一定的参考价值。

2个表 表1 和表2 表结构 字段一模一样
现要求如果表1 发生了修改 删除 添加数据
表2 同样修改删除 添加
问 怎么实现?
请说一个思路 或发相关代码
不使用触发器
现在使用hibernate 表一 list1
表二 list2
怎么写一个循环 让 list1 和 list2中的对象一样

楼主用hibernate 所以说就不需要在手动管理connection的AutoCommit属性了。不用触发器的话,也好办,不过可能麻烦一点。

假设你已经做好了表list1和list2 到对象list1和list2的映射。list1和list2配置成一对一映射,list2的主键也是list1的外键,生成机制由list1负责。级联关系cascade属性设置为all,也就是对list1操作的时候hibernate会级联的操作它的附着物list2

那么在操作对象list1基础DAO中的曾删改查方法中,同时操作list2对象即可。

以增加操作为例:
比如 new出来一个list1对象,然后充填属性:
list1.setName("张三");
list1.setPwd("123456");
list1.getList2.setName(list1.getName());
list1.getList2.setpwd(list1.getPwd());

session.save(list1); //这里当持久化list1的时候,会级联把list2也持久了

提交transaction

关键问题还是配置,比较麻烦 容易出错。我对hibernate不是多了解,想的这个办法可能比较笨,应该还有好的办法来解决。等等高手来看看吧。
参考技术A 事物Transaction。事物是这样的,当你拿到connection之后,就可以将提交属性设为手动提交,就是说,你发出的sql不会马上生效,而是在你手动commit事物时才真正更新数据库,在没有commit之前,你可以随时rollback,回滚你发出的所有sql,比方说异常出现时!!

例如:

connection.setAutoCommit(false);
发sql更新表1;
发sql更新表2;
connection.commit();
//最后别忘了将提交属性复原
connection.setAutoCommit(true);

如果这个过程catch Exception,那就
connection.rollback();//回滚你提交的sql,数据库就没任何更新了
connection.setAutoCommit(true);

当然,你也可以写触发器!!
参考技术B 显示表格
//import java.awt.*;
//import javax.swing.*;
//import java.sql.*;
//import javax.swing.table.*;
String[] colHeads=%%4;
Connection con=null;
Statement stmt=null;
ResultSet %%6=null;
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:"+%%1;
con=DriverManager.getConnection(url,%%2,%%3);
stmt=con.createStatement();
%%6=stmt.executeQuery("SELECT count(*) as au_count from "+%%5);
%%6.next();
int iCount=rs.getInt("au_count");
Object[][] data=new Object[iCount][];
int i=0;
%%6=stmt.executeQuery("SELECT * from "+%%5);
while(%%6.next())
data[i]=new Object[iCount];
data[i][0]=%%6.getString("au_fname");
data[i][1]=%%6.getString("Phone");
data[i][2]=%%6.getString("City");
i++;

JTable table=new JTable(data,colHeads);
JScrollPane jsp=new JScrollPane(table);
getContentPane().add(jsp);
catch(Exception e)
e.printStackTrace();

finally
if(con!=null)
try
%%6.close();
stmt.close();
con.close();
catch (SQLException e)
e.printStackTrace();


参考技术C 最简单的是在表1上写触发器
这个问题已经在百度上问过很多次了,你去搜下吧,周末的也懒写代码了

[java数据库同步]java实现同步数据

Tunnel上传数据如何实现覆盖重写的功能?MaxCompute使用TunnelUpload命令上传数据,如何实现批量上传...SDK详情请参见JavaSDK使用TunnelJavaSDK上传数据,如果是分区表,SDK能够动态根据数据创建不同的分区吗?...

来自:

阿里云

>帮助文档

Phoenix5.x版本基于轻客户端实现,PhoenixConnectionPool.java不能使用,建议使用社区第三方连接池,比如mybatis,可参考链接池demo8.执行创建索引时间太长能否断开...9.创建同步索引表,同步索引数据的速度怎么样?...

来自:

阿里云

>帮助文档

配置了同步数据到MaxCompute后,在MaxCompute中查不到同步过来的数据,如何解决?Shell任务执行时,调度...没有配置Java环境。...同步任务使用公共调度资源时一直在等待状态,您可以通过优化配置实现最大化的同步速度。...

来自:

阿里云

>帮助文档

文档转换是否提供同步API?...转换数据保存到OSS私有桶,预览时使用STS三元组控制...其他格式文件:”pdf”,”lrc”,“c”,“cpp”,“h”,“asm”,“s”,“java”,“asp”,“bat”,...它可以通过阿里云提供的预览引擎...

来自:

阿里云

>帮助文档

3.如使用过程中有更佳体验是现在...新版本无需安全图片,集成更加简单,功能更加强大,也可调到与百川版本完全一样的界面和功能,所有百川上的数据也会同步,如:现在已有语音功能等。...18879java.lang.RuntimeException:...

来自:

阿里云

>帮助文档

包括存在风险云产品信息及云产品...同时自动化快照能力实现一...【Windows系统漏洞检测】同步微软官网补丁源,对高危及有影响的漏洞进行检测和提醒。...应用进程非法操作:检测Java、FTP、Tomcat、Docker容器、Lsass.exe等...

来自:

阿里云

>帮助文档

<

1

>

共有1页

跳转至:

GO

以上是关于java相关 求方法 实现数据库数据同步的主要内容,如果未能解决你的问题,请参考以下文章

[java两个数据库同步]SpringMVC配置双数据源实现一个java项目同时连接两个数据库的方法

java异步方法啥意思

Java多线程并发09——如何实现线程间与线程内数据共享

Java代码实现两个数据库之间的数据同步

[java两个数据库同步]Java代码之JDBC实现数据库之间定时的表格传输(由一个库读取到另一个库)实例

java多线程采集,多线程数据同步的问题。 怎么做同步啊。。