Lombokで劇的にコードを短縮!

 

 

Lombokとは?

LombokはJava向けのアノテーションベースライブラリです。冗長で繰り返しの多いコード(getter/setter、toString、equals、hashCodeなど)を削減し、コードの可読性を劇的に向上させることができます。

驚愕の事実

通常90行必要なコードが、Lombokを使えばたった9行で書けます!

90行

従来の書き方

9行

Lombok使用時

90%

コード削減率

実際のコード比較

従来の書き方(90行)

public class ReviewRegistFormWithoutLombok {
    private Integer restaurantId;
    private String userId;
    private java.sql.Date visitDate;
    private Integer rating;
    private String comment;
    
    // デフォルトコンストラクタ
    public ReviewRegistFormWithoutLombok() {
    }
    
    // getter メソッド(5個)
    public Integer getRestaurantId() {
        return restaurantId;
    }
    
    public String getUserId() {
        return userId;
    }
    
    public java.sql.Date getVisitDate() {
        return visitDate;
    }
    
    public Integer getRating() {
        return rating;
    }
    
    public String getComment() {
        return comment;
    }
    
    // setter メソッド(5個)
    public void setRestaurantId(Integer restaurantId) {
        this.restaurantId = restaurantId;
    }
    
    public void setUserId(String userId) {
        this.userId = userId;
    }
    
    public void setVisitDate(java.sql.Date visitDate) {
        this.visitDate = visitDate;
    }
    
    public void setRating(Integer rating) {
        this.rating = rating;
    }
    
    public void setComment(String comment) {
        this.comment = comment;
    }
    
    // toString, equals, hashCode メソッドも必要...
    // (さらに30行程度続く)
}

Lombok使用時(9行)

import lombok.Data;

@Data
public class ReviewRegistFormWithLombok {
    private Integer restaurantId;
    private String userId;
    private java.sql.Date visitDate;
    private Integer rating;
    private String comment;
}

Lombokのメリット

  • コード量の大幅削減 – 90%以上のコード削減が可能
  • 可読性の向上 – 本質的な部分だけに集中できる
  • 保守性の向上 – フィールド追加時の修正忘れが防げる
  • 開発効率アップ – IDE(Eclipse等)での自動生成が不要
  • バグの削減 – 定型的なコードの記述ミスがなくなる

主要なアノテーション

@Data

getter、setter、toString、equals、hashCodeを一括生成

@Getter

全フィールドのgetterメソッドを生成

@Setter

全フィールドのsetterメソッドを生成

@ToString

toStringメソッドを自動生成

@NoArgsConstructor

引数なしコンストラクタを生成

@AllArgsConstructor

全フィールドを引数に取るコンストラクタを生成

Spring Bootでの使用方法

1. 依存関係の追加

Spring Initializrでプロジェクト作成時に
「Lombok」にチェックを入れる

または、pom.xmlに以下を追加:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2. フォームクラスの作成

package com.example.demo.form;

import lombok.Data;
import java.sql.Date;

@Data
public class ReviewRegistForm {
    private Integer restaurantId;  // 店舗ID
    private String userId;         // 利用者ID
    private Date visitDate;        // 来店日
    private Integer rating;        // 評価(1-5)
    private String comment;        // コメント
}

3. コントローラーでの使用

@Controller
public class ReviewController {
    
    @PostMapping("/regist/review")
    public String registReview(@ModelAttribute ReviewRegistForm form) {
        // フォームオブジェクトに自動でリクエストパラメータが設定される
        System.out.println(form.toString());
        
        // 自動的にモデルにも格納される(属性名:reviewRegistForm)
        return "confirm-regist-review";
    }
}

実際のフォーム処理の流れ

  1. HTMLフォームでname属性をフィールド名に合わせる
  2. POSTリクエストでデータを送信
  3. Spring MVCが自動的にフォームオブジェクトにバインド
  4. @ModelAttributeでモデルにも自動格納
  5. テンプレートでモデルのデータを表示

まとめ

Lombokを使うことで、Spring Bootでのフォームクラス作成が劇的に簡単になります。
コード量の削減、可読性の向上、保守性の向上など、多くのメリットがあります。
ぜひあなたのプロジェクトでも活用してみてください!

参考動画

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


最近のコメント