gpt4 book ai didi

java - 如何在 JPA 和 EJB3 中使用 JDBC ClientInfo

转载 作者:行者123 更新时间:2023-11-29 06:19:22 25 4
gpt4 key购买 nike

我们正在将基于 JDBC 的应用程序迁移到 JPA 和 EJB3。我们的旧应用程序使用 Connect#setClientInfo API 将当前用户名记录为客户端信息的一部分: http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html#setClientInfo%28java.lang.String,%20java.lang.String%29

我们需要在 EJB3 项目中做类似的事情。如何?

我们可以在 EJB 服务调用周围使用 EJB3 拦截器,以捕获当前用户并将其设置为数据源上的信息。但是,我看到了这个问题。我认为在 JPA flush() 发生时没有保证。如果您在拦截器中设置客户端信息,进行一些更新,然后返回,则 flush() 和实际的数据库写入可能不会发生,直到您的 bean(和拦截器)超出范围之后。它是否正确?

我相信 JPA 和 EntityManagers 是连接的抽象,你不能可靠地设置连接上的客户端信息。对或错?

最佳答案

您使用的是什么 JPA 提供程序?

EclipseLink 支持基于用户的连接、Oracle 代理连接和 VPD。 EclipseLink 还定义了 session 和连接级事件,允许您在 JDBC 连接上设置配置。

看, http://wiki.eclipse.org/EclipseLink/Examples/JPA/Auditing

关于java - 如何在 JPA 和 EJB3 中使用 JDBC ClientInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757669/

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