[JAVA] Bis zur Verwendung von Spring Data und JPA Part 2

Die Schwierigkeit beim Einstellen ist ziemlich hoch.

Fortsetzung vom letzten Mal

Vorerst habe ich Spring verwendet, um eine Verbindung zur Datenbank herzustellen. Ab hier verwenden wir ein vollwertiges DB-Operations-Framework namens JPA.

Ziele teilen

    1. Was Sie brauchen, um sich mit SQL zu verbinden -Hibernate EntityManager-Bibliothek ・ Spring JDBC-Bibliothek ・ Datenbanktreiber Haltung oder H2 · Eigenschaftendatei -Bean Konfigurationsdatei (xml) JavaConfig wird diesmal nicht verwendet. Vielleicht wird es verwirrend ** ← Bisher **
  1. Außerdem, was für JPA erforderlich ist ** ← Von hier ** ・ Spring Data JPA-Bibliothek ・ Entitätsklasse · Persistence.xml-Datei (Java EJB-Funktionalität) -Bean Konfigurationsdatei (XML) -Ausführungsklasse mit Hauptmethode

Bibliothek hinzufügen

Bibliothek wie gewohnt hinzufügen. Wenn Sie in Spring eine neue Funktion verwenden, bearbeiten Sie normalerweise die Bibliothek.

pom.xml


		<!-- Spring Data JPA -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-jpa</artifactId>
		</dependency>
		
		<!-- Spring ORM -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>

Nach dem Speichern ** Maven → Projekt aktualisieren **

Entitätsklasse

Klicken Sie hier, um eine Entitätsklasse aus einer Tabelle zu erstellen. einpacken Klicken Sie mit der rechten Maustaste und konvertieren Sie von der Konfiguration zum JPA-Projekt. Wenn es sich um ein JPA-Projekt handelt, wird automatisch eine Entität aus der Tabelle generiert.

https://qiita.com/shibafu/items/39f3f5d6e63dda16bb12

Es ist wirklich schwer zu sehen,

image.png

Wenn Sie eine Entität haben, fügen Sie eine Anmerkung wie @Id hinzu, um den Fehler zu beheben. Es kann gut sein, ** lombok ** zu verwenden und den Getter-Setter in @Data wegzulassen

Automatisch implementierte Entitätsklasse

image.png

Persistence.xml erstellen

Erstellen Sie einen META-INF-Ordner in src / main / resources und eine persistance.xml-Datei darin. Es scheint sich um eine Java-EE-Funktion namens ** Persistenzdatei ** zu handeln (Wenn Sie es mit JPA erstellt haben, wird es in src / main / java erstellt. Verschieben Sie es also.)

Skizzieren src/main/resources/   |   |---META-INF   |    |   |    |--persistance.xml   |---bean.xml   |---database.properties

persitance.xml


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
   xmlns="http://xmlns.jcp.org/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
		http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
   
	<persistence-unit name="persistance-unit">
		
		<!--HibernatePersistance-Definition-->
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>model.Mypersonaldata</class>
		
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
			
			<property name="hibernate.hbm2ddl.auto" value="create" />
			
				<!--Treibereigenschaften-->
				<property name="javax.persistance.jdbc.driver"
					value="${jdbc.driverClassname}" />
				<property name="javax.persistance.jdbc.url"
					value="${jdbc.url}" />
				<property name="javax.persistance.jdbc.user"
					value="${jdbc.username}" />
				<property name="javax.persistance.jdbc.password"
					value="${jdbc.password}" />	
		</properties>
	</persistence-unit>
</persistence>

image.png

Erstellen einer Bean-Konfigurationsdatei

Erstellen Sie abschließend eine Bean-Konfigurationsdatei. Namespace xmlns = http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/spring-jpa.xsd Hinzufügen Registrieren Sie den Entitätsmanager beim DI-Container.

bean.xml


<?xml version="1.0" encoding="UTF-8"?>
<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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	 http://www.springframework.org/schema/beans/spring-beans.xsd
	 http://www.springframework.org/schema/data/jpa
	 http://www.springframework.org/schema/data/spring-jpa.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">


	<!--Einstellungen für eingebettete Datenbank>
	<jdbc:embedded-database id="dataSource" type="H2">
		<jdbc:script location="classpath:script.sql"/>
	</jdbc:embedded-database-->

	<!--Datenbankeigenschaften festlegen-->
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	  	<property name="location" value="database.properties" />
	</bean>

	<!--EntityManager-Einstellungen-->
	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="jpaVendorAdapter">
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
				<property name="generateDdl" value="true" />
			</bean>
		</property>
	</bean>

	<!--Einstellungen für die DB-Verbindung-->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<!--Erstellen einer JDBC-Template-Bean-->
	<bean class="org.springframework.jdbc.core.JdbcTemplate">
		<constructor-arg ref="dataSource" />
	</bean>

	
		<!--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>
</beans>


Lass uns rennen

Lassen Sie uns den Entity Manager in die Hauptklasse einordnen und die Funktionen von JPA ausführen!

App.java



