JavaRush /Java блогу /Random-KY /Жаз коркунучтуу эмес, кыскасы: Ломбок
Павел
Деңгээл

Жаз коркунучтуу эмес, кыскасы: Ломбок

Группада жарыяланган
МАКАЛАЛАР ЦИКЛИНИН МАЗМУНУ Уикипедиянын бир аз бөлүгү: Ломбок (индон тorнен Ломбок – «чor калемпир») — Индонезиянын бир бөлүгү, Кичи Зунда аралдарынын тобундагы Малай архипелагындагы арал. Ломбок Java программалоо тor үчүн популярдуу китепканага берилген аталыш. Атын тандоо Ломбок аралынын Ява аралынан анчалык деле алыс эмес экендигине байланыштуу, ошондой эле, кыязы, анын аталышы "ч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 жөнүндө окуп, макала англис тorнде, бирок барак котормочу аны жакшы чече алат, маанисин түшүнө аласыз. Кийинки макалада биз базаны толтурууну улантабыз.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION