gpt4 book ai didi

java - 在 Java 连接上执行自动提交时如何收到通知?

转载 作者:行者123 更新时间:2023-11-30 02:27:56 26 4
gpt4 key购买 nike

我正在尝试找出是否有办法注册自动提交事件。

有观察员吗?也许我装饰一个自动提交连接或语句以便收到通知?装饰方法是什么?

我尝试监听Connection.commit(),但在语句执行时并未调用它。

谢谢。阿利克。

最佳答案

自动提交意味着在每个语句执行结束时都有一个隐含的提交。据我所知,没有任何事件可供您监听,并且您不能期望任何人在内部调用 Connection.commit(),因为自动提交发生在 RDBMS 堆栈中的某个位置您正在使用,甚至可能在服务器上使用。

因此,为了向 JDBC 添加自动提交事件,您必须装饰可能导致执行语句的每个函数,并查看执行的 SQL 是否以 UPDATE 开头、 INSERTDELETE 动词。 (基本上,除了 SELECT 之外的任何内容。)

我以前装饰JDBC的方式是这样的:

  1. 复制每个 JDBC 接口(interface),从中创建一个类,为每个方法创建一个具体函数,该函数委托(delegate)对 JDBC 接口(interface)的引用。使用大量的搜索和替换,或者可能使用支持录制和重放宏的编辑器。

  2. 定义您自己的驱动程序,并使用您自己的驱动程序名称(例如“jdbcdeco”)将其注册到 JDBC。

  3. 建立以下约定:驱动程序的连接字符串将为“jdbcdeco:”,后跟要装饰的驱动程序的连接字符串。因此,如果要装饰的连接的连接字符串是 "jdbc:mysql://localhost/test" 则必须指定以下连接字符串: "jdbc:jdbcdeco: mysql://localhost/test"

  4. JDBC 将实例化您的驱动程序,并将其传递给以 "jdbcdeco:" 开头的连接字符串。您去掉 "jdbcdeco:" 部分,剩下另一个连接字符串,您可以使用它再次传递给 JDBC 以创建将要修饰的实际连接。

祝你好运,玩得开心!

关于java - 在 Java 连接上执行自动提交时如何收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45161561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com