JavaRush /Blog Java /Random-MS /Musim bunga tidak menakutkan, ringkasnya: Lombok

Musim bunga tidak menakutkan, ringkasnya: Lombok

Diterbitkan dalam kumpulan
KANDUNGAN KITARAN ARTIKEL Sedikit Wikipedia: Lombok (Lombok dari bahasa Indonesia - “cili lada”) ialah sebuah pulau di Kepulauan Melayu, dalam kumpulan Kepulauan Sunda Kecil, sebahagian Indonesia. Lombok ialah nama yang diberikan kepada perpustakaan popular untuk bahasa pengaturcaraan Java. Pemilihan nama adalah disebabkan oleh fakta bahawa pulau Lombok tidak begitu jauh dari pulau Jawa, dan juga, nampaknya, dengan makna namanya "lada cili", kerana perpustakaan menyediakan "perasa" yang berguna untuk bahasa. Anda tidak boleh mengatakannya dengan lebih baik, dan apakah kegunaan perkataan, mari lihat tindakannya: Pasang pemalam. Tambah kebergantungan pada blok <dependencies> fail pom:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
Di sini kita pergi: Buka projek dari artikel sebelumnya , buka kelas 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 +
            '}';
}
Agak lama, bukan? Mari tambahkan anotasi @Data dari Lombok ke kelas dan lihat cara ia memendekkan kod.
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 будет сгенирован Ломбоком
Jalankan projek, pastikan semuanya berfungsi. Sekarang mari lihat bagaimana anda boleh menyuntik kebergantungan menggunakan Lombok. Mari buka kelas FruitService sebagai contoh , lampirkan @RequiredArgsConstructor pada kelas dan alih keluar pembina daripada kelas; kita tidak memerlukannya lagi.
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);
    }
Sekarang gunakan kaedah yang sama untuk menyingkirkan kod yang tidak diperlukan dalam kelas InitiateUtils. Semak bahawa semuanya berfungsi. Semasa projek ini berjalan, kami menggunakan beberapa lagi anotasi Lombok baharu. UPD: Komen yang baik daripada Denis Ryabchikov "Untuk entiti, lebih baik tidak menggunakan @Data, tetapi gantikannya dengan @Setter dan @Getter, kerana @Data juga mengatasi toString() dan hashCode(), dan masalah mungkin timbul dengan kod hash jika entiti akan mempunyai koleksi dan hubungan dengan entiti lain." Pada dasarnya, itu sahaja, berikut ialah artikel tentang Lombok , lihat huraian anotasi: @Data, @Value, @RequiredArgsConstructor dan @Builder. Dalam artikel ini , baca tentang @ Accessors , artikel itu dalam bahasa Inggeris, tetapi penterjemah halaman boleh mengendalikannya dengan baik, anda boleh memahami maksudnya. Dalam artikel seterusnya kami akan terus mengisi pangkalan data.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION