Rumah pangkalan data tutorial mysql Hibernate的dynamic-insert和dynamic-update的使用

Hibernate的dynamic-insert和dynamic-update的使用

Jun 07, 2016 pm 05:11 PM
hibernate

Hibernate在初始化的时候,默认按照配置为表预定义insert,delete,update,select(by id)的SQL语句放在session中,其中insert,update

Hibernate在初始化的时候,默认按照配置为表预定义insert,delete,update,select(by id)的SQL语句放在session中,其中insert,update,select操作都是对表的所有字段操作.如果在一个表有很多字段的时候,在做初次inser的时候有比较多的字段为空值,或者经常update某少部分字段,应该在配置文件的元素上将dynamic-insert和dynamic-update设置为true.其默认值都为false.

如有这样一张表:create table hbtest(id int,val1 varchar2(100),val2 varchar2(100));

1,在 dynamic-insert没有设置的时候


            Hbtest tbo = new Hbtest();
            tbo.setId(new Integer(2));
            tbo.setVal1("val1");

            sessionFactory.getCurrentSession().save(tbo);

某些字段为空做insert,hibernate会用全字段的insert sql语句,如下:

insert into HBTEST(VAL1, VAL2,ID) values(?, ?,?)

2,将dynamic-insert设置为true,同样的保存,hibernate会动态生成SQL语句,没有值的字段不会出现在insert语句中.


insert into HBTEST(VAL1, ID) values(?, ?)

3,在 dynamic-update没有设置的时候

            Hbtest tbo = (Hbtest) sessionFactory.getCurrentSession().load(Hbtest.class,new Integer(1));            
            tbo.setVal1("valXX");            
            tx.commit();

只更新部分字段,hibernate仍然对所有字段做更新:

update HBTEST set VAL1=?,VAL2=? where ID=?

4,同样的操作如果把设置为true的话,sql语句只包含更新的字段:update HBTEST set VAL1=? where ID=?

5,Hibernate这种动态SQLupdate的特性是利用在对象从数据库加载到hibernate session的时候保存了一份快照,做更新的时候与这个快照做比较,只更新改动过的值.

所以下面这种情况就会用全部字段进行更新:,不设值的字段会被更新成null.

            Hbtest tbo = new Hbtest();
            tbo.setId(new Integer(1));
            tbo.setVal1("val1ZZZ");
            sessionFactory.getCurrentSession().update(tbo);   
这种情况应该利用Hibernate提供的对SQL的支持,用SQL做更新操作.

linux

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengintegrasikan Hibernate dalam projek SpringBoot Bagaimana untuk mengintegrasikan Hibernate dalam projek SpringBoot May 18, 2023 am 09:49 AM

Mengintegrasikan Hibernate dalam SpringBoot Project Preface Hibernate ialah rangka kerja ORM (Object Relational Mapping) yang popular yang boleh memetakan objek Java ke jadual pangkalan data untuk memudahkan operasi kegigihan. Dalam projek SpringBoot, menyepadukan Hibernate boleh membantu kami melaksanakan operasi pangkalan data dengan lebih mudah Artikel ini akan memperkenalkan cara untuk menyepadukan Hibernate dalam projek SpringBoot dan memberikan contoh yang sepadan. 1.Perkenalkan dependenciesPerkenalkan dependencies berikut dalam fail pom.xml: org.springframework.bootspring-boot-starter-data-jpam

Ralat Java: Ralat Hibernate, Cara Mengendalikan dan Mengelak Ralat Java: Ralat Hibernate, Cara Mengendalikan dan Mengelak Jun 25, 2023 am 09:09 AM

Java ialah bahasa pengaturcaraan berorientasikan objek yang digunakan secara meluas dalam bidang pembangunan perisian. Hibernate ialah rangka kerja kegigihan Java yang popular yang menyediakan cara yang mudah dan cekap untuk mengurus kegigihan objek Java. Walau bagaimanapun, ralat Hibernate sering ditemui semasa proses pembangunan, dan ralat ini boleh menyebabkan atur cara ditamatkan secara tidak normal atau menjadi tidak stabil. Cara mengendalikan dan mengelakkan ralat Hibernate telah menjadi kemahiran yang mesti dikuasai oleh pembangun Java. Artikel ini akan memperkenalkan beberapa Hib biasa

Apakah perbezaan antara hibernate dan mybatis Apakah perbezaan antara hibernate dan mybatis Jan 03, 2024 pm 03:35 PM

Perbezaan antara hibernate dan mybatis: 1. Kaedah pelaksanaan 2. Prestasi 3. Perbandingan pengurusan objek; Pengenalan terperinci: 1. Kaedah pelaksanaan, Hibernate ialah penyelesaian pemetaan objek/hubungan yang lengkap yang memetakan objek ke jadual pangkalan data, manakala MyBatis memerlukan pembangun menulis pernyataan SQL dan ResultMap secara manual 2. Prestasi, Hibernate adalah mungkin dari segi kelajuan pembangunan Lebih cepat daripada MyBatis kerana Hibernate memudahkan lapisan DAO dan sebagainya.

Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate May 27, 2023 pm 05:06 PM

Hibernate satu-ke-banyak dan banyak-ke-banyak Hibernate ialah rangka kerja ORM yang sangat baik yang memudahkan akses data antara aplikasi Java dan pangkalan data hubungan. Dalam Hibernate, kita boleh menggunakan perhubungan satu-ke-banyak dan banyak-ke-banyak untuk mengendalikan model data yang kompleks. Satu-ke-banyak Hibernate Dalam Hibernate, hubungan satu-dengan-banyak bermakna satu kelas entiti sepadan dengan berbilang kelas entiti lain. Sebagai contoh, pesanan boleh sepadan dengan berbilang item pesanan (OrderItem), dan pengguna (Pengguna) boleh sepadan dengan berbilang pesanan (Pesanan). Untuk melaksanakan perhubungan satu-ke-banyak dalam Hibernate, anda perlu menentukan atribut koleksi dalam kelas entiti untuk disimpan

Bagaimana untuk melaksanakan operasi kemas kini sisipan pukal dalam Hibernate? Bagaimana untuk melaksanakan operasi kemas kini sisipan pukal dalam Hibernate? Aug 27, 2023 pm 11:17 PM

Dalam artikel ini, kita akan melihat cara melakukan sisipan/kemas kini pukal dalam Hibernate. Setiap kali kami melaksanakan pernyataan sql, kami melakukannya dengan membuat panggilan rangkaian ke pangkalan data. Sekarang, jika kita perlu memasukkan 10 entri ke dalam jadual pangkalan data, maka kita perlu membuat 10 panggilan rangkaian. Sebaliknya, kami boleh mengoptimumkan panggilan rangkaian dengan menggunakan pemprosesan kelompok. Pemprosesan kelompok membolehkan kami melaksanakan satu set pernyataan SQL dalam satu panggilan rangkaian. Untuk memahami dan melaksanakan perkara ini, mari kita tentukan entiti kita − @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Pemahaman mendalam tentang susunan teknologi rangka kerja Java: terokai rangka kerja Java biasa seperti Spring MVC, Hibernate, MyBatis, dsb. Pemahaman mendalam tentang susunan teknologi rangka kerja Java: terokai rangka kerja Java biasa seperti Spring MVC, Hibernate, MyBatis, dsb. Dec 26, 2023 pm 12:50 PM

Timbunan teknologi rangka kerja Java: Memperkenalkan rangka kerja Java yang biasa digunakan, seperti SpringMVC, Hibernate, MyBatis, dll. Dengan pembangunan Java yang berterusan, semakin banyak rangka kerja telah dibangunkan untuk memudahkan proses pembangunan. Antaranya, SpringMVC, Hibernate, MyBatis, dsb. ialah salah satu rangka kerja yang paling biasa digunakan dalam pembangunan Java. Artikel ini akan memperkenalkan konsep asas dan penggunaan rangka kerja ini untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. Mula-mula, mari perkenalkan Sp

Pengenalan kepada rangka kerja Hibernate dalam bahasa Java Pengenalan kepada rangka kerja Hibernate dalam bahasa Java Jun 10, 2023 am 11:35 AM

Hibernate ialah rangka kerja ORM sumber terbuka yang mengikat pemetaan data antara pangkalan data hubungan dan program Java antara satu sama lain, menjadikannya lebih mudah untuk pembangun mengakses data dalam pangkalan data. Menggunakan rangka kerja Hibernate boleh mengurangkan kerja menulis pernyataan SQL dan meningkatkan kecekapan pembangunan dan kebolehgunaan semula aplikasi. Mari perkenalkan rangka kerja Hibernate dari aspek berikut. 1. Kelebihan rangka kerja Hibernate: pemetaan hubungan objek, menyembunyikan butiran akses pangkalan data, membuat pembangunan

Bagaimanakah cache tahap kedua Hibernate berfungsi? Bagaimanakah cache tahap kedua Hibernate berfungsi? Sep 14, 2023 pm 07:45 PM

Caching membantu mengurangkan panggilan rangkaian pangkalan data apabila melaksanakan pertanyaan. Cache tahap 1 dan pemautan sesi. Ia dilaksanakan secara tersirat. Cache tahap pertama wujud sehingga objek sesi wujud. Setelah objek sesi ditamatkan/ditutup, tidak akan ada objek cache. Cache tahap kedua berfungsi untuk berbilang objek sesi. Ia dikaitkan dengan kilang sesi. Objek cache tahap kedua tersedia untuk semua sesi menggunakan kilang sesi tunggal. Objek cache ini akan ditamatkan apabila kilang sesi tertentu ditutup. Untuk melaksanakan cache tahap kedua kita perlu menambah kebergantungan berikut untuk menggunakan cache tahap kedua. <!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de

See all articles