Relational Comparison Predicate dengan HQL
Hai, di materi kali ini saya mau membahas tentang Relational Comparison Predicate dengan menggunakan HQL, berikut adalah operator
Symbol | Keterangan |
---|---|
= |
Melakukan perbandingan dengan nilai yang bernilai sama |
!= |
Melakukan perbandingan dengan nilai yang bernilai tidak sama |
<> |
Melakukan perbandingan dengan nilai yang bernilai tidak sama |
> |
Melakukan perbandingan terhadap 2 variable apakah variable yang satu lebih besar dari variable lainnya |
>= |
Melakukan perbandingna terhadap 2 variable apakah variable yang satu lebih besar atau sama dengan variable lainnya |
< |
Kebalikan dari symbol > yaitu lebih kecil |
<= |
Kebalikan dari symbol >= yaitu lebih kecil atau sama dengan |
Berdasarkan operator tersebut, kita coba masing-masing ya menggunakan berbagai tipe data
- String
- Number
- Date and Time
- Boolean
- Enum
String Operator
Untuk tipe data String, kita bisa menggunakan operator seperti =
, <>
dan !=
contohnya seperti berikut implementasi DAO:
Kemudian berikut adalah implementasi Unit Testing untuk tipe data String:
Dan sebelum kita test methodnya berikut adalah contoh sample datanhya:
Sekarang coba jalankan unit testing, pada method testStringComparison()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:08:49 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.nama_kelas=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonString - data: [KelasEntity(id=3, nama=IF-01, angkatan=2011, programStudi=IF), KelasEntity(id=5, nama=IF-01, angkatan=2012, programStudi=IF), KelasEntity(id=6, nama=IF-01, angkatan=2013, programStudi=IF)]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.nama_kelas=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonString - data: []
Number
Untuk tipe data number, kita bisa menggunakan operator dengan sebagai berikut implementasi DAO:
Berikut adalah implementasi Unit Testing:
Untuk datanya masih sama dengan tipe data string yaitu:
Sekarang coba jalankan unit testing dengan method testEqualNumberComparison()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:12:38 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.tahun_angkatan=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonNumber - data: [KelasEntity(id=2, nama=SI-02, angkatan=2011, programStudi=IF), KelasEntity(id=4, nama=IF-02, angkatan=2011, programStudi=IF), KelasEntity(id=3, nama=IF-01, angkatan=2011, programStudi=IF), KelasEntity(id=1, nama=SI-01, angkatan=2011, programStudi=IF)]
Selanjutnya coba jalankan untuk method testNotEqualNumberComparison()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:13:37 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.tahun_angkatan<>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonNumber - data: [KelasEntity(id=5, nama=IF-01, angkatan=2012, programStudi=IF), KelasEntity(id=6, nama=IF-01, angkatan=2013, programStudi=IF)]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.tahun_angkatan<>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonNumber - data: [KelasEntity(id=5, nama=IF-01, angkatan=2012, programStudi=IF), KelasEntity(id=6, nama=IF-01, angkatan=2013, programStudi=IF)]
dan yang terakhir coba jalankan method testHigherNumberComparison()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:14:40 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.tahun_angkatan>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonNumber - data: [KelasEntity(id=5, nama=IF-01, angkatan=2012, programStudi=IF), KelasEntity(id=6, nama=IF-01, angkatan=2013, programStudi=IF)]
Hibernate:
select
kelasentit0_.id as id1_25_,
kelasentit0_.tahun_angkatan as tahun_an2_25_,
kelasentit0_.nama_kelas as nama_kel3_25_,
kelasentit0_.program_studi as program_4_25_
from
mapping.kelas kelasentit0_
where
kelasentit0_.tahun_angkatan>=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonNumber - data: [KelasEntity(id=2, nama=SI-02, angkatan=2011, programStudi=IF), KelasEntity(id=4, nama=IF-02, angkatan=2011, programStudi=IF), KelasEntity(id=3, nama=IF-01, angkatan=2011, programStudi=IF), KelasEntity(id=1, nama=SI-01, angkatan=2011, programStudi=IF), KelasEntity(id=5, nama=IF-01, angkatan=2012, programStudi=IF), KelasEntity(id=6, nama=IF-01, angkatan=2013, programStudi=IF)]
Enumeration
Untuk tipe data enum, berikut adalah implementasi DAO:
Implementasi Unit Testing:
Dan berikut adalah contoh data yang menggunakan enum:
Sekarang coba jalankan unit testing pada method testEqualEnumeration()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:18:45 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
employeeen0_.employee_id as employee1_6_,
employeeen0_.birth_date as birth_da2_6_,
employeeen0_.employee_name as employee3_6_,
employeeen0_.employee_status as employee4_6_
from
enumeration.employee_ordinal employeeen0_
where
employeeen0_.employee_status=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonEnum - data: [EmployeeEnumOrdinal(id=4, name=Dimas Maryanto, birthDate=1993-03-01, status=LEAVE)]
Date and Time
Untuk tipe data Date & Time, berikut adalah implementasi DAO:
Implementasi Unit Testing:
Sebelum di jalakan berikut adalah data yang saya gunakan,
Kemudian coba jalankan unit testing pada method testEqualDate()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:23:09 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
mahasiswao0_.id as id1_31_,
mahasiswao0_.alamat as alamat6_31_,
mahasiswao0_.nama as nama2_31_,
mahasiswao0_.nim as nim3_31_,
mahasiswao0_.tahun_masuk as tahun_ma4_31_,
mahasiswao0_.tanggal_lahir as tanggal_5_31_
from
mapping.mahasiswa_onetoone mahasiswao0_
where
mahasiswao0_.tanggal_lahir=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonDateAndTime - data: [MahasiswaOneToOneEntity(id=58c440a0-ccb1-4bba-8ff4-b55295f8dd86, nim=10511148, nama=Dimas Maryanto, tanggalLahir=1993-03-01, tahunMasuk=2011), MahasiswaOneToOneEntity(id=test, nim=10511150, nama=Muhamad Yusuf, tanggalLahir=1993-03-01, tahunMasuk=2011)]
Kemudian coba jalankan method testNotEqualDate()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:23:52 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
mahasiswao0_.id as id1_31_,
mahasiswao0_.alamat as alamat6_31_,
mahasiswao0_.nama as nama2_31_,
mahasiswao0_.nim as nim3_31_,
mahasiswao0_.tahun_masuk as tahun_ma4_31_,
mahasiswao0_.tanggal_lahir as tanggal_5_31_
from
mapping.mahasiswa_onetoone mahasiswao0_
where
mahasiswao0_.tanggal_lahir<>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonDateAndTime - data: []
Hibernate:
select
mahasiswao0_.id as id1_31_,
mahasiswao0_.alamat as alamat6_31_,
mahasiswao0_.nama as nama2_31_,
mahasiswao0_.nim as nim3_31_,
mahasiswao0_.tahun_masuk as tahun_ma4_31_,
mahasiswao0_.tanggal_lahir as tanggal_5_31_
from
mapping.mahasiswa_onetoone mahasiswao0_
where
mahasiswao0_.tanggal_lahir<>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonDateAndTime - data: [MahasiswaOneToOneEntity(id=58c440a0-ccb1-4bba-8ff4-b55295f8dd86, nim=10511148, nama=Dimas Maryanto, tanggalLahir=1993-03-01, tahunMasuk=2011), MahasiswaOneToOneEntity(id=test, nim=10511150, nama=Muhamad Yusuf, tanggalLahir=1993-03-01, tahunMasuk=2011)]
dan yang terakhir kita coba method testHigherDate()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:24:59 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
mahasiswao0_.id as id1_31_,
mahasiswao0_.alamat as alamat6_31_,
mahasiswao0_.nama as nama2_31_,
mahasiswao0_.nim as nim3_31_,
mahasiswao0_.tahun_masuk as tahun_ma4_31_,
mahasiswao0_.tanggal_lahir as tanggal_5_31_
from
mapping.mahasiswa_onetoone mahasiswao0_
where
mahasiswao0_.tanggal_lahir>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonDateAndTime - data: []
Hibernate:
select
mahasiswao0_.id as id1_31_,
mahasiswao0_.alamat as alamat6_31_,
mahasiswao0_.nama as nama2_31_,
mahasiswao0_.nim as nim3_31_,
mahasiswao0_.tahun_masuk as tahun_ma4_31_,
mahasiswao0_.tanggal_lahir as tanggal_5_31_
from
mapping.mahasiswa_onetoone mahasiswao0_
where
mahasiswao0_.tanggal_lahir>=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelationalComparisonDateAndTime - data: [MahasiswaOneToOneEntity(id=58c440a0-ccb1-4bba-8ff4-b55295f8dd86, nim=10511148, nama=Dimas Maryanto, tanggalLahir=1993-03-01, tahunMasuk=2011), MahasiswaOneToOneEntity(id=test, nim=10511150, nama=Muhamad Yusuf, tanggalLahir=1993-03-01, tahunMasuk=2011)]
Boolean
Untuk tipe data boolean, berikut adalah implementasi DAO:
Implementasi Unit testing:
sebelum kita coba berikut adalah data yang saya gunakan:
Setelah itu coba jalankan unit testing pada method testBoolean()
, maka hasilnya seperti berikut:
Jan 25, 2021 1:29:09 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
select
mobilsingl0_.id as id2_9_,
mobilsingl0_.cc as cc3_9_,
mobilsingl0_.jumlah_cylinder as jumlah_c4_9_,
mobilsingl0_.jumlah_roda as jumlah_r5_9_,
mobilsingl0_.nama as nama6_9_,
mobilsingl0_.nama_pabrikan as nama_pab7_9_,
mobilsingl0_.is_all_wheel_drive as is_all_w8_9_,
mobilsingl0_.jumlah_kursi as jumlah_k9_9_
from
inherintance.kendaraan_singletable mobilsingl0_
where
mobilsingl0_.DTYPE='MobilSingleTableEntity'
and mobilsingl0_.is_all_wheel_drive=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelataionComparisonBoolean - data: [MobilSingleTableEntity(super=KendaraanSingleTableEntity(id=a010edcd-e33c-4e4e-b33e-75df8e3f1f31, nama=Honda BRIO, jumlahRoda=4, jumlahCylinder=4, cc=1000, namaPabrikan=PT. Honda Motor Company), jumlahKursi=4, allWheelDrive=false)]
Hibernate:
select
mobilsingl0_.id as id2_9_,
mobilsingl0_.cc as cc3_9_,
mobilsingl0_.jumlah_cylinder as jumlah_c4_9_,
mobilsingl0_.jumlah_roda as jumlah_r5_9_,
mobilsingl0_.nama as nama6_9_,
mobilsingl0_.nama_pabrikan as nama_pab7_9_,
mobilsingl0_.is_all_wheel_drive as is_all_w8_9_,
mobilsingl0_.jumlah_kursi as jumlah_k9_9_
from
inherintance.kendaraan_singletable mobilsingl0_
where
mobilsingl0_.DTYPE='MobilSingleTableEntity'
and mobilsingl0_.is_all_wheel_drive=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelataionComparisonBoolean - data: []
Hibernate:
select
mobilsingl0_.id as id2_9_,
mobilsingl0_.cc as cc3_9_,
mobilsingl0_.jumlah_cylinder as jumlah_c4_9_,
mobilsingl0_.jumlah_roda as jumlah_r5_9_,
mobilsingl0_.nama as nama6_9_,
mobilsingl0_.nama_pabrikan as nama_pab7_9_,
mobilsingl0_.is_all_wheel_drive as is_all_w8_9_,
mobilsingl0_.jumlah_kursi as jumlah_k9_9_
from
inherintance.kendaraan_singletable mobilsingl0_
where
mobilsingl0_.DTYPE='MobilSingleTableEntity'
and mobilsingl0_.is_all_wheel_drive<>?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLRelataionComparisonBoolean - data: [MobilSingleTableEntity(super=KendaraanSingleTableEntity(id=a010edcd-e33c-4e4e-b33e-75df8e3f1f31, nama=Honda BRIO, jumlahRoda=4, jumlahCylinder=4, cc=1000, namaPabrikan=PT. Honda Motor Company), jumlahKursi=4, allWheelDrive=false)]
Yuk simak juga videonya,
Dan jika temen-temen belajar hal baru kali ini jangan lupa buat Like, Subcribe, dan Share ke temen kalian. Terimakasih!!!