[JAVA] Greifen Sie über das Repository mit Spring Data auf die Datenbank zu.

Praktische Schnittstelle zum automatischen Erstellen des Zugriffs auf die Datenbank

Das JPA-Repository ist eine praktische Schnittstelle, die CRUD automatisch in DB implementiert. Sobald die Umgebung festgelegt ist, kann die DB-Zugriffsfunktion mit einer beträchtlich geringen Menge an Code implementiert werden, aber es ist ziemlich schwierig, die Umgebung festzulegen, daher habe ich sie zusammengefasst.

Stellen Sie die Spring Data-Bibliothek vor

Lesen Sie den folgenden Artikel, bis die JDBC-Vorlage vorerst funktioniert.

SpringDataJPA Access 1 SpringDataJPA Access 2

Erstellen Sie eine Repository-Schnittstelle

Erstellen Sie den Repository-Body.

MyPesononalDataDaoRepository.java


package com.tsugaruinfo.repository;

@Repository
public interface MyPesononalDataDaoRepository
	extends JpaRepository<Mypersonaldata, Integer> {

}

Es ist nur eine Schnittstelle. Der Inhalt muss nicht implementiert werden.

Registrieren Sie das Repository in DI

Registrieren Sie das Repository in der Bean-Konfigurationsdatei.

appllicatio-config.xml


<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">



		<!--JPA-Repository-Einstellungen-->
	<jpa:repositories base-package="com.tsugaruinfo.repository" />
	
     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource" />
    </bean>


Zwei Punkte

1. Fügen Sie einen Namespace hinzu

TX und jpa zum Namespace hinzugefügt

application-config.xml


	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jpa="http://www.springframework.org/schema/data/jpa"

Im Schema

application-config.xml


		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"

Bereitstellung von JPA- und Transaktions-Beans. Dies liegt daran, dass JPA beim Erstellen eines Repositorys die Transaktion ohne Berechtigung verwendet.

2. Fügen Sie das Repository-Paket und den Transaction Manager hinzu

Dies ist die Haupt-DI-Registrierung Registrieren Sie das jpa-Repository-Paket und eine Bean namens transactionManager.

appliction-config.xml


		<!--JPA-Repository-Einstellungen-->
	<jpa:repositories base-package="com.tsugaruinfo.repository" />
	
     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="dataSource" ref="dataSource" />
    </bean>

Bitte ändern Sie "com.tsugaruinfo.repository" in Ihr eigenes Paket, wenn Sie es tatsächlich verwenden. Das Repository ist jetzt im DI-Container registriert.

Injizieren Sie mit @Autowired

Dieses Mal ist es in Servlet implementiert. (Nun, wie im Lehrbuch ...)

BeanAutowiredFilterServlet.java


public class BeanAutowiringFilterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	@Override
	public void init() throws ServletException {
		super.init();
		SpringBeanAutowiringSupport
			.processInjectionBasedOnCurrentContext(this);
	}

Dieser Befehl ** SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this); ** ist der Schlüssel zur Verwendung der Annotation @Autowired. In dem Moment, in dem dieser Befehl ausgeführt wird, wird die in DI registrierte Bean in die mit Anmerkungen versehene Variable eingefügt.

Ich denke, dass die zu injizierende Variable ein Feld der Klasse ist, daher kann es sinnvoll sein, sie im Konstruktor auszuführen. Richten Sie dieses Mal eine übergeordnete Klasse ein und führen Sie sie mit der Initialisierungsmethode des Servlets aus.

Mit Spring Boot Es scheint automatisch mit der Annotation @SpringBootApplication ausgeführt zu werden

Injizieren und materialisieren

MyPersonalDataServlet.java


@WebServlet("/person")
public class MyPersonalDataServlet extends BeanAutowiringFilterServlet {
	private static final long serialVersionUID = 1L;
       

	@Autowired
	MyPesononalDataDaoRepository repository;

In die Felder des Servlets injiziert. JPA- und DI-Container werden ohne neue Material entstehen.

Sofort ausführen

Lassen Sie es uns in einem Servlet ausführen. Holen Sie sich den gesamten Inhalt der DB

MyPersonalDataServlet.java


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List<Mypersonaldata> list = repository.findAll();

		request.setAttribute("entities", list);

		response.getWriter().append("Served at: ").append(request.getContextPath());

		request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
	}

index.jsp


<!DOCTYPE html>

<%@ page import="java.util.List" %>
<%@ page import="com.tsugaruinfo.model.Mypersonaldata" %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<html>
	<head>
		<meta charset="utf-8">
		<title>JPA Sample1</title>
	</head> 
	<body>
		<h1>Welcome to JPA Sample!</h1>
		
		<form method="post" action="person">
		<table>
			<tr><td>Name:Input<input type ="text" name="name"></td></tr>
			<tr><td>Mail:Input<input type ="text" name="mail"></td></tr>
			<tr><td>Age:Input<input type ="text" name="age"></td></tr>
			<tr><td><input type ="submit" value="hinzufügen"></td></tr>
		</table>
		</form>
		<c:url value="/showMessage.html" var="messageUrl" />
		<a href="${messageUrl}">Click to enter</a>
		<ol>
		 
			<% for(Object entity : (List)request.getAttribute("entities")){ %>
				<li><%=entity %></li>
			<% } %>
		</ol>
	</body>
</html>

Ergebnis

image.png

Ich konnte bestätigen, dass das Repository ordnungsgemäß funktioniert.

Recommended Posts

Greifen Sie über das Repository mit Spring Data auf die Datenbank zu.
DB-Zugriff mit Exposed
Verwenden Sie Pair mit OpenJDK
Versuchen Sie eine DB-Verbindung mit Java
Frühling mit Kotorin --- 8. Aufbewahrungsschicht
DB-Programmierung mit EclipseLink Teil1
Greifen Sie mit Micronaut auf Apache Kafka zu
Stellen Sie mit Java eine Verbindung zur Datenbank her
Verwenden von Mapper mit Java (Spring)
Fehler in db: migrate: reset
Verwenden von PlantUml mit Honkit [Docker]