JavaRush /وبلاگ جاوا /Random-FA /بهار ترسناک نیست، به طور خلاصه: لومبوک
Павел
مرحله

بهار ترسناک نیست، به طور خلاصه: لومبوک

در گروه منتشر شد
محتویات چرخه مقالات کمی از ویکی پدیا: لومبوک (Lombok از هندی - "فلفل چیلی") جزیره ای در مجمع الجزایر مالایی، در گروه جزایر سوندا کوچک، بخشی از اندونزی است. لومبوک نامی است که به یک کتابخانه محبوب برای زبان برنامه نویسی جاوا داده شده است. انتخاب نام به این دلیل است که جزیره لومبوک چندان با جزیره جاوه فاصله ندارد و همچنین ظاهراً به معنای نام آن "فلفل چیلی" است، زیرا این کتابخانه "ادویه" مفیدی را برای زبان شما نمی توانید آن را بهتر بگویید، و استفاده از کلمات چیست، بیایید آن را در عمل ببینیم: افزونه را نصب کنید. یک وابستگی به بلوک <dependencies> فایل 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 +
            '}';
}
کمی طولانی است، اینطور نیست؟ بیایید حاشیه نویسی @Data را از Lombok به کلاس ضمیمه کنیم و ببینیم چگونه کد را کوتاه می کند.
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