[JAVA] Was ist JPA-Prüfung?

Was ist JPA-Prüfung?

Wenn Sie eine Domäne mithilfe von JPA einer RDBS-Tabelle zuordnen, gibt es Felder und Spalten, die eine Domäne gemeinsam haben.

Es ist typischerweise wie folgt.

Es gibt solche Felder und Spalten, oder? Die Tatsache, dass es für jede Domain existiert, bedeutet, dass der Code dupliziert wird. Dies liegt daran, dass es für die Wartung hilfreich ist, zu protokollieren, wer die Datenbank wann erstellt hat. Daher sind Spalten wie Erstellungsdatum und Änderungsdatum wirklich wichtige Daten.

Aus diesem Grund bietet JPA eine Funktion namens Audit an. Audit ist eine Funktion, mit der Spring Data JPA die Zeit im Sinne der Überwachung automatisch auffüllt. Wenn Sie nach dem Speichern der Domäne im Persistenzkontext oder nach einer Abfrage ein Update durchführen, müssen Sie die Zeitdaten jedes Mal eingeben. Bei Verwendung der Prüfung wird die Zeit jedoch automatisch zugeordnet und der Datenbanktabelle hinzugefügt. Wird es in setzen.

trainieren

    1. Erstellen Sie eine BaseTimeEntity-Klasse im Domänenpaket. image.png
  1. Erstellen Sie eine BaseTimeEntity wie folgt.


package jojoidu.boot.springboot.domain;

import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

    @CreatedDate
    private LocalDateTime createdDate;

    @LastModifiedDate
    private LocalDateTime modifiedDate;
}

Die BaseTimeEntity-Klasse wird zur übergeordneten Klasse aller Entity-Klassen und übernimmt die Rolle der automatischen Verwaltung des Erstellungsdatums und des Änderungsdatums der Entitätsklasse **. ** ** **

    1. Erben Sie die BaseTimeEntity-Klasse an die Entity-Klasse.

package jojoidu.boot.springboot.domain.posts;

import jojoidu.boot.springboot.domain.BaseTimeEntity;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Getter
@NoArgsConstructor
@Entity //Gibt die mit der Tabelle verknüpfte Klasse an
public class Posts extends BaseTimeEntity {

    @Id //Zeigt das PK-Feld an
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(length = 500, nullable = false)
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String content;

    private String author;

    @Builder
    public Posts(String title, String content, String author) {
        this.title = title;
        this.content = content;
        this.author = author;
    }

    public void update(String title, String content) {
        this.title = title;
        this.content = content;
    }
}


Vier. Fügen Sie abschließend die Aktivierungsanmerkung zur Hauptklasse hinzu, damit die JPA-Überwachungsanmerkung aktiviert wird.


package jojoidu.boot.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Prüfung

Das Testen ist wichtig, deshalb habe ich auch eine Testmethode hinzugefügt.


@Test
    public void saveBaseTimeEntity() {
        // given
        LocalDateTime now = LocalDateTime.of(2020, 8,12,0,0,0);
        postsRepository.save(Posts.builder()
        .title("title")
        .content("content")
        .author("author")
        .build());

        // when
        List<Posts> postsList = postsRepository.findAll();

        //then
        Posts posts = postsList.get(0);

        System.out.println(">>>>>>>createdDate=" + posts.getCreatedDate() + ", modifiedDate=" + posts.getModifiedDate());

        assertThat(posts.getCreatedDate()).isAfter(now);
        assertThat(posts.getModifiedDate()).isAfter(now);
    }

Ergebnis

image.png Ich konnte bestätigen, dass es normal funktioniert. Ich bin zu glücklich, so viel Spaß zu haben.

Recommended Posts

Was ist JPA-Prüfung?
Was ist Cubby?
Was ist null? ]]
Was ist java
Was ist Schlüsselumhang?
Was ist Maven?
Was ist Jackson?
Was ist Jenkins?
Was ist ArgumentMatcher?
Was ist IM-Jonglieren?
Was ist params
Was ist SLF4J?
Was ist Java <>?
Was ist Gradle?
Was ist POJO?
Was ist java
Was ist centOS?
Was ist RubyGem?
Was ist before_action?
Was ist Byte?
Was ist Tomcat?
Was ist Maven Assembly?
Was ist ein Konstruktor?
Was ist vue cli
Was ist eine Schnittstelle?
Was ist Rubys Selbst?
Was ist harte Codierung?
Was ist ein Stream?
Was ist Rubys attr_accessor?
Was ist Java-Kapselung?
Was ist die Erlaubnis verweigert?
Was ist Instanzsteuerung?
Was ist ein Initialisierer?
Was ist Spring Tools 4?
Was ist Objektorientierung?
Was ist Guavas @VisibleForTesting?
Was ist ein MVC-Modell?
Was ist eine Anmerkung?
Was ist Java-Technologie?
Was ist Java API-Java?
Was ist @ (Instanzvariable)?
Was ist Gradles Artefakt?
[Java] Was ist flatMap?
Was ist ein Servlet?
Was ist Webentwicklung?
[Java] Was ist ArrayList?
Was ist HttpSession session = request.getSession ();
[Memorandum] Was ist ein Fehler?
Was ist eine Wrapper-Klasse?
Was ist ein boolescher Typ?
Was ist ein Ruby-Modul?