Que es JPA
JPA (Java Persistence API) es una especificación de persistencia de Java propuesta oficialmente por Sun. Proporciona a los desarrolladores de Java una herramienta de mapeo de objetos/asociación para administrar datos relacionales en aplicaciones Java. Su apariencia es principalmente para simplificar los esfuerzos de desarrollo persistentes existentes e integrar la tecnología ORM
Spring Data JPA es un marco de aplicación JPA encapsulado por Spring basado en el marco de ORM y las especificaciones de JPA, que permite a los desarrolladores acceder y operar datos utilizando un código minimalista. Proporciona funciones comunes que incluyen adiciones, deleciones, modificaciones y búsquedas, ¡y es fácil de expandir! ¡Aprender y usar datos de primavera JPA puede mejorar en gran medida la eficiencia del desarrollo!
Use JDBCTemplate para acceder a la base de datos en Spring Boot
Configuración de la fuente de datos
Primero, para conectarse a la base de datos, debe introducir el soporte JDBC, y la siguiente configuración se introduce en Pom.xml
<Spendency> <ProupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-jdbc </artifactid> </pendency>
Soporte de base de datos integrado
Las bases de datos integradas se usan comúnmente en entornos de desarrollo y prueba. Spring-Boot proporciona bases de datos incrustadas de configuración automática que incluyen H2, HSQL y Derby, que no necesita proporcionar ninguna configuración de conexión para usar.
Como la dependencia de H2
<Spendency> <ProupId> com.h2database </proupid> <artifactId> H2 </artifactid> <cope> Runtime </cope> </dependencia>
Soporte de base de datos MySQL
<Spendency> <ProupId> mysql </proupid> <artifactId> mysql-connector-java </artifactid> <verserse> 5.1.38 </versión> </pendency>
Editar información de configuración
Configurar información de origen de datos en SRC/Main/Resources/Application.Properties
spring.datasource.url = jdbc: mysql: // localhost: 3306/testSpring.datasource.username = rootspring.datasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driver
Use JDBCTemplate para operar la base de datos
JDBCTemplate de Spring se configura automáticamente, puede usar @aUtowired para inyectarlo en su propio frijol.
Implementación de operaciones de acceso a datos definidas en la demostración
@ServicePublic Class DemosRivce {@aUtowired private jdbctemplate jdbctemplate; public void create (nombre de cadena, edad entero) {jdbctemplate.update ("inserte en la demostración (nombre, edad) valores (?,?)", nombre, edad); } public void DeleteByName (nombre de cadena) {jdbctemplate.update ("Eliminar de Demowhere Name =?", Nombre); } public Integer getAllDemo () {return jdbctemplate.queryForObject ("Seleccione recuento (1) de demo", integer.class); } public void DeleteAllDemo () {jdbctemplate.update ("eliminar de demo"); }}Cree casos de prueba unitaria para UserService para verificar la corrección de las operaciones de la base de datos creando, eliminando y consultando.
Los casos de prueba deben aumentar las dependencias
<Spendency> <ProupId> org.springframework.boot </groupid> <artifactId> spring-boot-starter-test </arfactid> <cope> test </cope> </dependence>
Código de prueba
@RunWith (SpringJunit4ClassRunner.class) @SpringApplicationConfiguration (Main.Class) Public Class ApplicationTests {@AUTOWIREDEDREDEDRED DemosVCE privado Demosivce; @Bebore public void setup () {// Prepare, borre la tabla DemosVCe.DelEdealDemo (); } @Test public void test () lanza la excepción {// insertar 5 demosRivce.create ("a", 1); DemosRivce.Create ("B", 2); DemosRivce.Create ("C", 3); DemosRivce.Create ("D", 4); DemosRivce.Create ("E", 5); Afirmar.AssERTequals (5, Demoserivce.getAllDemo (). IntValue ()); Demoserivce.DeleteByName ("A"); DemosRivce.DeleteByName ("E"); // Mirando la base de datos, debe haber 5 afirmaciones. }}Uso de Spring-Data-JPA en Spring Boot
Para resolver estas grandes cantidades de declaraciones de operación de datos aburridas, lo primero que pensamos es utilizar un marco ORM, como: Hibernate. Después de integrar Hibernate, finalmente mapeamos los cambios de datos en la tabla de la base de datos en la forma de manipular las entidades Java.
Para resolver la operación básica de "suma, eliminación, modificación y búsqueda" de abstraer cada entidad Java, generalmente encapsulamos una plantilla de manera genérica para abstraer y simplificarla, pero esto todavía no es muy conveniente. Necesitamos escribir una interfaz heredada de la plantilla genérica en una entidad específica y luego escribir una implementación de la interfaz. Aunque se puede reutilizar bien el acceso básico de datos, habrá un montón de interfaces e implementaciones para cada entidad en la estructura de código.
Debido a la implementación de plantillas, las capas de estas entidades específicas se han vuelto muy "delgadas". Las implementaciones de algunas entidades específicas pueden ser completamente un proxy simple para las plantillas, y a menudo tales clases de implementación pueden aparecer en muchas entidades. La aparición de Data-JPA de primavera puede hacer que una capa de acceso de datos ya "delgada" se convierta en una forma de escribir una capa de interfaces.
Cómo usar
Agregar dependencias
<Pependency <MoupRoMID> org.springframework.boot </groupid> <artifactID> spring-boot-starter-data-jPa </artifactid> </dependency>
Editar información de configuración
Configurar información de origen de datos en SRC/Main/Resources/Application.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 = actualización
spring.jpa.properties.hibernate.hbm2ddl.auto es una propiedad de configuración de Hibernate. Su función principal es crear, actualizar y verificar automáticamente la estructura de la tabla de la base de datos. Varias configuraciones de este parámetro son las siguientes
Crear una entidad
@EntityPublic Class DemoEntity {@ID @GeneratedValue Private Long ID; título de cadena privada; Contenido de cadena privada; Public DemoEntity () {} public demoEntity (título de cadena, contenido de cadena) {this.title = title; this.content = content; } // Ponte SET omitido}Crea un Dao
La interfaz pública Demorepository extiende jParepository <DemoEntity, Long> {DemoEntity FindByTitle (título de cadena); DemoEntity findByTitleAnDContent (título de cadena, contenido de cadena); // @Query ("Seleccione U de DemoEntity U Where U.Content =: Content") @Query ("Desde DemoEntity U Where U.Content =: Content") DemoEntity sqlfind (@param ("Content") String Content);}No escriba los nombres de las tabla en SQL, pero los nombres de las entidades, los convertirá automáticamente en nombres de las tabla.
Crear una consulta analizando el nombre del método
El FindByTitle (título de cadena) anterior y FindByTitleAnDContent (título de cadena, contenido de cadena) no se escriben, pero el marco creará automáticamente SQL de acuerdo con el nombre del par anterior.
Prueba unitaria
@RunWith (SpringJunit4ClassRunner.class) @SpringApplicationConfiguration (Main.Class) Public Class Unittest {@AUTOWIREDIRDED DEMOREPOSTORY DEMOREPOSTORY; @Test public void test () {for (int i = 0; i <10; i ++) {demorepository.save (nueva demoEntity ("title"+i, "content"+i)); } Afirmar.AssertEquals (10, Demorepository.Findall (). Size ()); } @Test public void testFindByTitle () {DemoEntity Res = Demorepository.FindByTitle ("Title8"); Afirmar.assertEquals ("title8", res.gettitle ()); } @Test public void testFindByTitleAnDContent () {DemoEntity Res = Demorepository.FindByTitleAnDContent ("Title9", "Content9"); Afirmar.assertEquals ("title9", res.gettitle ()); Afirmar.AsserTequals ("Content9", res.getContent ()); } @Test public void testSqlFind () {DemoEntity Res = Demorepository.SqlFind ("Content7"); Afirmar.AssERTequals ("Content7", res.getContent ()); }}Resumir
Lo anterior es la introducción del editor al uso de Data-JPA de primavera en el arranque de primavera para facilitar y acceder rápidamente a la base de datos. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!