簡體   English   中英

Hibernate對數據庫的查詢

[英]Hibernate queries on database

我遇到了hibernate對數據庫進行查詢的問題。 在進行簡單的選擇時,這是我的查詢日志(使用Mysql 5.1)到數據庫:

111125  7:18:30
27 Query    SET autocommit=0
27 Query    SELECT @@session.tx_isolation
27 Query    select this_.id as id34_0_, this_.media_id as media3_34_0_, this_.message as message34_0_, this_.user_id as user4_34_0_ from notifications this_
27 Query    rollback
27 Query    SET autocommit=1

我已經閱讀了很多關於將自動提交設置為0然后再設置為1.我知道連接的默認值是1,並且無法更改此行為。 您可以運行SET autocommit = 0但結果是相同的。

反正有沒有避免任何這些疑問? 我不知道為什么SELECT @@ session.tx_isolation正在發生和回滾。 當我使用事務時,我得到一個提交然后回滾。 不確定為什么回滾始終是有線的。

非常感謝!

我的conf:Spring 2.5.6,Hibernate 3.6.0,Mysql 5.1

datasoure.xml:

<bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />

    <property name="initialSize" value="3" />
    <property name="maxActive" value="20" />
    <property name="minIdle" value="3" />
    <property name="poolPreparedStatements" value="false" />
    <property name="defaultAutoCommit" value="false" />
    <property name="defaultTransactionIsolation" value="4" />
</bean>

事務管理器定義:

<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

更新 :管理通過設置新屬性來取消回滾

<property name="defaultReadOnly" value="true" />

但現在的問題是你不能修改(無論我是否設置事務注釋readOnly = false)給db給出一個SQLException。 此屬性將readonly連接設置為true。 我猜測HibernateTemplate無法做到這一點。

我使用aspectj事務進行內碼編織。

<aop:aspectj-autoproxy proxy-target-class="true" />

您需要為應用程序配置事務。 請參閱有關事務管理Spring 2.5.x文檔

編輯12/3/11:即使對於僅進行選擇的方法,您仍然必須創建只讀事務,以便刪除您在帖子中提到的額外查詢。 只需編寫@Transactional(readOnly = true)就可以了。

編輯12/20/11:您還需要確保正確配置事務。 看起來您發布的配置可能缺少<tx:annotation-driven />注釋。 請參閱Spring文檔的10.5.1節

暫無
暫無

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

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