Men-setup Querydsl Di Eclipse


Untuk membuat kode program dengan memakai Querydsl, saya harus membuat class khusus berdasarkan domain class yang ada.  Misalnya, untuk class User, harus dibuat class QUser.  Untungnya, saya tidak perlu melakukan ini secara manual karena Querydsl akan memakai APT (Annotation Processing Tool) untuk menghasilkan class tersebut otomatis.

Bicara soal menghasilkan kode program secara otomatis, saya teringat seorang teman yang sedang membuat tesis dengan memakai framework PHP Symfony.  Ia mengetikkan sebuah perintah di command line untuk menghasilkan presentation layer secara otomatis berdasarkan domain object model.  Agar mudah mencari perintah yang dibutuhkan suatu saat nanti, ia mencatat semua command line yang dibutuhkan dalam notepad.  Jika domain object model-nya berubah suatu saat nanti, ia akan memberikan perintah update.  Ia tidak ingin melakukan otomatisasi dan mencari IDE yang mendukung Symfony.  Sebagai perbandingan, di Java, Apache Maven adalah sebuah “tool” serupa (membuat struktur proyek, menghapus folder output, menjalankan proyek, dsb)  yang didukung oleh kebanyakan IDE populer seperti Eclipse dan NetBeans.

Querydsl APT akan mencari annotation @Entity untuk setiap class yang ada, dan bila menemukannya, akan membuat class metada untuk query nanti.  Berbeda dengan teman saya, saya menginginkan sebuah kenyamanan penuh.   Saya ingin semuanya dilakukan secara otomatis setiap kali domain class saya berubah.  Dan saya ingin bisa langsung memakai class yang dihasilkan pada saat itu juga.  Bagaimana caranya?

Saya akan memakai STS 3.1.0 yang berbasiskan Eclipse 4.2.1.  Langkah pertama yang saya lakukan adalah memastikan bahwa Eclipse dijalankan oleh JDK bukan JRE.  Untuk itu, saya mengubah file STS.ini di folder instalasi STS.  Bila memakai Eclipse biasa, maka nama file konfigurasinya adalah Eclipse.ini.  Saya  menambahkan  baris berikut ini pada file konfigurasi tersebut:

-vm
C:\Progra~1\Java\jdk1.7.0_09\bin\javaw.exe

Saya perlu menyesuaikan lokasi direktori di atas dengan lokasi instalasi JDK yang ada di komputer.  Setelah melakukan perubahan file konfigurasi Eclipse, saya segera menjalankan Eclipse.

Langkah berikutnya adalah men-install connector m2e-apt untuk m2e (m2e adalah plugin Eclipse yang berinteraksi dengan Apache Maven).  Caranya adalah memilih Window, Preferences.  Kemudian saya memilih Maven, Discovery.  Klik pada tombol Open Catalog.  Saya memastikan bahwa saya sedang terkoneksi ke internet karena Eclipse akan men-download catalog URL. Pada daftar catalog yang muncul, beri tanda centang pada m2e-apt dan klik tombol Finish seperti yang terlihat pada gambar berikut ini:

Menambahkan m2e-apt di Eclipse

Menambahkan m2e-apt di Eclipse

Lanjutkan proses instalasi dengan mengikuti wizard yang ada.  Setelah selesai, restart Eclipse.  Bila muncul pesan kesalahan seperti berikut ini:

You need to run build with JDK or have tools.jar on the classpath.  If this occures during eclipse build make sure you run eclipse under JDK as well (com.mysema.maven:apt-maven-plugin:1.0.6:process:default:generate-sources)

Pastikan bahwa Eclipse telah dijalankan melalui JDK bukan JRE.

m2e-apt akan memungkinkan Eclipse untuk mengenali kode program yang dihasilkan secara dinamis.  Untuk mengaktifkannya, saya kembali memilih menu Window, Preferences.   Pada menu Maven, kini terdapat submenu baru yaitu Annotation Processing.   Saya akan memilih Experimental: Delegate Annotation Processing to maven plugins (for maven-processor-plugin only) dan men-klik tombol OK, seperti pada gambar berikut ini:

Mengaktifkan m2e-apt

Mengaktifkan m2e-apt

Sekarang, saya akan menyertakan dependency Querydsl pada Maven di proyek saya.  Caranya adalah dengan mendouble klik file pom.xml, kemudian memilih tab Dependencies.  Lalu klik tombol Add, untuk menambahkan dependency berikut ini:

  1. group-id: com.mysema.querydsl;  artifact-id: querydsl-apt;  version:  2.8.1; classifier: jpa; scope: provided
  2. group-id: com.mysema.querydsl;  artifact-id: querydsl-jpa;  version: 2.8.1
  3. group-id: org.slf4j;  artifact-id: slf4j-api; version: 1.6.6

Yang akan melakukan annotation processing adalah artifact querydsl-apt.  Karena saya memakai JPA sebagai persistence layer, maka saya memastikan bahwa classifier yang dipakai adalah jpa.  Artifact versi generik (tanpa classifier) tidak akan bekerja sama dengan apt-m2e.

Langkah berikutnya adalah saya perlu memberi tahu Maven, tepatnya apt2-me2, untuk mengerjakan querydsl-apt setiap kali proyek saya di-compile.  Untuk itu, saya akan membuka tab pom.xml sehingga saya dapat mengedit file pom.xml secara langsung. Saya menambahkan bagian berikut ini:

<build>
  <plugins>
    <plugin>
      <groupId>org.bsc.maven</groupId>
      <artifactId>maven-processor-plugin</artifactId>
      <version>2.0.5</version>
      <executions>
        <execution>
          <goals>
            <goal>process</goal>
          </goals>
          <configuration>
            <outputDirectory>target/generated-sources/java</outputDirectory>
            <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
          </configuration>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>com.mysema.maven</groupId>
          <artifactId>apt-maven-plugin</artifactId>
          <version>1.0.6</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

Yang saya lakukan di atas adalah mendefinisikan plugin maven-processor-plugin yang akan mengerjakan apt-maven-plugin (lihat di bagian <execution> dan <dependency>).   m2e-apt akan mengetahui apa saja yang generated source yang harus disertakan sebagai bagian dari proyek berdasarkan definisi di atas.

Setelah itu, saya men-klik kanan nama proyek, memilih Maven, Update Project… untuk memperbaharui Maven.  Saya tidak lupa memastikan komputer sedang terkoneksi ke internet karena Maven mungkin perlu men-download beberapa file yang dibutuhkan.

Setelah proses update selesai, akan ada sebuah folder baru yang berisi source Java, yaitu target/generated-sources/java.  Folder ini berisi file yang dihasilkan oleh Querydsl APT berdasarkan domain class yang ada.  Setiap kali saya melakukan perubahan pada domain class, isi dari folder ini juga akan diperbaharui secara otomatis.   Gambar berikut ini memperlihatkan struktur proyek Eclipse saya:

Struktur proyek setelah m2e-apt aktif

Struktur proyek setelah m2e-apt aktif

Perihal Solid Snake
I'm nothing...

One Response to Men-setup Querydsl Di Eclipse

  1. Ping-balik: Memakai Querydsl Dengan Spring Data JPA « The Solid Snake

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: