Java - Lombok
Pendahuluan
Lombok adalah library java yang biasa digunakan untuk memudahkan kita dalam membuat class POJO (Plain Old Java Object).
Dengan hanya menambahkan anotasi @Data, @Getter, @Setter, dll, maka kita tidak perlu menambahkan method-method POJO secara manual.
Misalnya untuk membuat :
- Setter, yaitu method di dalam class Java untuk memberikan value ke sebuah attribut dari sebuah objek.
- Getter, yaitu method di dalam class Java untuk mendapatkan value ke sebuah attribut dari sebuah objek.
- Constructor, yaitu method di dalam class Java untuk menginisiasi sebuah objek.
- fungsi equals(), hashCode(), dan toString()
Kita bisa mencontohkan sebuah POJO yang biasa kita buat sbb :
1import java.util.Objects;
2
3public class ClassA {
4
5 private String attribute1;
6 private int attribute2;
7 private Integer attribute3;
8
9 public ClassA() {
10 super();
11 }
12
13 public String getAttribute1() {
14 return attribute1;
15 }
16
17 public void setAttribute1(String attribute1) {
18 this.attribute1 = attribute1;
19 }
20
21 public int getAttribute2() {
22 return attribute2;
23 }
24
25 public void setAttribute2(int attribute2) {
26 this.attribute2 = attribute2;
27 }
28
29 public Integer getAttribute3() {
30 return attribute3;
31 }
32
33 public void setAttribute3(Integer attribute3) {
34 this.attribute3 = attribute3;
35 }
36
37 @Override
38 public int hashCode() {
39 return Objects.hash(attribute1, attribute2, attribute3);
40 }
41
42 @Override
43 public boolean equals(Object obj) {
44 if (this == obj) {
45 return true;
46 }
47 if (!(obj instanceof ClassA)) {
48 return false;
49 }
50 ClassA other = (ClassA) obj;
51 return Objects.equals(attribute1, other.attribute1) && attribute2 == other.attribute2
52 && Objects.equals(attribute3, other.attribute3);
53 }
54
55 @Override
56 public String toString() {
57 return "ClassA [attribute1=" + attribute1 + ", attribute2=" + attribute2 + ", attribute3=" + attribute3 + "]";
58 }
59}
Di classA diatas, terlalu banyak boilerplate code yang harus kita generate.
Hal yang kita lakukan berulang-ulang. Menggenerate Getter, Setter, ToSting, HashCode, dan Equals.
Tidak sulit sebenarnya, karena biasanya sudah ada menu di IDE kita untuk generate codenya.
Akan tetapi pekerjaan yang repetitive.
Di beberapa bahasa pemrograman lain seperti groovy, sudah otomatis dibuatkan getter dan setter seperti diatas.
Di bahasa pemrograman Java, kita masih perlu membuat secara manual.
Tetapi dengan bantuan library Lombok ini, maka secara otomatis bisa membantu kita.
Tanpa perlu generate method-method umum di POJO, dan code/class kita menjadi lebih singkat.
Misalnya untuk memodifikasi classA diatas agar menggunakan fasilitas Lombok, kita tambahkan anotasi Data dari Lombok.
1import lombok.Data;
2
3@Data
4public class ClassA {
5
6 private String attribute1;
7 private int attribute2;
8 private Integer attribute3;
9}
Maka, kedua snippet code classAdi atas adalah sama isinya setelah dicompile lagi.
Anotasi Data dari Lombok secara otomatis akan membuat method-method umum untuk sebuah class POJO java diatas.
Oh, tentu saja, kita harus menambahkan library Lombok di pom.xml atau di dependency file tipe yang lain.
Agar anotasi @Data dan anotasi lain dari Lombok bisa dikenali.
Misalnya untuk maven, sbb :
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>