如何使用spring动态跟踪数据库变化?

2024-02-26

我在用spring,spring-data,spring-cronjobs and java-mail。我需要立即扫描表中的更改my-sql数据库并向管理员发送有关更改的邮件。

为了实现这一目标,我所做的就是运行一个 cronjob 来扫描表中的所有更改,但这是一个繁重的过程,因为该表与货币交易相关,并且消耗大量资源,导致应用程序变得太慢。

那么,是否有更好的过程可以跟踪数据库中的当前更改。例如,如果有任何方法可以在春季设置观察者以触发数据库更改过程,那将会很有帮助。

以下是我正在扫描的表实体的示例。

/** Import statements **/

@Entity
public class UserWalletTransaction {

    @Id
    @GeneratedValue
    private Long Id;
    private String toAccount;
    @ManyToOne(fetch = FetchType.LAZY)
    User user;
    @ManyToOne(fetch = FetchType.LAZY)
    Wallet wallet;
    private String senderOrMobile;
    private String benificiaryName;
    private String beniMobile;
    private Double transferAmount;
    private Double sTax;
    private Double charge;
    private Double netAmount;
    private String apiTId;
    private String apiComment;
    private String agentId;
    private Double apiSTax;
    private Double apiCharge;
    private Double apiNetAmount;
    private Double apiBalanceAmount;
    private String transactionMode;
    private String bankName;
    private String userTrackId;
    private String referenceNumber;
    private String operatorDescription;
    private String mobileNumber;
    private String rechargeDateTime;
    private String operatorTransactionId;
    private String hermesPnr;
    private String utId;
    private String status;
    private Double previousAmount;
    private Double balanceAmount;
    private Double amountTransacted;
    private String transactionType;
    private boolean isRaised;
    private boolean isRefunded;
    @Column(name = "created_by")
    private String createdBy;
    @Column(name = "created_date")
    private Date createdDate;
    @Column(name = "updated_by")
    private String updatedBy;
    @Column(name = "updated_date")
    private Date updatedDate;
    private String operationPerformed;
    @OneToOne
    private UserWalletTransaction relationalTransaction;
    private String errorComments;
    @OneToOne
    private User debitUser;
    @OneToOne
    private User creditUser;
    @OneToOne
    private ServiceProvider serviceProvider;
    @OneToOne   
    private RefundRequest refundRequests;

    ..... Getters and setters......
}

以下是我用来在扫描数据库后触发邮件的示例 cron 作业。

/** Import statements **/
@Component
@EnableScheduling
public class ValidateCron {
    @Autowired
    RechargeService rechargeService;
     @Scheduled(fixedDelay = 2)
     public void demoServiceMethod() {
        // Perform tasks related to scan and track the number of records added //after the previous scan. Fire a mail if any change in the database is found. 
     }
}

请分享我可以提高此功能性能的任何方法。提前致谢。


Hibernate 有一个拦截器机制,允许您在发生数据库事件时在特定时间收到通知。

此类事件是会话的创建/删除/刷新。当您访问受给定事件影响的对象时,您可以在修改给定类的给定对象(您可以轻松地将其映射到模式中的表)时触发进程。

javadoc 可以在这里找到:https://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/events.html https://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/events.html

除了您的用例之外,我曾经在基于 Oracle 的分区模式中使用过拦截器。这个想法是使用技术日期对我们的一些表进行分区,挑战是给定树中的所有对象具有相同的“分区日期”(如果我们在插入时使用 SYSDATE,没有什么可以阻止对象树的一部分在第 N 天有一个分区日期,而树的其余部分在第 N+1 天......这在其他一些级别上是令人担忧的)。然后,使用拦截器在插入时沿着对象树传播相同的日期。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用spring动态跟踪数据库变化? 的相关文章

  • HAProxy SSL终止+客户端证书验证+curl/java客户端

    我希望使用我自己的自签名证书在 HAProxy 上进行 SSL 终止 并使用我创建的客户端证书验证客户端访问 我通过以下方式创建服务器 也是 CA 证书 openssl genrsa out ca key 1024 openssl req
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • 删除优先级队列的尾部元素

    如何删除优先级队列的尾部元素 我正在尝试使用优先级队列实现波束搜索 一旦优先级队列已满 我想删除最后一个元素 优先级最低的元素 Thanks 没有简单的方法 将元素从原始元素复制到新元素 最后一个除外 PriorityQueue remov
  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 为什么 MOVE CURSOR 在 OS X Mountain Lion 上不显示?

    我正在做一个项目 想看看 Swing 提供的每个光标是什么样子的 public class Test public static void main String args JFrame frame new JFrame frame set
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • 数据库 - 为什么不区分大小写?

    我看到一两个线程在全球范围内讨论区分大小写 但我的问题更具体 例如 我理解对文本值不区分大小写的搜索的兴趣 但为什么我们要使用不区分大小写的数据库名称 表和列呢 难道不会导致错误吗 使用数据库的脚本语言都是区分大小写的 因此 例如 如果我们
  • MS Graph Java SDK:如何将大文件上传到 OneDrive?

    我正在尝试从 Java 应用程序将文件上传到 OneDrive 但我不了解流程 也没有在 SKD 中看到任何用于文件上传的文档或方法 我发现的唯一流程是 driveClient me drive root createUploadSessi
  • 如何获取 DShellFolderViewEvents 的方法签名

    我试图沉沦DShellFolderViewEvents使用 ATL 我能够成功订阅的唯一方法是DISPID SELECTIONCHANGED 标题中似乎列出了许多其他事件shdispid h 但我无法让他们开火 不确定我做错了什么 可能与
  • Blogger Javascript 在帖子 > 500 上出现 JSON 错误

    我想向我的博主展示随机帖子 我从谷歌搜索得到了一个 javascript 并尝试了它 但是随机帖子的数量不正确 应该是 10 但有时是 4 有时是 2 等等 我尝试检查发生了什么 发现 json feed entry 500 抛出错误 这是
  • 为什么Restlet无法注册JSON转换器?

    我在这里束手无策 似乎从来没有遇到过这个问题 我发现设置快速 HelloWorld 应用程序以确保 Restlet 2 0 启动并运行相对容易 然而 我面临着一个我以前从未遇到过的奇怪异常 我的类路径和 WEB INF lib 文件夹中都有
  • g++:错误:libgomp.spec:没有这样的文件或目录

    我使用 g GCC 4 7 2 在 Windows 7 64 位版本上 下载自http nuwen net mingw html http nuwen net mingw html 我尝试使用 fopenmp 标志并收到错误 g 错误 li
  • Swagger/Swashbuckle 列出可接受的值?

    我已在 Web API 应用程序上成功实现了 Swashbuckle Swagger 但对输出并不满意 我的 Web api 方法之一 企业事件日志记录工具 接受复杂对象值的 JSON 对象 问题在于 当存在可以使用的可接受值的选定列表时
  • 在 Windows 上监听“使用我的 Java 应用程序打开文件”事件

    标题很混乱 但不知道如何用几句话来解释 我有一个读取 example 文件的 java 应用程序 我还添加了一个文件关联 感谢install4j因此 当用户双击任何扩展名为 example 的文件时 我的应用程序就会启动 看来 instal
  • 在 Python 脚本中以 Windows 上的不同用户(非管理员)身份运行程序

    使用以下代码 class ImpersonateWin32Sec object def init self domain username password self username username self password pass
  • 在 Vaadin 7 Web 应用程序中获取用户的 IP 地址和其他客户端信息

    In Vaadin https www Vaadin com 7 如何获得IP地址 http en wikipedia org wiki IP address用户的计算机 设备 我可以获得有关客户的其他信息吗 Vaadin WebBrows
  • Laravel - AppServiceProvider 未被调用

    我尝试在 Laravel AppServiceProvider 中绑定一些服务 但服务没有绑定 我认为 AppServiceProvider 甚至没有被调用 事实上 我做了一个新的并且有效 所以我的问题是 我做错了什么吗 或者 AppSer
  • 不带 FROM 子句的 SELECT

    我正在为我的 MS Access 数据库编写一条 SQL 语句 目的是对 3 个不同查询的值进行计数 所以我尝试了以下方法 SELECT query1 query2 query3 AS Qtd 每个查询从聚合函数计数中返回一个唯一值 即qu
  • 将小提琴图与箱线图相结合

    我有一个非常简单的数据集 2 组 每组 n 15 使用 ggplot2 我可以轻松绘制两组的小提琴图或箱线图 但是 我想绘制小提琴图 但填充阴影对应于我的数据的 3 个四分位数 有一个用SAS做的例子here http blogs sas
  • 使用 okHttp3 上传动态数量的文件

    如何管理动态数量的文件的上传OkHttp http square github io okhttp v3 我已经用旧版本的 OkHttp 实现了compile com squareup okhttp okhttp 2 6 0 类 Form
  • C - 为什么在进行指针算术时转换为 uintptr_t vs char*

    我正在开发一个程序 我必须修改目标进程内存 读取它 到目前为止 我使用 void 来存储地址 如果需要更改它们 请将它们转换为 char 一般添加偏移量或修改 我听说过 stdint h 中定义的该类型 但我没有看到使用它进行指针算术与 c
  • 类中的java构造函数不能应用于给定类型

    我有 2 个子类 员工 学生 他们属于超类 Person 这是我的老师给出的代码 任务 public class Person private String name private int yearOfBirth Create a per
  • 我可以用 git 拆分已经拆分的块吗?

    I ve recently discovered git s patch option to the add command and I must say it really is a fantastic feature I also di
  • 具有变化对象的 Java instanceof

    我需要一个方法 我可以传递一个参数 我假设该参数是一个类 但不确定 并且在该方法中 instanceof 将用于检查 x 是否是传递的类的实例 我该怎么做 我尝试了一些方法 但没有成功 这个怎么样 public boolean checke
  • 超立方体错误:警告。分辨率 0 dpi 无效。使用 70 代替

    Error was reported when running tesseract on a image image attached tesseract rsa out jpg stdout Warning Invalid resolut
  • 如何使用spring动态跟踪数据库变化?

    我在用spring spring data spring cronjobs and java mail 我需要立即扫描表中的更改my sql数据库并向管理员发送有关更改的邮件 为了实现这一目标 我所做的就是运行一个 cronjob 来扫描表