Как создать репозиторий JPA для книг, Клиентов, Заказов

#java #spring #spring-boot #maven #jpa

Вопрос:

Я пытаюсь создать 3 репозитория JPA с 3 соответствующими службами, но я даже не знаю, с чего начать. Я буду признателен, если кто-нибудь из вас возьмет на это добычу.

Книга DTO

 package com.mile.pc.java8.book_api_jpa.DTO;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "books")
public class Book {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    private String name;
    private String type;
    private boolean available;

    protected Book() {}

    public Book(String name, String type, boolean available) {
        super();
        this.name = name;
        this.type = type;
        this.available = available;
    }
    public Long getID() {
        return id;
    }
    public String getName() {
        return name;
    }
    public String getType() {
        return type;
    }
    public boolean isAvailable() {
        return available;
    }
    @Override
    public String toString() {
        return "Book [id="   id   ", name="   name   ", type="   type   ", available="   available   "]";
    }


}
 

приказ DTO:

 package com.mile.pc.java8.book_api_jpa.DTO;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "orders")
public class Order {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String customerName;
    
    protected Order() {}
    public Order(Integer id, String customerName) {
        super();
        this.id = id;
        this.customerName = customerName;
    }
    
    public int getId() {
        return id;
    }
    public String getCustomerName() {
        return customerName;
    }
    
    @Override
    public String toString() {
        return "Order [id="   id   ", customerName="   customerName   "]";
    }
}
 

The client DTO:

 package com.mile.pc.java8.book_api_jpa.DTO;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "clients")
public class Client {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
     private String clientEmail;
     private String clientName;
     
     protected Client() {}

    public Client(String clientEmail, String clientName) {
        super();
        this.clientEmail = clientEmail;
        this.clientName = clientName;
    }

    public String getClientEmail() {
        return clientEmail;
    }

    public String getClientName() {
        return clientName;
    }

    @Override
    public String toString() {
        return "Client [clientEmail="   clientEmail   ", clientName="   clientName   "]";
    }
     
}

 

Book repo:

 package com.mile.pc.java8.book_api_jpa.DTO.repo;

import java.util.ArrayList;
import java.util.List;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.mile.pc.java8.book_api_jpa.DTO.Book;

@EnableJpaRepositories
@Repository
public interface BookRepository extends CrudRepository<Book, Long> {
    List<Book> books = new ArrayList<>();
    
}

 

Order repo:

 package com.mile.pc.java8.book_api_jpa.DTO.repo;

import java.util.ArrayList;
import java.util.List;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.mile.pc.java8.book_api_jpa.DTO.Order;

@EnableJpaRepositories
@Repository
public interface OrderRepository extends CrudRepository<Order, Long> {
    List<Order> orders = new ArrayList<Order>();
}

 

Client repo:

 package com.mile.pc.java8.book_api_jpa.DTO.repo;

import java.util.HashMap;
import java.util.Map;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.mile.pc.java8.book_api_jpa.DTO.Client;

@EnableJpaRepositories
@Repository
public interface ClientRepository extends CrudRepository<Client, Long> {
    Map<String, Client> clients = new HashMap<String, Client>();
}

 

Услуга Бронирования:

 package com.mile.pc.java8.book_api_jpa.DTO.repo.service;
import org.springframework.stereotype.Service;

@Service
public class BookService{
    
}

 

Заказать услугу:

 package com.mile.pc.java8.book_api_jpa.DTO.repo.service;

import org.springframework.stereotype.Service;

@Service
public class OrderService {

}

 

Обслуживание Клиентов:

 package com.mile.pc.java8.book_api_jpa.DTO.repo.service;

import org.springframework.stereotype.Service;

@Service
public class ClientService {

}

 

Я знаю, что прошу о многом. Но я был бы вам очень признателен…Спасибо 🙂

Комментарии:

1. List<Book> books = new ArrayList<>(); и т.д. не должны быть частью репозиториев, и я бы поместил @EnableJpaRepositories их в класс конфигурации или приложение. С помощью этой настройки у вас уже должны быть базовые методы репозитория, и вы можете добавить любые другие, которые вам нравятся (подумайте о том, что может потребоваться, и прочитайте документы о том, как это сделать). Что касается услуг: какую цель они должны выполнять? Каковы требования к ним? Начните создавать методы, соответствующие этим требованиям и использующие репозитории по мере необходимости (автоматически подключайте репозитории к службам, чтобы они были доступны).

2. Модель > Dao(@Репозиторий) >> Служба(@Служба) >>> Контроллер(@RestController/@Контроллер) — Это обычная конструкция — Вы пропустили уровень DAO — Импортируйте этот проект, запустите и отладьте его на своей локальной машине .>>> github.com/mehmetpekdemir/Library-Management-System

3. Тай Сибин