是否可以拦截所有 DataNucleus 的 JDO SQL 查询?

Jér*_*nge 1 java sql jdo datanucleus intercept

假设有一个可操作的 Java 应用程序使用 DataNucleus 的 JDO 实现来访问数据库,是否有可能拦截对数据库进行的所有 SQL 查询?目的是对它们进行统计并保留日志/跟踪。

The*_*ect 5

您可以通过打开类别 DataNucleus.Datastore.Native 轻松从 DataNucleus 获取所有 SQL 语句的日志(请参阅http://www.datanucleus.org/products/datanucleus/logging.html

JDO2 InstanceLifecycleListeners 将允许您拦截事件,但我认为 SQL 语句在那里不可用......

您还可以查看您的应用服务器以获取 SQL 分析工具。例如,GlassFish 允许您将 SQLTraceListener 实现附加到您的连接池。请参阅http://docs.oracle.com/cd/E18930_01/html/821-2418/giyck.html#giygg