0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Lombok]Lombokを使ってコーディング量を減らそう

Last updated at Posted at 2021-06-19

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)が追加されています。
Lombok.PNG

本当に自動作成してくれているか実際に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もちゃんと動作してくれるのでとても便利です。コーディング量が減ってとても便利ですがカプセル化の概念を軽視したクラスになっているので使いどころに注意が必要そうです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?