【Java/Spring】Lombok の基本をやさしく解説

Java入門・実践
スポンサーリンク
スポンサーリンク

はじめに

Java のクラスを書くときに、
「getter / setter が多すぎる」
「コンストラクタを書くのが面倒」
「DTO がボイラープレートだらけになる」

そんな悩みを一気に解決してくれるのが
Lombok(ロンボック)
です。

この記事では、Lombok の基本を
やさしく・実務で役立つ形 で整理していきます。

まずはコードを見て、そこから少しずつ理解していきましょう。

まずはコードを確認

Lombok を使わない場合

Java
public class User {
    private String name;
    private int age;

    public User() {}

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

Lombok を使う場合

Java
@Data
public class User {
    private String name;
    private int age;
}

このように、
アノテーションを付けるだけで大量のコードを自動生成
してくれるのが Lombok の魅力です。

コードのしくみを解説

Lombok とは

一言でいうと、

「Java のボイラープレートコードを自動生成してくれるライブラリ」

です。

  • getter / setter
  • equals / hashCode
  • toString
  • コンストラクタ
  • Builder パターン

などを自動で作ってくれます。

どうして便利なのか

理由はシンプルで、

「書かなくていいコードを書かなくて済む」

からです。

コードが短くなり、 読みやすく、 メンテナンスしやすくなります。

よく使う Lombok アノテーション

@Getter / @Setter

Java
@Getter
@Setter
public class User {
    private String name;
}

getter と setter を自動生成します。

@Data

Java
@Data
public class User {
    private String name;
    private int age;
}

以下をまとめて生成します。

  • getter
  • setter
  • equals
  • hashCode
  • toString

DTO に最適です。

@NoArgsConstructor / @AllArgsConstructor

Java
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

引数なし・全引数ありのコンストラクタを生成します。

@Builder

Java
@Builder
public class User {
    private String name;
    private int age;
}

Builder パターンを自動生成します。

Java
User user = User.builder()
    .name("taro")
    .age(20)
    .build();

読みやすく、変更に強いコードになります。

あわせて知っておきたいポイント

Lombok はコンパイル時にコードを生成する

実際の .java ファイルには書かれませんが、
コンパイル時に自動でメソッドが追加されます。

IDE のプラグインが必要

IntelliJ や VSCode では
Lombok プラグインを入れると補完が効きます。

@Data は便利だが使いすぎ注意

  • equals / hashCode が自動生成される
  • すべてのフィールドに setter が付く

などの理由で、 Entity には @Data を使わないことが多いです。

DTO にはとても相性が良いです。

使うときに気をつけたいこと

Entity に @Data を付けない

予期しない equals / hashCode が生成されるため、
JPA と相性が悪いことがあります。

必要なアノテーションだけ使う

@Data は便利ですが、
@Getter + @Setter のほうが安全な場面もあります。

Builder は不変オブジェクトと相性が良い

setter を使わず、
コンストラクタや Builder で値を固定する設計に向いています。

まとめ

Lombok は、
「Java のボイラープレートコードを自動生成してくれる便利なライブラリ」
です。

  • getter / setter を自動生成
  • コンストラクタや Builder も簡単
  • DTO と相性が良い
  • Entity には慎重に使う

難しく聞こえますが、
「書かなくていいコードを減らすための道具」
と理解できれば十分です。


decopon
decopon

Lombok を使いこなすと、コードが一気にスッキリします。
DTO や設定クラスが読みやすくなり、開発スピードも上がります。
あなたの開発が、今日より少しだけ楽になりますように。

moco
moco

書かなくていいコードをそっと減らしてくれるなんて…Lombok さん、気がきくね。

コメント

タイトルとURLをコピーしました