Lombokでエンティティ作成を効率化
Javaでエンティティを作成するときにGetter、Setterを大量に書くことがあります。このような場合はLombokのアノテーションを指定すればGetter、Setterを書かなくても良くなるのでコーディング量の削減と作業の効率化ができます。
Lombokとは?
「Lombok」はアノテーションによるコード自動生成を行うライブラリ・ツールです。
コンストラクタやGetterなどの書き方が決まっていて何度も書かなければいけないコードをアノテーションの指定だけで自動生成してくれます。
例えばユーザー情報を保持するエンティティの場合は、privateで必要なメンバ変数を作成するだけでOKです。
@lombok.Setter
@lombok.Getter
@lombok.EqualsAndHashCode
@lombok.ToString
public class User {
private String account;
private String kanjiName;
private String kanaName;
private java.sql.Timestamp createDate;
}
上記のアノテーションの効果は、@lombok.DataだけでもOKです。
@lombok.Data
public class User {
private String account;
private String kanjiName;
private String kanaName;
private java.sql.Timestamp createDate;
}
EqualsやToStringの自動実装はとても助かります。
実際にどのようなメソッドが追加されたのかは、Eclipseのアウトラインで確認することができます。
実際のコードはprivateのメンバ変数だけに対して、アウトラインは getAccount()やsetAccount(String)が追加されています。
本当に自動作成してくれているか実際にGetter、Setterを使うコーディングをして確認します。以下はJUnitを使って toString と equals が正しく実装されているか確認したコードです。
@Test
void testLombok() {
User user1 = new User();
user1.setAccount("account");
user1.setKanaName("kana");
System.out.println(user1);
User user2 = new User();
user2.setAccount("account");
user2.setKanaName("kana");
System.out.println(user2);
System.out.println(user1.equals(user2));
}
equalsやtoStringもちゃんと動作してくれるのでとても便利です。コーディング量が減ってとても便利ですがカプセル化の概念を軽視したクラスになっているので使いどころに注意が必要そうです。