`
humaniam
  • 浏览: 992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

自定义数据库同步

阅读更多
在做一个功能,需要把Web端数据库里与当前用户相关的数据同步到移动设备端。移动设备端在联网的情况下定时同步数据,在不联网时可查询旧的数据。

解决方案是:
1.假设初始状态Web端数据库为空。用户在录数据过程中,将操作记录到一张日志表中。
2.移动设备端启动线程,定时访问日志表。获取和自己相关的最新改动记录。
3.将这些改动更新到本地的SQLite

使用到技术:
1.用Hibernate Listener记录用户所有的操作。将对关心表的操作记入日志表。日志表包含:操作类型(insert update delete)、操作表名、记录ID和操作人。
2.Hibernate Listener 中没有Servlet,无法获取当前操作人的信息。因此使用ThreadLocal

一些疑问:
1.原打算用aspectJ在Session类做切面,记录数据库操作日志。发现aspectJ在Session做切面的代码不执行。不知道原因,可能和hibernate动态生成代码有关系。



public class HibernateHistoryListener implements PostInsertEventListener,
		PostUpdateEventListener, PostDeleteEventListener {

	static final Class accessClass[] = { DmMenu.class, DmRMenuDish.class,
			DmCategory.class, DmDish.class, DmDishImage.class, DmEvaluate.class };
	public final static ThreadLocal userLocal = new ThreadLocal();

	public void onPostInsert(PostInsertEvent arg) {
		log("insert", arg.getEntity(), arg.getId().toString(), arg.getSession());

	}

	public void onPostUpdate(PostUpdateEvent arg) {
		log("update", arg.getEntity(), arg.getId().toString(), arg.getSession());
	}

	public void onPostDelete(PostDeleteEvent arg) {
		log("delete", arg.getEntity(), arg.getId().toString(), arg.getSession());

	}

	private void log(String method, Object obj, String id, Session session) {

		boolean access = false;
		for (int i = 0; i < accessClass.length; i++) {
			Class array_element = accessClass[i];
			if (obj.getClass().equals(array_element)) {
				access = true;
				break;
			}

		}
		if (!access) {
			return;
		}
		DmOperationLog log = new DmOperationLog();
		log.setOperationName(method);
		log.setOperationTime(new Date());
		log.setRecordId(id);
		log.setTargetName(obj.getClass().toString());
		log.setDmUser((DmUser) userLocal.get());

		Session temp = session.getSessionFactory().openSession();
		Transaction tx = null;
		try {
			tx = temp.beginTransaction();
			temp.save(log);
			tx.commit();
		} catch (Exception e) {
			tx.rollback();
		} finally {
			temp.close();
		}
	}

}

分享到:
评论

相关推荐

    Oralce 自定义数据库同步脚本

    生成SQL之后利用后台服务去获取生成的SQL生成bat文件同步到指定的实例中去。这个方法适用于只两台数据库服务器不能直接通讯的情况下, 献丑了。 注意:需要一个后台服务去支持,我不想浪费大家时间,希望对有需要的...

    WinCC SQL SERVER 数据库实现数据库同步

    即使程序没有实现读写分离,数据库同步之后也能够作为双机热备的方案,此时对数据库同步时间的实施性要求就不高了 4. 实现效果 内网A、B两个Sqlserver数据库服务器 A服务器某库表结构、数据、存储过程、自定义函数...

    跨数据库同步数据

    TJS,全名未给出,可能是“跨数据库同步工具”或者开发者自定义的缩写。它提供了一种方法来实现实时或定期的数据同步,确保多个数据库系统之间的数据保持一致。在实际项目中,这种功能对于那些需要在多个数据库间...

    互联网数据库同步程序 delphi7

    标题“互联网数据库同步程序 Delphi7”涉及到的是一个利用Delphi7编程环境开发的数据库同步解决方案,主要用于在互联网上的两台计算机之间实现SQL Server 2000数据库的数据同步。这个程序的重要性和价值在于它能确保...

    binlog数据库自定义表同步附件

    在本附件中,"binlog数据库自定义表同步附件" 提供了一种基于`mysql-binlog-connector-java`库的binlog事件监听和处理机制,它允许用户自定义自己的表同步和加工逻辑,以适应各种特定需求。 首先,`mysql-binlog-...

    matlab开发-HX711的自定义数据库

    在MATLAB中开发一个针对HX711称重传感器放大器的自定义数据库是一个复杂的任务,涉及到硬件接口、数据采集、信号处理以及数据库管理等多个环节。以下是对这个项目的一些详细解释和相关知识点: 1. **HX711传感器...

    Oracle10G 数据库同步

    Oracle10G数据库同步是IT领域中一个关键的议题,特别是在多数据中心或灾备环境的管理中。Oracle10G是Oracle数据库的一个重要版本,它引入了许多增强功能,旨在提高性能、安全性和可用性。本方案针对Oracle10G数据库...

    Oracle数据库同步技术

    Oracle数据库同步技术是确保数据在多个数据库之间保持一致的重要手段,尤其在分布式系统或灾难恢复策略中发挥着关键作用。Oracle提供了多种内置的数据同步解决方案,包括DataGuard、Streams、Advanced Replication...

    sqlyog 数据库同步工具

    《SQLyog数据库同步工具深度解析》 在IT行业中,数据是企业的生命线,因此保持数据库的一致性和完整性至关重要。SQLyog,作为一款强大的数据库管理工具,以其易用性、高效性和全面的功能赢得了广大用户的青睐,特别...

    android 数据库同步

    在Android开发中,数据库同步是实现应用程序数据持久化和更新的关键技术。数据库通常用于存储用户数据、应用状态或任何需要在应用运行时访问的信息。SQLite是Android系统内置的关系型数据库,它轻量级且易于使用,是...

    数据库同步文件路径

    4. **工具有关**:标签中提到了“源码 工具”,可能是指`data_sync.sh`是一个自定义的脚本,用于自动化数据库同步过程。这类脚本通常包含如数据库连接信息、同步策略(全量/增量)、错误处理等逻辑。`data_sync.sh`...

    Kettle数据库同步源码

    例如,通过对`org.pentaho.di.core.database.Database`类的理解,我们可以自定义数据库连接参数,优化数据读写速度;通过修改`org.pentaho.di.trans.step.StepMetaInterface`和`org.pentaho.di.trans.step....

    基于XML的关系数据库同步技术的研究与实现

    《基于XML的关系数据库同步技术的研究与实现》 在信息技术领域,数据同步是保障多系统间数据一致性和完整性的关键过程。随着互联网和分布式系统的快速发展,关系数据库作为数据存储的主要手段,其同步技术变得尤为...

    Pgsql跨网络数据库增量同步

    1、 跨网络进行增量同步数据,即隔着网闸,网络不能直连,使用dblink、主从库等方案解决不了; 2、 源表跟目标表字段名称可以不一致,但表名称要一致(表名称不一致也可以实现); 3、 自定义增量的控制字段,可以是...

    Oracle 12.2主从数据同步方法

    Oracle 12.2 主从数据同步方法可以实现容器数据库的数据同步,目前只支持 DML 的数据同步,不包含 DDL 的同步。下面将详细介绍 Oracle 12.2 主从数据同步方法的实现步骤。 一、背景 Oracle 12.2 主从数据同步方法...

    数据库结构同步小工具

    总的来说,"数据库结构同步小工具"是一个实用的软件,它利用了关系数据库的原理和SQL Server的功能,通过自定义类库和WPF界面技术实现了跨数据库的结构同步。这有助于简化数据库管理和维护工作,提高效率,同时确保...

    数据库同步工具.rar

    数据库同步是IT领域中一个关键的操作,特别是在多环境(如开发、测试、生产)管理和数据库版本控制中。"Schema Compare"是一款强大的工具,专门用于帮助用户对比和同步两个数据库之间的结构差异。它允许用户识别并...

    otter分布式数据库同步系统 v4.2.18.zip

    《Otter分布式数据库同步系统详解》 Otter是一款开源的分布式数据库同步系统,主要用于实现数据库间的实时数据同步,尤其在大数据环境下,对于实时性要求较高的业务场景,Otter发挥着至关重要的作用。版本v4.2.18是...

    sqlserver与mysql数据库同步

    在IT行业中,数据库同步是一个重要的任务,特别是在多数据库系统共存的情况下。本主题将深入探讨如何实现SQL Server与MySQL数据库之间的数据同步,这对于确保数据一致性、实时性以及跨平台的数据交换具有重大意义。 ...

Global site tag (gtag.js) - Google Analytics