JavaRush /Java Blog /Random-TL /Ang tagsibol ay hindi nakakatakot, sa madaling salita: Lo...

Ang tagsibol ay hindi nakakatakot, sa madaling salita: Lombok

Nai-publish sa grupo
NILALAMAN NG CYCLE NG MGA ARTIKULO Kaunting Wikipedia: Ang Lombok (Lombok mula sa Indonian - “chili pepper”) ay isang isla sa Malay Archipelago, sa grupo ng Lesser Sunda Islands, bahagi ng Indonesia. Ang Lombok ay ang pangalan na ibinigay sa isang sikat na aklatan para sa Java programming language. Ang pagpili ng pangalan ay dahil sa ang katunayan na ang isla ng Lombok ay hindi masyadong malayo sa isla ng Java, at gayundin, tila, na may kahulugan ng pangalan nito na "chili pepper", dahil ang library ay nagbibigay ng kapaki-pakinabang na "seasoning" para sa wika. Hindi mo ito masasabi nang mas mahusay, at kung ano ang gamit ng mga salita, tingnan natin ito sa pagkilos: I-install ang plugin. Magdagdag ng dependency sa <dependencies> block ng pom file:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
Narito tayo: Buksan ang proyekto mula sa nakaraang artikulo , buksan ang klase 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 +
            '}';
}
Medyo mahaba, di ba? Idagdag natin ang @Data annotation mula sa Lombok sa klase at tingnan kung paano nito pinaikli ang code.
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 будет сгенирован Ломбоком
Patakbuhin ang proyekto, suriin kung gumagana ang lahat. Ngayon tingnan natin kung paano ka makakapag-inject ng dependency gamit ang Lombok. Buksan natin ang klase FruitService bilang isang halimbawa , ilakip ang @RequiredArgsConstructor sa klase at alisin ang constructor mula sa klase; hindi na natin ito kailangan.
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);
    }
Gumamit ngayon ng parehong paraan upang maalis ang hindi kinakailangang code sa klase ng InitiateUtils. Suriin kung gumagana ang lahat. Habang umuusad ang proyektong ito, gumagamit kami ng ilan pang bagong anotasyon ng Lombok. UPD: Magandang komento mula kay Denis Ryabchikov "Para sa isang entity, mas mabuting huwag gumamit ng @Data, ngunit palitan ito ng @Setter at @Getter, dahil ang @Data ay nag-o-override din saString() at hashCode(), at maaaring magkaroon ng mga problema sa hash code kung ang entity ay magkakaroon ng mga koleksyon at relasyon sa iba pang entity." Sa prinsipyo, iyon lang, narito ang isang artikulo sa Lombok , tingnan ang paglalarawan ng mga anotasyon: @Data, @Value, @RequiredArgsConstructor at @Builder. Sa artikulong ito, basahin ang tungkol sa @ Accessors , ang artikulo ay nasa Ingles, ngunit ang tagasalin ng pahina ay maaaring hawakan ito nang maayos, maaari mong maunawaan ang kahulugan. Sa susunod na artikulo ay patuloy naming punan ang database.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION