Рубрики
Без рубрики

Пример атрибута гибернации – динамического обновления

– Спящий режим – пример атрибута динамического обновления

Что такое динамическое обновление

Атрибут динамического обновления указывает Hibernate, следует ли включать неизмененные свойства в инструкцию SQL UPDATE.

Пример динамического обновления

1.

Значение по умолчанию для dynamic-update равно false, что означает включить неизмененные свойства в инструкцию Hibernate SQL update.

Например, получите объект и попробуйте изменить его значение и обновить его.

   Query q = session.createQuery("from StockTransaction where tranId = :tranId ");
   q.setParameter("tranId", 11);
   StockTransaction stockTran = (StockTransaction)q.list().get(0);
      
   stockTran.setVolume(4000000L);
   session.update(stockTran);

Hibernate создаст следующую инструкцию SQL update.

Hibernate: 
    update
        mkyong.stock_transaction 
    set
        DATE=?,
        PRICE_CHANGE=?,
        PRICE_CLOSE=?,
        PRICE_OPEN=?,
        STOCK_ID=?,
        VOLUME=? 
    where
        TRAN_ID=?

Режим гибернации обновит все неизмененные столбцы.

2.

Если для параметра dynamic-insert установлено значение true, это означает исключить неизмененные свойства в инструкции Hibernate SQL update.

Например, получите объект и попробуйте изменить его значение и обновить его снова.

   Query q = session.createQuery("from StockTransaction where tranId = :tranId ");
   q.setParameter("tranId", 11);
   StockTransaction stockTran = (StockTransaction)q.list().get(0);
      
   stockTran.setVolume(4000000L);
   session.update(stockTran);

Hibernate создаст другую инструкцию SQL обновления.

Hibernate: 
    update
        mkyong.stock_transaction 
    set
        VOLUME=? 
    where
        TRAN_ID=?

Режим гибернации обновит только измененные столбцы.

Как его настроить

Вы можете настроить свойства ” динамическое обновление ” с помощью аннотации или файла сопоставления XML.

1. Аннотация

@Entity
@Table(name = "stock_transaction", catalog = "mkyong")
@org.hibernate.annotations.Entity(
		dynamicUpdate = true
)
public class StockTransaction implements java.io.Serializable {

2. Сопоставление XML


        
            
            
        

Вывод

Эта небольшая настройка ” динамическое обновление ” определенно повысит производительность вашей системы, и настоятельно рекомендуется это сделать.

Следовать за

1. Спящий режим – атрибут динамической вставки пример

Оригинал: “https://mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/”