JavaRush /جاوا بلاگ /Random-UR /موسم بہار خوفناک نہیں ہے، مختصر میں: لومبوک

موسم بہار خوفناک نہیں ہے، مختصر میں: لومبوک

گروپ میں شائع ہوا۔
مضامین کے چکر کے مشمولات ویکیپیڈیا کا تھوڑا سا: لومبوک (انڈونیائی سے لومبوک - "چلی مرچ") مالائی جزیرہ نما کا ایک جزیرہ ہے، جو انڈونیشیا کا حصہ، کم سنڈا جزائر کے گروپ میں ہے۔ لومبوک جاوا پروگرامنگ زبان کے لیے ایک مشہور لائبریری کو دیا جانے والا نام ہے۔ نام کا انتخاب اس حقیقت کی وجہ سے ہے کہ لومبوک جزیرہ جاوا کے جزیرے سے زیادہ دور نہیں ہے، اور بظاہر، اس کے نام کے معنی "مرچ مرچ" کے ساتھ ہیں، کیونکہ لائبریری مفید "مسالا" فراہم کرتی ہے۔ زبان. آپ اسے بہتر طور پر نہیں کہہ سکتے، اور الفاظ کا استعمال کیا ہے، آئیے اسے عملی طور پر دیکھتے ہیں: پلگ ان انسٹال کریں۔ پوم فائل کے <dependencies> بلاک میں انحصار شامل کریں:
<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 +
            '}';
}
تھوڑا طویل، ہے نا؟ آئیے Lombok سے @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 будет сгенирован Ломбоком
پروجیکٹ چلائیں، چیک کریں کہ سب کچھ کام کرتا ہے۔ اب دیکھتے ہیں کہ آپ 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 کلاس میں غیر ضروری کوڈ سے چھٹکارا پانے کے لیے یہی طریقہ استعمال کریں۔ چیک کریں کہ سب کچھ کام کر رہا ہے۔ جیسے جیسے یہ پروجیکٹ آگے بڑھ رہا ہے، ہم لومبوک کی کئی نئی تشریحات استعمال کر رہے ہیں۔ 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