JavaRush /جاوا بلاگ /Random-SD /بهار خوفناڪ نه آهي، مختصر ۾: Lombok

بهار خوفناڪ نه آهي، مختصر ۾: Lombok

گروپ ۾ شايع ٿيل
مضمونن جي چڪر جو مضمون وڪيپيڊيا:لومبوڪ جو ٿورو ذرو:لومبوڪ (انڊونيائي ٻوليءَ مان لومبوڪ - “چلي مرچ”) ملائي ٻيٽ ۾ هڪ ٻيٽ آهي، جيڪو انڊونيشيا جو حصو، ليسر سنڊا ٻيٽن جي گروپ ۾ آهي. لومبوڪ اهو نالو آهي جيڪو جاوا پروگرامنگ ٻولي لاءِ مشهور لائبريري کي ڏنو ويو آهي. نالي جي چونڊ هن حقيقت جي ڪري آهي ته لومبوڪ ٻيٽ جاوا ٻيٽ کان ايترو پري ناهي، ۽ پڻ، ظاهري طور تي، ان جي نالي جي معني "ملي مرچ" سان، ڇاڪاڻ ته لائبريري مفيد "موسم" مهيا ڪري ٿي. ٻولي. توهان اهو بهتر نه چئي سگهيا، ۽ لفظن جو استعمال ڇا آهي، اچو ته ان کي عمل ۾ ڏسو: پلگ ان انسٽال ڪريو. پوم فائل جي <انحصار> بلاڪ تي انحصار شامل ڪريو:
<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 ڪلاس ۾. چيڪ ڪريو ته هر شي ڪم ڪري رهيو آهي. جيئن هي پروجيڪٽ اڳتي وڌي رهيو آهي، اسان استعمال ڪري رهيا آهيون ڪيترائي نوان Lombok تشريحون. UPD: Denis Ryabchikov کان سٺو تبصرو ”هڪ اداري لاءِ، بهتر آهي @Data استعمال نه ڪيو وڃي، پر ان کي @Setter ۽ @Getter سان تبديل ڪيو وڃي، ڇاڪاڻ ته @Data به String() ۽ hashCode() کي اوور رائيڊ ڪري ٿو، ۽ ان سان مسئلا پيدا ٿي سگهن ٿا. hash ڪوڊ جيڪڏهن ادارو گڏ ڪندو ۽ ٻين ادارن سان لاڳاپا هوندو." اصول ۾، اهو سڀ ڪجهه آهي، هتي Lombok تي هڪ مضمون آهي ، تشريح جي وضاحت کي ڏسو: @Data، @Value، @RequiredArgsConstructor ۽ @Builder. هن آرٽيڪل ۾، @Accessors جي باري ۾ پڙهو ، مضمون انگريزيءَ ۾ آهي، پر صفحي جو مترجم ان کي چڱيءَ طرح سنڀاليندو، توهان مطلب سمجهي سگهو ٿا. ايندڙ آرٽيڪل ۾ اسان ڊيٽابيس کي ڀرڻ جاري رکنداسين.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION