JavaRush /Java блогы /Random-KK /Көктем қорқынышты емес, қысқасы: Ломбок
Павел
Деңгей

Көктем қорқынышты емес, қысқасы: Ломбок

Топта жарияланған
МАҚАЛАЛАР ЦИКЛІНІҢ МАЗМҰНЫ Уикипедияның кішкене бөлігі: Ломбок (үнд. Ломбок – «чor бұрыш») — Индонезияның бір бөлігі, Кіші Зунда аралдары тобындағы Малай архипелагындағы арал. Ломбок — Java бағдарламалау тіліне арналған танымал кітапханаға берілген атау. Атауды таңдау Ломбок аралының Ява аралынан соншалықты алыс еместігіне байланысты, сонымен қатар оның атауының мағынасы «чor бұрышы» болғандықтан, кітапхана оқырмандарға пайдалы «дәмдеуіштерді» ұсынады. тіл. Сіз мұны жақсырақ айта алмайсыз және сөздердің пайдасы неде, оны әрекетте көрейік: Плагинді орнатыңыз. 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 annotationсын сыныпқа қосып, оның codeты қалай қысқартатынын көрейік.
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 сыныбында қажет емес codeтан құтылу үшін бірдей әдісті пайдаланыңыз. Барлығы жұмыс істеп тұрғанын тексеріңіз. Бұл жоба жүріп жатқанда, біз тағы бірнеше жаңа Ломбок annotationларын қолданамыз. UPD: Денис Рябчиковтен жақсы түсініктеме «Субъект үшін @Data қолданбаған дұрыс, бірақ оны @Setter және @Getter ауыстырған дұрыс, өйткені @Data toString() және hashCode() дегенді де қайталайды және ақаулықтар туындауы мүмкін. егер ұйымның жинақтары және басқа нысандармен қарым-қатынасы болса, хэш codeы." Негізінде, бұл бәрі, мұнда Lombok туралы мақала бар , annotationлардың сипаттамасын қараңыз: @Data, @Value, @RequiredArgsConstructor және @Builder. Бұл мақалада @ Accessors туралы оқыңыз, мақала ағылшын тілінде, бірақ бет аудармашысы оны жақсы өңдей алады, сіз мағынасын түсіне аласыз. Келесі мақалада біз дерекқорды толтыруды жалғастырамыз.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION