Was ist JPA
JPA (Java Persistence API) ist eine von Sun vorgeschlagene Java -Persistenzspezifikation. Es bietet Java -Entwicklern ein Objekt-/Assoziations -Mapping -Tool, um relationale Daten in Java -Anwendungen zu verwalten. Sein Aussehen ist hauptsächlich darin, bestehende anhaltende Entwicklungsbemühungen zu vereinfachen und die ORM -Technologie zu integrieren
Spring Data JPA ist ein JPA -Anwendungsframework, das von Spring basierend auf ORM -Framework- und JPA -Spezifikationen eingekapselt ist, mit dem Entwickler mit minimalistischen Code auf Daten zugreifen und sie bedienen können. Es bietet gemeinsame Funktionen, einschließlich Ergänzungen, Löschungen, Änderungen und Suchanfragen und ist leicht zu erweitern! Das Lernen und Verwenden von Frühlingsdaten JPA kann die Entwicklungseffizienz erheblich verbessern!
Verwenden Sie JDBCTEMPLET, um die Datenbank im Spring Start zuzugreifen
Datenquellenkonfiguration
Um eine Verbindung zur Datenbank herzustellen, müssen Sie zunächst JDBC -Unterstützung einführen, und die folgende Konfiguration wird in pom.xml eingeführt
<Depopenty> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Jdbc </artifactid> </abhängig>
Eingebettete Datenbankunterstützung
Eingebettete Datenbanken werden häufig in Entwicklungs- und Testumgebungen verwendet. Spring-Boot bietet automatische Konfigurationsdatenbanken, einschließlich H2, HSQL und Derby, die Sie nicht zur Verfügung stellen müssen.
Wie die Abhängigkeit von H2
<Depopenty> <gruppe> com.h2database </GroupId> <artifactId> H2 </artifactId> <Scope> Laufzeit </Scope> </abhängig>
MySQL -Datenbankunterstützung
<De vorhöhe> <gruppe> Mysql </Groupid> <artifactId> Mysql-connector-Java </artifactId> <version> 5.1.38 </Version> </abhängig>
Konfigurationsinformationen bearbeiten
Konfigurieren von Datenquelleninformationen in SRC/Main/Ressourcen/Anwendung.Properties
Spring.DataSource.url = jdbc: mysql: // localhost: 3306/testspring.dataSource.username = rootspring.datasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driver
Verwenden Sie JDBCtemplate, um die Datenbank zu betreiben
Die JDBCTEMplate von Spring ist automatisch konfiguriert.
Implementierung von Datenzugriffsvorgängen in DemoService über JDBCTEMplate
@ServicePublic Class DemoSerivce {@autowired Private JDBCTEMPLET JDBCTEMPLATE; public void create (String -Name, Ganzzahl -Alter) {jdbctemplate.Update ("in Demo (Name, Alter) Werte (?,?), Name, Alter); } public void DeleteByName (String -Name) {jdbctemplate.update ("aus DemowHERE name =?", Name); } public Integer getAllDemo () {return jdbctemplate.queryforObject ("Graf (1) aus der Demo auswählen", Integer.class); } public void deleteallDemo () {jdbctemplate.update ("aus der Demo delete"); }}Erstellen Sie Unit -Testfälle für UserService, um die Richtigkeit der Datenbankvorgänge durch Erstellen, Löschen und Abfragen zu überprüfen.
Testfälle müssen die Abhängigkeiten erhöhen
<Depopentcy> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Test </artifactId> <Scope> Test </Scope> </abhängig>
Testcode
@Runwith (SpringJunit4ClassRunner.class) @SpringApplicationConfiguration (main.class) öffentliche Klasse ApplicationTests {@autowired private DemoSerivce DemoSerivce; @Before public void setup () {// vorbereiten, die Tabelle demoserivce.DeletallDemo () vorbereiten; } @Test public void test () löst Ausnahme aus {// 5 demoserivce.create ("a", 1) einfügen; Demoserivce.Create ("B", 2); Demoserivce.Create ("C", 3); Demoserivce.Create ("D", 4); Demoserivce.Create ("E", 5); Assert.AsSertequals (5, DemoSerivce.getallDemo (). IntValue ()); DemoSerivce.DeletByName ("a"); DemoSerivce.DeletByName ("e"); // Betrachten Sie die Datenbank, es sollte 5 assert.assertequals (3, demoserivce.getallDemo (). IntValue ()) geben; }}Verwenden von Spring-Data-JPA im Federstiefel
Um diese großen Mengen an Aussagen von Bohrdatenbetrieb zu lösen, ist das erste, woran wir denken, ein ORM -Framework wie: Hibernate. Nach der Integration von Hibernate erordnen wir schließlich Datenänderungen in der Datenbanktabelle in der Art der Manipulation von Java -Entitäten zu.
Um die grundlegende "Addition, Löschung, Änderung und Suche" zu lösen, die die Zusammenfassung der einzelnen Java -Entität abstrahieren, verkapulieren wir normalerweise eine Vorlage auf generische Weise, um sie abstrahieren und zu vereinfachen, dies ist jedoch immer noch nicht sehr bequem. Wir müssen eine Schnittstelle schreiben, die von der generischen Vorlage in einer bestimmten Entität geerbt und dann eine Implementierung der Schnittstelle schreiben. Obwohl einige grundlegende Datenzugriffs gut wiederverwendet werden können, gibt es für jede Entität in der Codestruktur eine Reihe von Schnittstellen und Implementierungen.
Aufgrund der Umsetzung von Vorlagen sind die Schichten dieser spezifischen Einheiten sehr "dünn" geworden. Implementierungen einiger spezifischer Unternehmen sind möglicherweise ein einfacher Proxy für Vorlagen, und häufig können solche Implementierungsklassen bei vielen Unternehmen auftreten. Das Auftreten von Spring-DATA-JPA kann eine solch "dünne" Datenzugriffsschicht zu einer Möglichkeit, eine Schicht von Schnittstellen zu schreiben, wird.
Wie man benutzt
Abhängigkeiten hinzufügen
<De vorangetrieben <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Data-jpa </artifactid> </abhängig>
Konfigurationsinformationen bearbeiten
Konfigurieren von Datenquelleninformationen in SRC/Main/Ressourcen/Anwendung.Properties
Spring.DataSource.url = jdbc: mysql: // localhost: 3306/testspring.dataSource.username = rootspring.datasource.password = Rootspring.Datasource.Driver-Class-Name = com.mysql.jdbc.driverspring.jpa.properties.hibernate.hbm2ddl.auto = Update
spring.jpa.properties.hibernate.hbm2ddl.auto ist eine Konfigurationseigenschaft von Hibernate. Die Hauptfunktion besteht darin, die Datenbanktabellenstruktur automatisch zu erstellen, zu aktualisieren und zu überprüfen. Mehrere Konfigurationen dieses Parameters sind wie folgt
Erstellen Sie eine Entität
@EntityPublic Class DemoEntity {@id @generatedValue Private Long ID; privater String -Titel; private String -Inhalte; public DemoEntity () {} public DemoEntity (String -Titel, String -Inhalt) {this.title = title; this.content = content; } // SET SET AUSBUCH}Erstellen Sie einen DAO
öffentliche Schnittstelle Demorepository erweitert JParepository <DemoEntity, Long> {Demoentity findByTitle (String -Titel); Demoentity findByTitleanDContent (String -Titel, String -Inhalt); // @Query ("Wählen Sie u von DemoEntity u Where U.Content =: content") @Query ("Aus DemoEntity u Wo u.Content =: content") Demoentity SQLFind (@param ("Inhalt") starken Inhalt);}Schreiben Sie keine Tabellennamen in SQL, aber Entitätsnamen werden sie automatisch in Tabellennamen umwandelt.
Erstellen Sie eine Abfrage, indem Sie den Methodennamen analysieren
Die obigen FindByTitle (String -Titel) und FindByTitleAndContent (String -Titel, String -Inhalt) werden nicht geschrieben, aber das Framework erstellt automatisch SQL gemäß dem Namen des obigen Paares.
Unit -Tests
@Runwith (SpringJunit4ClassRunner.class) @springApplicationConfiguration (main.class) öffentliche Klasse Unittest {@autowired Demorepository Demorepository; @Test public void test () {für (int i = 0; i <10; i ++) {Demorepository.save (neue Demoentity ("Titel"+i, "Inhalt"+i)); } Assert.asserTequals (10, Demorepository.findall (). Size ()); } @Test public void testfindByTitle () {DemoEntity Res = Demorepository.findByTitle ("title8"); Assert.asserTequals ("title8", res.gettitle ()); } @Test public void testFindByTitleANDContent () {DemoEntity Res = Demorepository.findByTitLeANDContent ("title9", "content9"); Assert.asserTequals ("title9", res.gettitle ()); Assert.asserTequals ("content9", res.getContent ()); } @Test public void testsqlfind () {DemoEntity Res = Demorepository.sqlfind ("Content7"); Assert.asserTequals ("content7", res.getContent ()); }}Zusammenfassen
Das obige ist die Einführung des Editors in die Verwendung von Spring-DATA-JPA im Spring Boot, um die Datenbank zu erleichtern und schnell zugreifen zu können. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!