JavaRush /Java Blog /Random-KO /봄은 무섭지 않습니다. 한마디로: 롬복
Павел
레벨 11

봄은 무섭지 않습니다. 한마디로: 롬복

Random-KO 그룹에 게시되었습니다
기사 주기의 내용 약간의 Wikipedia: 롬복(인도니아어의 롬복 - "고추")은 인도네시아의 일부인 소순다 제도 그룹에 있는 말레이 군도에 있는 섬입니다. Lombok은 널리 사용되는 Java 프로그래밍 언어 라이브러리에 부여된 이름입니다. 이름의 선택은 롬복 섬이 자바 섬에서 그리 멀지 않다는 사실과 도서관이 유용한 "조미료"를 제공하기 때문에 이름이 "고추"라는 의미를 가지고 있기 때문입니다. 언어. 더 잘 말할 수는 없지만 단어의 용도는 무엇입니까? 실제로 확인해 봅시다. 플러그인을 설치하십시오. pom 파일의 <종속성> 블록에 종속성을 추가합니다.
<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