JavaRush /Java Blog /Random-JA /春は怖くない、一言で言えばロンボク島
Павел
レベル 11

春は怖くない、一言で言えばロンボク島

Random-JA グループに公開済み
一連の記事の内容 ウィキペディアの 一部: ロンボク島 (インド語でロンボク語 - 「唐辛子」) は、インドネシアの一部、小スンダ諸島のマレー諸島にある島です。Lombok は、Java プログラミング言語の人気のあるライブラリに与えられた名前です。この名前の選択は、ロンボク島がジャワ島からそれほど遠くないという事実によるものであり、また、明らかにその名前の意味は「唐辛子」であり、図書館は人々に役立つ「調味料」を提供しているためです。言語。これ以上うまく言うことはできません。言葉の使い方は何でしょうか。実際に動作を見てみましょう。 プラグインをインストールしてください。 pom ファイルの <dependency> ブロックに依存関係を追加します。
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
さあ、行きましょう: 前の記事 のプロジェクトを開き、クラス FruitEntityを開きます。
package ru.java.rush.entities;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;

@Entity
@Table(name = "fruit_table")
public class FruitEntity {

    @Id
    @Column(name = "id_fruit")
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    private Integer id;

    @Column(name = "fruit_name")
    private String fruitName;

    @Column(name = "provider_code")
    private Integer providerCode;

//чтобы с классом можно было совершать манипуляции создается
//пустой конструктор, геттеры, сеттеры, конструктор и переопределяется метод toString()

public FruitEntity(){

}


public Integer getId() {
    return id;
}

public FruitEntity setId(Integer id) {
    this.id = id;
    return this;
}

public String getFruitName() {
    return fruitName;
}

public FruitEntity setFruitName(String fruitName) {
    this.fruitName = fruitName;
    return this;
}

public Integer getProviderCode() {
    return providerCode;
}

public FruitEntity setProviderCode(Integer providerCode) {
    this.providerCode = providerCode;
    return this;
}

@Override
public String toString() {
    return "FruitEntity{" +
            "id=" + id +
            ", fruitName='" + fruitName + '\'' +
            ", providerCode=" + providerCode +
            '}';
}
ちょっと長いですね。Lombok の @Data アノテーションをクラスに追加して、コードがどのように短縮されるかを見てみましょう。
package ru.java.rush.entities;

import lombok.Data;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;

@Data//annotation сгенирует при компиляции необходимый code
@Entity
@Table(name = "fruit_table")
public class FruitEntity {

    @Id
    @Column(name = "id_fruit")
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    private Integer id;

    @Column(name = "fruit_name")
    private String fruitName;

    @Column(name = "provider_code")
    private Integer providerCode;

//и все! Весь остальной code будет сгенирован Ломбоком
プロジェクトを実行し、すべてが機能することを確認します。次に、Lombok を使用して依存関係を注入する方法を見てみましょう。例としてクラス FruitServiceを開き、@RequiredArgsConstructor をクラスにアタッチして、クラスからコンストラクターを削除してみましょう。コンストラクターは不要になります。
package ru.java.rush.services;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import ru.java.rush.entities.FruitEntity;
import ru.java.rush.repositories.FruitRepository;

import java.util.List;


@Service
@RequiredArgsConstructor//annotation от Ломбок
public class FruitService {

    private final FruitRepository fruitRepository;

//здесь когда то был конструктор

    public Optional<FruitEntity> getById(Integer id) {
        return fruitRepository.findById(id);
    }

    public void delById(Integer id) {
        fruitRepository.deleteById(id);
    }

    public Boolean exist(Example<? extends FruitEntity> example) {
        return fruitRepository.exists(example);
    }

    public void save(FruitEntity fruitEntity) {
        fruitRepository.save(fruitEntity);
    }

    public List<FruitEntity> getAll() {
        return fruitRepository.findAll();
    }

    public void saveAll(List<FruitEntity> fruits) {
        fruitRepository.saveAll(fruits);
    }
次に、同じメソッドを使用して、InitiateUtils クラス内の不要なコードを削除します。すべてが機能していることを確認してください。このプロジェクトの進行に伴い、さらにいくつかの新しい Lombok アノテーションを使用しています。UPD: Denis Ryabchikov からの良いコメント「エンティティの場合は、@Data を使用せず、@Setter と @Getter に置き換える方が良いです。@Data は toString() と hashCode() もオーバーライドし、エンティティがコレクションや他のエンティティとの関係を持つ場合はハッシュ コード。」原則として、これですべてです。ここにLombok に関する記事があります。アノテーションの説明を見てください: @Data、@Value、@RequiredArgsConstructor、および @Builder。この記事では、 @ Accessors について読んでください。記事は英語ですが、ページ翻訳者がうまく処理でき、意味が理解できます。 次の記事では、データベースへの入力を続けます。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION