Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HIbernate/Spring监视表中单个记录的更改的最佳方法是什么?_Spring_Hibernate_Watch - Fatal编程技术网

使用HIbernate/Spring监视表中单个记录的更改的最佳方法是什么?

使用HIbernate/Spring监视表中单个记录的更改的最佳方法是什么?,spring,hibernate,watch,Spring,Hibernate,Watch,Q:使用Hibernate/Spring查看记录级别更改的正确方法是什么?数据库是一个典型的关系数据库系统。我们的目的是在将来某个时候转向内存解决方案,但目前还不能Q:我们走的是正确的道路还是有更好的方法?例子 我们考虑了两种可能性。一个是加载和缓存整个表,另一个是实现hibernate事件侦听器。问题是我们对源自当前VM的事件不感兴趣。我们感兴趣的是如果其他人改变了桌子。如果我们加载并缓存整个表,我们仍然需要找到一种有效的方法来知道它何时更改,这样我们就可以同时实现缓存和侦听器。当然,如果侦听

Q:使用Hibernate/Spring查看记录级别更改的正确方法是什么?数据库是一个典型的关系数据库系统。我们的目的是在将来某个时候转向内存解决方案,但目前还不能Q:我们走的是正确的道路还是有更好的方法?例子


我们考虑了两种可能性。一个是加载和缓存整个表,另一个是实现hibernate事件侦听器。问题是我们对源自当前VM的事件不感兴趣。我们感兴趣的是如果其他人改变了桌子。如果我们加载并缓存整个表,我们仍然需要找到一种有效的方法来知道它何时更改,这样我们就可以同时实现缓存和侦听器。当然,如果侦听器没有听到VM外部的更改,它可能不会帮助我们。我们感兴趣的是单个记录,也就是说,如果某个记录发生更改,我们希望Java根据该记录更新其他内容。理想情况下,我们希望避免重新加载整个缓存,假设我们从头开始使用一个,而是在缓存中的特定记录发生更改时更新它们

您考虑过使用数据库触发器吗?这将是立即执行回调的最可靠的方法。是否可以使用数据库触发器启动在数据库外部运行的java进程,而不查看表?当我考虑到这一点时,我想如果有触发器的话,我们可能会看到一个由触发器创建的审计表,但就我所知,无论哪种方式,您都会看到一个表我发现我们有一些审计,但还不够。显然涉及到几个表。这取决于数据库系统的功能。并非所有这些工具都提供触发器功能,也并非所有工具都提供存储过程(数据库函数)功能。存储过程可能需要使用某些特定于供应商的语言(例如Oracle的PL/SQL)编写,包括基本语言功能和基本函数库,例如进行HTTP调用或解析XML文件。有些数据库系统支持用开放语言(如Java)编写的存储过程。即使没有,也可能有其他方法将存储过程调用桥接到外部Java主方法。