JavaRush /مدونة جافا /Random-AR /الربيع ليس مخيفًا، باختصار: لومبوك
Павел
مستوى

الربيع ليس مخيفًا، باختصار: لومبوك

نشرت في المجموعة
محتويات دورة المقالات القليل من ويكيبيديا: لومبوك (لومبوك من الإندونيسية - "الفلفل الحار") هي جزيرة في أرخبيل الملايو، ضمن مجموعة جزر سوندا الصغرى، وهي جزء من إندونيسيا. Lombok هو الاسم الذي يطلق على مكتبة شعبية للغة برمجة جافا. يرجع اختيار الاسم إلى حقيقة أن جزيرة لومبوك ليست بعيدة جدًا عن جزيرة جاوة، وأيضًا، على ما يبدو، بمعنى اسمها "الفلفل الحار"، حيث توفر المكتبة "توابل" مفيدة لغة. لا يمكنك قول ذلك بشكل أفضل، وما فائدة الكلمات، دعنا نرى ذلك على أرض الواقع: قم بتثبيت البرنامج الإضافي. أضف تبعية إلى كتلة <dependeency> لملف 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 будет сгенирован Ломбоком
تشغيل المشروع، والتأكد من أن كل شيء يعمل. الآن دعونا نرى كيف يمكنك إدخال تبعية باستخدام لومبوك. لنفتح فئة 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. تأكد من أن كل شيء يعمل. مع تقدم هذا المشروع، نستخدم العديد من التعليقات التوضيحية الجديدة في لومبوك. محدث: تعليق جيد من 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