Object Relational Framework for Java 1 minute read

Hai, di materi kali ini saya mau ngebahas tentang Select Statement dengan menggunakan HQL. OK misalnya disini saya menggunakan entity yang udah pernah saya buat di materi sebelumnya yaitu:

Dan berikut adalah implementasi DAO:

kemudian berikut adalah implementasi Unit Testing:

Sebelum kita coba siapkan dulu datanya contohnya seperti berikut:

select-tables

Setelah itu baru kita coba jalankan method unit testing testFindAll maka hasilnya seperti berikut:

INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        matakuliah0_.id as id1_32_,
        matakuliah0_.nama_kuliah as nama_kul2_32_,
        matakuliah0_.jumlah_sks as jumlah_s3_32_ 
    from
        mapping.matakuliah matakuliah0_
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - data: [MataKuliahEntity(id=79c06b62-e70c-41f3-b42d-3aa63ab8d366, nama=Pemograman Java 1, sks=3), MataKuliahEntity(id=733be4ef-20fb-4d16-bbfe-b4b6c31ee8d3, nama=SKRIPSI, sks=6)]
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - destroy hibernate session!

Kemudian kita coba jalankan method testFindByIdWithIndex, maka hasilnya seperti berikut:

Jan 21, 2021 11:51:39 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
        matakuliah0_.id as id1_32_,
        matakuliah0_.nama_kuliah as nama_kul2_32_,
        matakuliah0_.jumlah_sks as jumlah_s3_32_ 
    from
        mapping.matakuliah matakuliah0_ 
    where
        matakuliah0_.id=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - data: MataKuliahEntity(id=79c06b62-e70c-41f3-b42d-3aa63ab8d366, nama=Pemograman Java 1, sks=3)
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - destroy hibernate session!

Lalu coba jalankan method testFindByNameWithNamedParameter, maka hasilnya seperti berikut:

INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        matakuliah0_.id as id1_32_,
        matakuliah0_.nama_kuliah as nama_kul2_32_,
        matakuliah0_.jumlah_sks as jumlah_s3_32_ 
    from
        mapping.matakuliah matakuliah0_ 
    where
        matakuliah0_.nama_kuliah=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - data: [MataKuliahEntity(id=733be4ef-20fb-4d16-bbfe-b4b6c31ee8d3, nama=SKRIPSI, sks=6)]
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - destroy hibernate session!

Dan yang terakhir, coba jalankan method testFindByNameAndSks, maka hasilnya seperti berikut:

INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate: 
    select
        matakuliah0_.id as id1_32_,
        matakuliah0_.nama_kuliah as nama_kul2_32_,
        matakuliah0_.jumlah_sks as jumlah_s3_32_ 
    from
        mapping.matakuliah matakuliah0_ 
    where
        matakuliah0_.nama_kuliah=? 
        and matakuliah0_.jumlah_sks=?
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - data: [MataKuliahEntity(id=733be4ef-20fb-4d16-bbfe-b4b6c31ee8d3, nama=SKRIPSI, sks=6)]
[main] INFO com.maryanto.dimas.bootcamp.test.query.hql.TestHQLMatakuliahRead - destroy hibernate session!

Summary

HQL Select statement ini, kurang-lebih sama dengan native sql. untuk execute query digantikan dengan method getResultList() untuk multi rows object dan getSingleResult untuk single row object