簡體   English   中英

當我在類中更改Object的字段時,Spring / Hibernate會自動更新數據庫

[英]Database automatically update by Spring/Hibernate when I change a field of an Object in a class

我有一個名為VoceMenuUtente的類,其注釋為@Entity,具有2個字段:

  1. Descrizione
  2. TITOLO

我進行選擇以獲取數據庫內部的數據。 在屏幕上打印它們之前,我必須向從數據庫獲取的值中添加一個字符串,所以我要這樣做:

voceMenuUtente.setDescrizione = voceMenuUtente.getDescrizione + "blablabla";

我在名為TransactionPreDAO的類中進行了此操作。 我有該課程的切入點:

<tx:advice id="txAdviceTransactionPreDAO" transaction-manager="transactionManager" >
            <tx:attributes>
                <tx:method name="*"/>
            </tx:attributes>
        </tx:advice>    
        <aop:config>
            <aop:pointcut id="transactionPreDAOTxPointcut" expression="execution(* com.springgestioneerrori.preDAO.TransactionPreDAO.*(..))" />
            <aop:advisor advice-ref="txAdviceTransactionPreDAO" pointcut-ref="transactionPreDAOTxPointcut" />
        </aop:config>

之后,我的數據庫會自動更新,並且在Descrizione字段中我不再具有原始值,但是我具有原始值加“ blablabla”嗎?

為什么會這樣? 我沒有對象VoceMenuUtente任何“更新”方法。 也許這取決於切入點。 我還在學習Spring,所以我可能犯了一些錯誤。

是否取決於我在標記<tx:method name="*"/>錯過了read-only="true"的事實

通過get ,query,條件等從數據庫加載對象后,對象狀態將與持久性上下文相關聯,並且對它的任何更改都將自動傳播到DB。

您不必顯式調用該對象上的update update用於將分離的對象與會話重新連接。 一個以前曾被持久保存但當前未與Hibernate會話關聯的對象。

如果要覆蓋該默認行為,可以調用session.evict(voceMenuUtente) 這將使對象分離(將對象從持久性上下文中逐出)。

暫無
暫無

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

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