O que é JPA
JPA (Java Persistence API) é uma especificação de persistência de Java, proposta oficialmente pelo Sun. Ele fornece aos desenvolvedores Java uma ferramenta de mapeamento de objeto/associação para gerenciar dados relacionais em aplicativos Java. Sua aparência é principalmente para simplificar os esforços persistentes de desenvolvimento existentes e integrar a tecnologia ORM
O Spring Data JPA é uma estrutura de aplicativo JPA encapsulada pelo Spring com base nas especificações do ORM Framework e JPA, que permite aos desenvolvedores acessar e operar dados usando código minimalista. Ele fornece funções comuns, incluindo adições, deleções, modificações e pesquisas, e é fácil de expandir! Aprender e usar o Spring Data JPA pode melhorar bastante a eficiência do desenvolvimento!
Use jdbctemplate para acessar o banco de dados na inicialização da primavera
Configuração da fonte de dados
Primeiro, para se conectar ao banco de dados, você precisa introduzir suporte ao JDBC, e a seguinte configuração é introduzida no POM.XML
<Depencency> <PuerpId> org.springframework.boot </frugiD> <TRATIFACTID> Spring-boot-starter-jdbc </artifactId> </dependency>
Suporte ao banco de dados incorporado
Os bancos de dados incorporados são comumente usados em ambientes de desenvolvimento e teste. O Spring-Boot fornece bancos de dados incorporados de configuração automática, incluindo H2, HSQL e Derby, que você não precisa fornecer qualquer configuração de conexão para usar.
Como a dependência de H2
<Depencency> <voupid> com.h2database </frupid> <TRAFACTID> h2 </stifactId> <COBOPE> RUNDIME </SCOPE> </Dependency>
Suporte ao banco de dados MySQL
<Depencency> <PuerpId> mysql </frugiD> <TRAFACTID> mysql-conector-java </stutifactId> <versão> 5.1.38 </versão </dependency>
Editar informações de configuração
Configurar informações da fonte de dados em SRC/Main/Recursos/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 o banco de dados
O JDBCTemplate da Spring é configurado automaticamente, você pode usar o @Autowired para injetá -lo em seu próprio feijão.
Implementação de operações de acesso a dados definidas em Demoservice através do JDBCTemplate
@ServicePublic Classe DemoSerivce {@AUTOWIRED PRIVADO JDBCTEMPLATE JDBCTEMPLATE; public void create (nome da string, idade inteira) {jdbcTemplate.UpDate ("Inserir na demonstração (nome, idade) valores (?,?)", nome, idade); } public void DeleteByName (nome da string) {jdbcTemplate.UpDate ("Excluir do nome Demowhere =?", Nome); } public integer getAllDemo () {return jdbcTemplate.QueryForObject ("Selecione contagem (1) da demonstração", Integer.class); } public void DeLeTeallDemo () {jdbcTemplate.Update ("Excluir da demonstração"); }}Crie casos de teste de unidade para o UserService verificar a correção das operações de banco de dados criando, excluindo e consultando.
Os casos de teste precisam aumentar as dependências
<Ependency> <GrupidId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-Starter-test </sutifactId> <cope> Test </schope> </dependency>
Código de teste
@Runwith (springjunit4classrunner.class) @springapplicationConfiguration (main.class) public class ApplicationTests {@aUTowired Demosserivce Private Demoserivce; @EBefore public void setup () {// Prepare, limpe a tabela DemoSerivce.deleteAllDemo (); } @Test public void test () lança exceção {// inserir 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"); // Olhando para o banco de dados, deve haver 5 assert.asserTequals (3, Demoserivce.getAllDemo (). Intvalue ()); }}Usando o Spring-Data-JPA na bota da primavera
Para resolver essas grandes quantidades de declarações de operação de dados chatos, a primeira coisa em que pensamos é usar uma estrutura ORM, como: Hibernate. Depois de integrar o Hibernate, finalmente mapeamos as alterações de dados na tabela de banco de dados na maneira de manipular entidades Java.
Para resolver a operação básica de "adição, exclusão, modificação e pesquisa" de abstrair cada entidade Java, geralmente encapsulamos um modelo de maneira genérica de abstraí -lo e simplificá -lo, mas isso ainda não é muito conveniente. Precisamos escrever uma interface herdada do modelo genérico em uma entidade específica e, em seguida, escrever uma implementação da interface. Embora algum acesso básico de dados possa ser bem reutilizado, haverá várias interfaces e implementações para cada entidade na estrutura do código.
Devido à implementação de modelos, as camadas dessas entidades específicas se tornaram muito "finas". Algumas implementações de entidades específicas podem ser completamente um proxy simples para modelos, e muitas vezes essas classes de implementação podem aparecer em muitas entidades. O surgimento de Spring-Data-JPA pode fazer com que uma camada de acesso a dados já "fina" se torne uma maneira de escrever uma camada de interfaces.
Como usar
Adicione dependências
<Ependency <GroupId> org.springframework.boot </frugiD> <stifactId> Spring-boot-Starter-Data-jpa </ArtifactId> </Dependency>
Editar informações de configuração
Configurar informações da fonte de dados em SRC/Main/Recursos/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 = update
spring.jpa.properties.hibernate.hbm2ddl.auto é uma propriedade de configuração do Hibernate. Sua principal função é criar, atualizar e verificar automaticamente a estrutura da tabela de banco de dados. Várias configurações deste parâmetro são as seguintes
Criar uma entidade
@EntityPublic Class Demoentity {@id @generatedValue Private Long Id; título de sequência privada; conteúdo privado de string; public Demoentity () {} Public Demoentity (título da String, String Content) {this.title = title; this.content = content; } // Seja definido omitido}Crie um DAO
interface pública demorepository estende jparepository <demonstração, long> {demonstração findbytitle (título da string); Demoentidade FindBytitleandContent (título da String, String Content); // @Query ("Selecione U FROM Demoentidade U onde U.Content =: Content") @Query ("da demonstração u onde u.content =: content") Demoentidade sqlfind (@param ("conteúdo de conteúdo);Não escreva nomes de tabela no SQL, mas os nomes de entidades, ele os converterá automaticamente em nomes de tabela.
Crie uma consulta analisando o nome do método
O FindByTitle acima (título da String) e FindByTitleArDContent (título da String, String Content) não estão escritos, mas a estrutura criará automaticamente o SQL de acordo com o nome do par acima.
Teste de unidade
@Runwith (springjunit4classrunner.class) @springapplicationConfiguration (main.class) classe pública unittest {@aUTowired Demorepository demorepository; @Test public void test () {for (int i = 0; i <10; i ++) {demorepository.save (nova demonstração ("title"+i, "content"+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 () {demonstridade res = demorepository.sqlfind ("content7"); Assert.asserTequals ("content7", res.getContent ()); }}Resumir
O exposto acima é a introdução do editor ao uso do Spring-Data-JPA na inicialização da primavera para facilitar e acessar rapidamente o banco de dados. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!