public class App{
	public static void main(String args[]) {
		
		//Erstellen einer Vorlage mit Anmerkungen
		//context = new AnnotationConfigApplicationContext(DataSourceConfig.class);
		//JdbcTemplate jdbcTemplate = (JdbcTemplate)context.getBean(JdbcTemplate.class);
		//Kontext abrufen
//		context = new ClassPathXmlApplicationContext("bean.xml");
//		jdbcTemplate = context.getBean(JdbcTemplate.class);
	
		context = new ClassPathXmlApplicationContext("bean.xml");
		
		LocalContainerEntityManagerFactoryBean factory =
				context.getBean(LocalContainerEntityManagerFactoryBean.class);
		manager = factory.getNativeEntityManagerFactory().createEntityManager();
		
		Mypersonaldata data = manager.find(Mypersonaldata.class, 1);
		
			System.out.println(data);
	
	}
}

Führen Sie dies in der Java-Anwendung aus

image.png

Unten sehen Sie die aus postgresql gelesenen Daten.

Zusammenfassung.

Nun, mit Spring-Boot wird dieser Vorgang automatisch durchgeführt. Ich konnte die Grundlagen nicht niedrig halten und es funktionierte nicht mehr, also als Referenz.

Recommended Posts

Bis zur Verwendung von Spring Data und JPA Part 2
Bis zur Verwendung von Spring Data und JPA Part 1
[spring] Verwenden wir Spring Data JPA
Überprüfen Sie das Verhalten von getOne-, findById- und Abfragemethoden mit Spring Boot + Spring Data JPA
[Spring Data JPA] Kann die And-Bedingung in der automatisch implementierten Löschmethode verwendet werden?
Sehen Sie sich das Verhalten von Entitätsaktualisierungen mit Spring Boot + Spring Data JPA an
[Java] Der verwirrende Teil von String und StringBuilder
Gegenseitige Bezugnahme auf Entity of Spring Data JPA und seine Anmerkungen
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
Kompatibilität von Spring JDBC und My Batis mit Spring Data JDBC (vorläufig)
Machen Sie die where-Klauselvariable in Spring Data JPA
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Spring Data JPA: Schreiben Sie eine Abfrage in Pure SQL in @Query of Repository
Hinweise zur Verwendung von Spring Data JDBC
Memo der JSUG-Studiengruppe 2018 Teil 2 - Bemühungen um Arbeitsspezifikationen im Frühjahr und in der API-Ära
[Spring Data JPA] Die benutzerdefinierte ID wird zum Zeitpunkt der Registrierung in einer eindeutigen Reihenfolge zugewiesen.
Teil 4: Passen Sie das Verhalten der von Spring Security 5 unterstützten OAuth 2.0-Anmeldung an
Dies und das von JDK
Filtern Sie die Schwankungen der Rohdaten
Punkt 59: Kennen und verwenden Sie die Bibliotheken
Ordnungsgemäße Verwendung von Mockito und PowerMock
Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig
Spring Data JPA SQL-Protokollausgabe
Filtern Sie das Ergebnis von BindingResult [Spring]
Das Erstellen einer REST-API mit Spring JPA-Daten mit REST und Lombok ist unglaublich einfach.
Verwenden Sie Spring Mobile, um den Gerätetyp von Smartphones, Tablets und PCs zu bestimmen
[Spring Boot] Poste Dateien und andere Daten gleichzeitig [Axios]
(In 1 Minute bestimmen) Wie verwende ich leer ?, Leer? Und präsent?
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
Implementierungsmethode für Multi-Datenquelle mit Spring Boot (Mybatis und Spring Data JPA)
Die Geschichte der Begegnung mit Spring Custom Annotation
ODER suchen Sie mit der Spring Data Jpa-Spezifikation
Feder mit Kotorin --2 RestController und Datenklasse
Nach 3 Monaten Java- und Frühlingstraining
Existiert mit der Spezifikation in Spring Data JPA
Ein- und Ausklappen des Inhalts der Recycler-Ansicht
Informationen zur Funktionsweise von next () und nextLine ()
Informationen zur ersten Anzeige von Spring Framework
Punkt 72: Bevorzugen Sie die Verwendung von Standardausnahmen
Wie ist die Datenstruktur von ActionText?
Richtige Verwendung der Schnittstelle und der abstrakten Klasse
Untersuchen Sie das Verhalten des JPA-Transaktionszeitlimits
Der Inhalt der von CarrierWave gespeicherten Daten.
[Java] [Spring] Testen Sie das Verhalten des Loggers
Erfassung von JSON-Daten und Drehung von Werten
Ich habe die Daten der Reise (Tagebuchanwendung) in Java erhalten und versucht, sie # 001 zu visualisieren
Teil 2: Verstehen Sie (ungefähr) den Prozessablauf der OAuth 2.0-Anmeldung, die von Spring Security 5 unterstützt wird
Ruft den Klassennamen und den Methodennamen des Controllers ab, der vom HandlerInterceptor von Spring Boot ausgeführt wird
Beispielcode für die Suche mit QBE (Query by Example) von Spring Data JPA
Teil 3: Verstehen Sie den Prozessablauf der OAuth 2.0-Anmeldung, die von Spring Security 5 unterstützt wird, (gründlich)
Verwenden Sie doch die for-Anweisung? Verwenden Sie die while-Anweisung? Ordnungsgemäße Verwendung von for-Anweisung und while-Anweisung
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Denken Sie an die Kombination von Servlet und Ajax
Bis zur Datenerfassung mit Spring Boot + MyBatis + PostgreSQL
Über den offiziellen Startleitfaden für Spring Framework
[Ruby on Rails] Bis zur Einführung von RSpec
Vergleichen Sie die Geschwindigkeit der for-Anweisung und der erweiterten for-Anweisung.
Spring Data JPA Save Select-Insert ist nur Insert