簡體   English   中英

SQL Server 2008上的JDBC,休眠和隱式事務

[英]JDBC, Hibernate and Implicit Transactions on SQL Server 2008

當從Hibernate發出的,在Glassfish實例上運行的連接在SQL Server 2008上'stuck' ,我們遇到了一些問題。

有時,將有10到20個對存儲過程的調用,這些調用全都在'sleeping' ,並且正在打開許多事務。

當我使用DBCC INPUTBUFFER查找有關它們的更多信息時,它具有:

名稱:implicit_transaction

這是否意味着Java應用程序將'SET IMPLICIT_TRANSACTIONS ON'為批處理的一部分? 我能夠在事務名稱數據庫端使用這個語法的唯一方法是使用該語法。

看來Java應用程序已掛在連接上,但是以某種方式丟失了調用本身的上下文,因此它永遠不會回來提交事務。

Java開發人員說,他們沒有明確定義任何連接,也沒有故意設置其他任何連接屬性。 這些調用全部在READ COMMITTED隔離級別下進行。

如何確定是否存在一些隱藏的屬性集,或者某些休眠設置是否導致了這種令人討厭的行為?

您可以要求Hibernate記錄正在執行的sql語句。

本文介紹了兩種方法。

SessionFactory sf = new Configuration()
    .setProperty("hibernate.show_sql", "true")
    // ...
    .buildSessionFactory();

或在log4j配置中

log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER
log4j.additivity.org.hibernate.SQL=false

暫無
暫無

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

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