簡體   English   中英

如何在JPA和EJB3中使用JDBC ClientInfo

[英]How to use JDBC ClientInfo with JPA and EJB3

我們正在將基於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()。 如果在攔截器中設置客戶端信息,進行一些更新,然后返回,則在bean(和攔截器)超出范圍之后,可能不會發生flush()和實際的數據庫寫操作。 這個對嗎?

我相信JPA和EntityManagers是連接上的抽象,並且您不能可靠地在連接上設置客戶端信息。 對或錯?

您正在使用哪個JPA提供程序?

EclipseLink支持基於用戶的連接,Oracle代理連接和VPD。 EclipseLink還定義了會話和連接級別事件,這些事件使您可以在JDBC連接上設置配置。

參見http://wiki.eclipse.org/EclipseLink/Examples/JPA/Auditing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM