Hai pada kesempatan kali ini saya mau membahas tentang Read Only Entity, nah jadi klo kita misalnya pake query kemudian kita set nilai yang baru masih dalam session maka biasanya akan automatic update, contohnya berikut implementasi DAO:

Berikut adalah Unit Testing

Sebagai contoh berikut adalah data yang saya gunakan

select-tables

Dan kemudian coba jalankan unit testing pada method testFindAndUpdatedAuto(), maka hasilnya seperti berikut:

Feb 03, 2021 10:11:28 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        mahasiswae0_.id as id1_2_,
        mahasiswae0_.nama as nama2_2_,
        mahasiswae0_.nim as nim3_2_ 
    from
        collections.mahasiswa_listastype mahasiswae0_ 
    where
        mahasiswae0_.id=?
Hibernate: 
    update
        collections.mahasiswa_listastype 
    set
        nama=?,
        nim=? 
    where
        id=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestReadOnlyEntity - destroy hibernate session!

dan yang terakhir coba jalankan method testFindAndReadOnly(), maka hasilnya seperti berikut:

Feb 03, 2021 10:11:53 AM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        mahasiswae0_.id as id1_2_,
        mahasiswae0_.nama as nama2_2_,
        mahasiswae0_.nim as nim3_2_ 
    from
        collections.mahasiswa_listastype mahasiswae0_ 
    where
        mahasiswae0_.id=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestReadOnlyEntity - destroy hibernate session!

Summary

Nah jadi di sini perbedaanya klo kita menambahkan .setReadOnly(true) maka kita tidak melihat sql update pada log execute unit testingnya.