JavaRush /จาวาบล็อก /Random-TH /ฤดูใบไม้ผลิไม่ได้น่ากลัว พูดง่ายๆ ก็คือ ลอมบอก
Павел
ระดับ

ฤดูใบไม้ผลิไม่ได้น่ากลัว พูดง่ายๆ ก็คือ ลอมบอก

เผยแพร่ในกลุ่ม
เนื้อหาของวัฏจักรของบทความ วิ กิพีเดียเล็กน้อย: ลอมบอก (ลอมบอกจากภาษาอินโดนีเซีย - “พริก”) เป็นเกาะในหมู่เกาะมาเลย์ ในกลุ่มหมู่เกาะซุนดาน้อย ซึ่งเป็นส่วนหนึ่งของอินโดนีเซีย ลอมบอกเป็นชื่อที่ตั้งให้กับไลบรารียอดนิยมสำหรับภาษาการเขียนโปรแกรมจาวา การเลือกชื่อเกิดจากการที่เกาะลอมบอกอยู่ไม่ไกลจากเกาะชวาและเห็นได้ชัดว่ามีความหมายของชื่อ "พริก" เนื่องจากห้องสมุดมี "เครื่องปรุงรส" ที่เป็นประโยชน์สำหรับ ภาษา. คุณไม่สามารถพูดได้ดีไปกว่านี้แล้ว และอะไรคือการใช้คำ มาดูกันในทางปฏิบัติ: ติดตั้งปลั๊กอิน เพิ่มการพึ่งพาไปยังบล็อก <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 จากลอมบอกลงในชั้นเรียนแล้วดูว่าจะทำให้โค้ดสั้นลงได้อย่างไร
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 เข้ากับคลาสและลบ Constructor ออกจากคลาส เราไม่ต้องการมันอีกต่อไป
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 ตรวจสอบว่าทุกอย่างทำงานได้ ในขณะที่โปรเจ็กต์นี้ดำเนินไป เรากำลังใช้คำอธิบายประกอบลอมบอกใหม่อีกหลายรายการ UPD: ความคิดเห็นที่ดีจาก Denis Ryabchikov "สำหรับเอนทิตี จะเป็นการดีกว่าที่จะไม่ใช้ @Data แต่แทนที่ด้วย @Setter และ @Getter เนื่องจาก @Data จะแทนที่ toString() และ hashCode() ด้วย และปัญหาอาจเกิดขึ้นกับ รหัสแฮชหากเอนทิตีจะมีคอลเลกชันและความสัมพันธ์กับเอนทิตีอื่น ๆ " โดยหลักการแล้ว นั่นคือทั้งหมด นี่ คือ บทความเกี่ยวกับลอมบอกดูคำอธิบายของคำอธิบายประกอบ: @Data, @Value, @RequiredArgsConstructor และ @Builder ในบทความนี้ อ่านเกี่ยวกับ @ Accessorsบทความเป็นภาษาอังกฤษ แต่นักแปลเพจก็รับมือได้ดี คุณก็เข้าใจความหมายได้ ในบทความถัดไปเราจะทำการกรอกฐานข้อมูลต่อไป
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION