Qu'est-ce que JPA
JPA (Java Persistance API) est une spécification de persistance Java officiellement proposée par Sun. Il fournit aux développeurs Java un outil de mappage d'objet / association pour gérer les données relationnelles dans les applications Java. Son apparence est principalement de simplifier les efforts de développement persistants existants et d'intégrer la technologie ORM
Spring Data JPA est un framework d'application JPA encapsulé par Spring basé sur le cadre ORM et les spécifications JPA, qui permet aux développeurs d'accéder et de faire fonctionner des données à l'aide de code minimaliste. Il offre des fonctions communes, y compris les ajouts, les suppressions, les modifications et les recherches, et est facile à développer! Apprendre et utiliser les données de printemps JPA peut considérablement améliorer l'efficacité du développement!
Utilisez JDBCTemplate pour accéder à la base de données dans Spring Boot
Configuration de la source de données
Tout d'abord, afin de vous connecter à la base de données, vous devez introduire le support JDBC et la configuration suivante est introduite dans pom.xml
<dependency> <proupId> org.springframework.boot </rombasid> <ArtifactId> Spring-Boot-starter-jdbc </artifactid> </Dependency>
Prise en charge de la base de données intégrée
Les bases de données intégrées sont couramment utilisées dans les environnements de développement et de test. Spring-Boot fournit des bases de données intégrées de configuration automatique, notamment H2, HSQL et Derby, dont vous n'avez pas besoin de fournir une configuration de connexion à utiliser.
Comme la dépendance de H2
<dependency> <proupId> com.h2database </rompuprid> <letichactid> h2 </ artifactid> <ccope> runtime </ccope> </pedidency>
Prise en charge de la base de données MySQL
<dependency> <proupId> mysql </proupId> <ArtefactId> MySQL-Connector-Java </ ArfactId> <Dersion> 5.1.38 </DERNIFRESSE> </ Dependency>
Modifier les informations de configuration
Configurer les informations de source de données dans SRC / Main / Resources / Application.Properties
printemps.datasource.url = jdbc: mysql: // localhost: 3306 / testspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.
Utilisez JDBCTemplate pour faire fonctionner la base de données
JDBCTemplate de Spring est automatiquement configuré, vous pouvez utiliser @Autowired pour l'injecter dans votre propre bean.
Mise en œuvre des opérations d'accès aux données définies dans Demoservice via JDBCTemplate
@ServicePublic Class DemoSerivce {@Autowired Private JDBCTemplate JDBCTemplate; public void Create (Nom de la chaîne, âge entier) {jdbctemplate.update ("INSERT IN Demo (nom, âge) VALEURS (?,?)", nom, âge); } public void DeleteByName (String name) {jdbctemplate.update ("Delete from DemowHere name =?", name); } public entier getAllDemo () {return jdbctemplate.queryforObject ("select count (1) from Demo", Integer.class); } public void deletealLemo () {jdbcTemplate.update ("Delete from Demo"); }}Créez des cas de test unitaire pour les services d'utilisateur pour vérifier l'exactitude des opérations de base de données en créant, en supprimant et en interrogeant.
Les cas de test doivent augmenter les dépendances
<dependency> <proupId> org.springframework.boot </prôdId> <ArtifactId> printemp-boot-starter-test </retifactid> <ccope> test </ccope> </Dependency>
Code de test
@Runwith (springjunit4classrunner.class) @springApplicationConfiguration (main.class) public class applicationTests {@Autowired private DemoSerivce DemOSerivce; @Before public void setup () {// prépare, effacer le tableau Demoserivce.deletealLemo (); } @Test public void test () lève une exception {// insérer 5 demoserivce.create ("a", 1); DemOSerivce.Create ("B", 2); DemOSerivce.Create ("C", 3); DemoSerivce.Create ("D", 4); Demoserivce.Create ("E", 5); Assert. asserTequals (5, DemoSerivce.getAllDemo (). IntValue ()); DemoSerivce.DeleteByName ("A"); DemoSerivce.DeleteByName ("E"); // En regardant la base de données, il devrait y avoir 5 ASSERT.ASSERTEQUALS (3, DemoSerivce.getAllDemo (). IntValue ()); }}Utilisation du printemps-data-jpa dans le démarrage de printemps
Afin de résoudre ces grandes quantités d'instructions d'opération de données ennuyeuses, la première chose à laquelle nous pensons est d'utiliser un cadre ORM, tel que: hibernate. Après avoir intégré Hibernate, nous mapperons enfin les modifications des données dans la table de la base de données dans la manière de manipuler les entités Java.
Afin de résoudre le fonctionnement de base "Addition, suppression, modification et recherche" de l'abstraction de chaque entité Java, nous encapsulons généralement un modèle de manière générique pour l'abstraire et la simplifier, mais ce n'est toujours pas très pratique. Nous devons écrire une interface héritée du modèle générique dans une entité spécifique, puis écrire une implémentation de l'interface. Bien que certains accès aux données de base puissent être bien réutilisés, il y aura un tas d'interfaces et d'implémentations pour chaque entité dans la structure du code.
En raison de la mise en œuvre de modèles, les couches de ces entités spécifiques sont devenues très "minces". Les implémentations de certaines entités spécifiques peuvent être entièrement un simple indicateur pour les modèles, et souvent de telles classes d'implémentation peuvent apparaître sur de nombreuses entités. L'émergence de Spring-Data-JPA peut faire de la couche d'accès aux données déjà "mince" deviendra un moyen d'écrire une couche d'interfaces.
Comment utiliser
Ajouter des dépendances
<Dependency <GroupId> org.springFramework.boot </rombasid> <ArtifactId> Spring-Boot-starter-data-jpa </retifactid> </dEpendency>
Modifier les informations de configuration
Configurer les informations de source de données dans SRC / Main / Resources / Application.Properties
printemps.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 = mise à jour
printemps.jpa.properties.hibernate.hbm2ddl.auto est une propriété de configuration de Hibernate. Sa fonction principale est de créer, de mettre à jour et de vérifier automatiquement la structure de la table de base de données. Plusieurs configurations de ce paramètre sont les suivantes
Créer une entité
@EntityPublic Class Demoentity {@id @geneRatedValue Private Long ID; titre de chaîne privée; Contenu de chaîne privé; public DemoEntity () {} public DemoEntity (String title, String Content) {this.title = title; this.Content = contenu; } // être défini omis}Créer un DAO
Interface publique Demorepository étend JParePository <Coentity, Long> {Demoentity FindByTitle (String Title); Demoentity FindByTitleAndContent (String Title, String Content); // @Query ("SELECT U FROM Demoentity u Where U.Content =: Content") @Query ("From Demoentity u Where U.Content =: Content") Demoentity SqlFind (@param ("Content") String Content);}N'écrivez pas de noms de table dans SQL, mais les noms d'entités, il les convertira automatiquement en noms de table.
Créer une requête en analysant le nom de la méthode
Le ci-dessus findByTitle (titre de chaîne) et findBytitleandContent (titre de chaîne, contenu de chaîne) ne sont pas écrits, mais le framework créera automatiquement SQL en fonction du nom de la paire ci-dessus.
Tests unitaires
@Runwith (springjunit4classrunner.class) @springApplicationConfiguration (main.class) public classe unittest {@autowired Demorepository Demorepository; @Test public void test () {for (int i = 0; i <10; i ++) {Demorepository.save (new DemoEntity ("title" + i, "contenu" + 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 ("contenu9", res.getContent ()); } @Test public void testsqlfind () {Demoentity res = Demorepository.sqlfind ("contenu7"); Assert.asserTequals ("Content7", res.getContent ()); }}Résumer
Ce qui précède est l'introduction de l'éditeur à l'utilisation de Spring-Data-JPA dans Spring Boot pour faciliter et accéder rapidement à la base de données. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!