JavaRush /Java Blog /Random-TK /Bahar gorkunç däl, gysgaça: Lombok

Bahar gorkunç däl, gysgaça: Lombok

Toparda çap edildi
Makalalaryň sikliniň mazmuny Wikipediadan azajyk: Lombok (Indoneziýadan Lombok - “çili burç”) Malaý arhipelagynda, Indoneziýanyň bir bölegi bolan Kiçi Sunda adalarynyň toparynda ýerleşýär. Lombok, Java programmirleme dili üçin meşhur kitaphana berlen at. Adyň saýlanylmagy Lombok adasynyň Javaawa adasyndan beýle uzakda däldigi, şeýle hem, "çili burç" adynyň manysy bilen baglanyşyklydyr, sebäbi kitaphanada peýdaly "tagam" berilýär. dili. Muny has gowy aýdyp bilmersiňiz we sözleriň ulanylyşy näme, geliň ony herekete göreliň: Plagini guruň. Pom faýlyň <baglylyk> blokyna garaşlylyk goşuň:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
Ine, gidýäris: Öňki makaladan taslamany açyň ,FruitEntity” synpyny açyň .
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 +
            '}';
}
Biraz uzyn, şeýlemi? Lombokdan @Data düşündirişini klasa goşalyň we koduň nädip gysgalýandygyny göreliň.
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 будет сгенирован Ломбоком
Taslamany işlediň, hemme zadyň işleýändigini barlaň. Indi “Lombok” -y ulanyp, garaşlylygy nädip sanjyp boljakdygyny göreliň. Mysal hökmünde “FruitService” synpyny açalyň , @RequiredArgsConstructor-y klasa dakyň we konstruktory synpdan aýyralyň, indi bize gerek däl.
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);
    }
Indi “InitiateUtils” synpynda gereksiz kodlardan dynmak üçin şol bir usuly ulanyň. Hemme zadyň işleýändigini barlaň. Bu taslama durmuşa geçirilende, ýene birnäçe täze Lombok belliklerini ulanýarys. UPD: Denis Rýabçikowdan gowy teswir "Bir gurama üçin @Data ulanmazlyk, ony @Setter we @Getter bilen çalyşmak has gowudyr, sebäbi @Data hemString () we hashCode () -ni ýok edýär we problemalar ýüze çykyp biler guramanyň kolleksiýalary we beýleki guramalar bilen gatnaşyklary boljak bolsa hash kody. " Aslynda, bularyň hemmesi, ine, Lombokda bir makala , düşündirişleriň beýanyna serediň: @Data, @Value, @RequiredArgsConstructor we @Builder. Bu makalada @ Accessors hakda okaň , makala iňlis dilinde, ýöne sahypa terjimeçisi ony gowy dolandyryp biler, manysyna düşünip bilersiňiz. Indiki makalada maglumat bazasyny doldurmagy dowam etdireris.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION