[JAVA] Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).

Implementierung eines einfachen Web-REST-API-Servers mit Spring Boot + MySQL - Qiita

Outline Implementieren Sie die Infrastrukturschicht gemäß dem folgenden Entwurf. Betrachten Sie die von Spring Boot --Qiita implementierte Architektur der Web-API

Erstellen Sie die folgenden 3 Klassen.

├── infrastructure
│   ├── entity
│   │   └── UserEntity.java
│   └── repository
│       ├── UserJpaRepository.java
│       └── UserRepositoryImpl.java

UserEntity.java Die Klasse, der MySQL-Datensätze zugeordnet sind. Definieren Sie eine Methode zum bidirektionalen Konvertieren mit Domain Object (User.java).

UserEntity.java


package com.example.springapi.infrastructure.entity;

import com.example.springapi.domain.object.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *RDB-Datensatzzuordnungsklasse
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "test_users")
public class UserEntity {
    @Id
    @Column(name = "id")
    private String id;

    @Column(name = "value")
    private String value;

    /**
     *Erstellen Sie eine Instanz aus einem Domänenobjekt
     *
     * @param Benutzerdomänenobjekt
     * @return UserEntity
     */
    public static UserEntity build(User user) {
        return UserEntity.builder()
                .id(user.getId())
                .value(user.getValue())
                .build();
    }

    /**
     *In Domänenobjekt konvertieren
     *
     * @Domain-Objekt zurückgeben
     */
    public User toDomainUser() {
        return User.builder()
                .id(this.id)
                .value(this.value)
                .build();
    }
}

* JPA-Anmerkung

@Entity Dies drückt die JPA-Entität (zugeordnete Klasse) aus. @Table Geben Sie den Tabellennamen an. @id Gibt an, dass es sich um den Primärschlüssel handelt. Bei einem zusammengesetzten Schlüssel ändert sich die Schreibmethode. @Column Geben Sie den Spaltennamen der Tabelle an.

* Lombok-Anmerkung

@NoArgsConstructor Erstellen Sie automatisch einen Konstruktor ohne Argumente. Aufgrund des Lebenszyklus der JPA-Entität ist ein Konstruktor ohne Argumente erforderlich. Nicht erforderlich, wenn die Konfiguration einen Konstruktor ohne Argumente enthält. (Wenn es kein endgültiges Feld usw. gibt. Es ist unbedingt erforderlich, wenn Sie @Builder verwenden.) @AllArgsConstructor Erstellen Sie einen Konstruktor, der alle Felder als Argumente verwendet. Wenn NoArgsConstructor angegeben ist, funktioniert @Builder nur, wenn dies ebenfalls angegeben ist (@Builder generiert automatisch einen Konstruktor, der alle Felder als Argumente verwendet, jedoch keinen Konstruktor für Klassen mit xxxArgsConstructor erstellt. Und es funktioniert nicht.)

UserJpaRepository.java Schnittstelle erforderlich, um die JPA-Implementierung zu verwenden. Erben Sie JpaRepository und geben Sie die Entitätsklasse und den Primärschlüsseltyp an. Zur Laufzeit wird die von spring-data-jpa bereitgestellte Standardimplementierung namens SimpleJpaRepository vom DI-Container injiziert, sodass keine Implementierungsklasse geschrieben werden muss.

UserJpaRepository.java


package com.example.springapi.infrastructure.repository;

import com.example.springapi.infrastructure.entity.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 *Schnittstelle zur Verwendung von JPA
 */
public interface UserJpaRepository extends JpaRepository<UserEntity, String> {
}

UserRepositoryImpl.java Implementierungsklasse der in der Domänenschicht definierten UserRepository-Schnittstelle. Die eigentliche Verarbeitung erfolgt durch SimpleJpaRepository.

UserRepositoryImpl.java


package com.example.springapi.infrastructure.repository;

import com.example.springapi.domain.object.User;
import com.example.springapi.domain.repository.UserRepository;
import com.example.springapi.infrastructure.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Optional;

/**
 *Persistenz-Implementierungsklasse
 *Konvertieren Sie das Domänenobjekt in eine Entität und schließen Sie JPA ein
 */
@Repository
@RequiredArgsConstructor
public class UserRepositoryImpl implements UserRepository {

    @NonNull
    private final UserJpaRepository userJpaRepository;

    /**
     * {@inheritDoc}
     */
    @Override
    public Optional<User> findById(String id) {
        return this.userJpaRepository.findById(id)
                .map(UserEntity::toDomainUser);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public User save(User user) {
        return this.userJpaRepository.save(UserEntity.build(user))
                .toDomainUser();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void deleteById(String id) {
        this.userJpaRepository.deleteById(id);
    }
}

@Repository Ein anderer Name für @Compornent. Mit @Service.

Recommended Posts

Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
Implementieren Sie die REST-API mit Spring Boot
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Implementieren Sie GraphQL mit Spring Boot
Hallo Welt (REST API) mit Apache Camel + Spring Boot 2
[Spring Boot] Benutzerinformationen mit Rest API abrufen (Anfänger)
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 2).
Passen Sie die Antwort auf REST-API-Fehler mit Spring Boot an (Teil 1).
Feder mit Kotorin --4 REST API Design
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
[Anfänger] Versuchen Sie, die REST-API für die Todo-App mit Spring Boot zu schreiben
Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.
HTTPS mit Spring Boot und Let's Encrypt
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Erstellen Sie einen Web-API-Server mit Spring Boot
Mit Spring Boot herunterladen
Testen von JPA-Entitäten und -Repositorys mit Spring Boot @DataJpaTest
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Verwendungshinweis zu Spring Security: Zusammenarbeit mit Spring MVC und Boot
Spring Boot mit Spring Security Filter-Einstellungen und Suchtpunkten
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Verbinden Sie Spring Boot und Angular typsicher mit OpenAPI Generator
Hallo Welt mit Spring Boot
Frühling mit Kotorin --- 8. Aufbewahrungsschicht
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Aufrufen und Verwenden der API in Java (Spring Boot)
Feder mit Kotorin ―― 7. Serviceschicht
Versuchen Sie, die Springcode-Such-API mit Spring Boot aufzurufen
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
REST-API-Test mit REST Assured
Verwenden Sie Spring JDBC mit Spring Boot
Hash beim Spring-Boot das Passwort und verwenden Sie die Mitgliederregistrierung und die Spring-Sicherheit, um die Anmeldefunktion zu implementieren.
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
API mit Spring + Vue.js verknüpfen
Erstellen Sie mit Spring Boot einen Mikrodienst
Domänengesteuerte Entwicklung mit Java und Spring Boot-Layer und Modulabteilung
Mail mit Spring Boot verschicken
8 Dinge, die mit Spring Boot und JPA in die DB eingefügt werden müssen
Lassen Sie uns herausfinden, wie Sie mit Request Body mit der REST-API von Spring Boot empfangen können