SpringBoot estudo especial Part22: JPA integração SpringBoot - Spring dados JPA

Primeiro, o conceito

1. Qual é a dados Primavera

Primavera de Dados O objetivo é simplificar a construção de aplicações baseado no framework Spring com os dados de acesso
de suporte de acesso para bancos de dados relacionais que incluem um banco de dados não-relacional Map-Reduce estrutura para serviços de dados em nuvem, etc. Há também está incluído

Mola dados abaixo existem muitos sub-projectos:

– Spring Data Commons
– Spring Data JPA
– Spring Data KeyValue
– Spring Data LDAP
– Spring Data MongoDB
– Spring Data Gemfire
– Spring Data REST
– Spring Data Redis
– Spring Data for Apache Cassandra
– Spring Data for Apache Solr
– Spring Data Couchbase (community module)
– Spring Data Elasticsearch (community module)
– Spring Data Neo4j (community module)

SpringData proporciona a utilização de uma API unificada para operar sobre uma camada de acesso a dados
é composta principalmente de mola de dados comuns projecto para atingir os
mola de dados comuns quando se utiliza a tecnologia de acesso de dados relacional ou não-relacional é baseado num padrão unificado proporcionada pela mola
que inclui o padrão CRUD (create para obter atualizações excluir) consulta de classificação e paginação operações conexas

Mola Dados fornecidos alguns interface de repositório unificado
Estas funções de interface ter funções CRUD paging funcionalidade e mecanismo de bloqueio optimista

CrudRepository<T, ID extends Serializable> :基本CRUD操作
PagingAndSortingRepository<T, ID extends Serializable> :基本CRUD及分页
RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>> :乐观锁机制

Utilize apenas para escrever suas próprias interfaces para herdar estes built-in interfaces para ter as funções correspondentes sem se preocupar com a sua realização concreta

Primavera de dados também fornece modelo de classe de acesso de dados Template
exemplo RedisTemplate MongoTemplate etc.

Assim, com dados da Primavera é o equivalente a " programação orientada SpringData "

2. O que é JPA

APP não é um quadro, mas uma J2EE- norma : J AVA P ersistence Um PI
da especificação também se refere a especificações JSR
JSR é J AVA S pecification P & lt equests sigla que significa proposta especificação Java
da especificação existem muitas implementações, por exemplo, conhecidos Hibernate
também Toplink OpenJPA etc.

Dados mola que é equivalente à soma destes quadros são reembalados
Dados Primavera subjacente ao padrão Hibernate


Dois, SpringBoot integração JPA

Primeiro, crie um projeto
Aqui Insert Picture Descrição
se um assistente para criar SpringBoot Initializer deve adicionar Primavera de dados JPA

Se você precisa criar manualmente dependente da introdução de:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

E em seguida, escrever o arquivo de configuração de fonte de dados:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot_jpa?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: root
    password: 123456

Desde especificação JPA é baseado ORM (Object Relational Mapping) O pensamento
, portanto, ser escrito e a entidade de dados feijão mesa classe de mapeamento e mapeamento de uma

Preparação de uma classe de entidades:
a base de dados, se não na tabela, correspondente mola de dados APP também fornece a função de criação automática de tabela (claro, a premissa é configurado

// 使用JPA注解来配置映射关系
// @Entity注解:告诉JPA该类是一个实体类 是和数据表进行映射的类
@Entity
// @Table注解:主动指定和数据库中的哪个数据表进行映射 若省略 则默认表名为该类的类名小写
@Table(name = "tb_user")
public class User {

    // @Id注解:表明该属性是一个主键
    @Id
    // @GeneratedValue注解:指定该属性的主键生成策略 IDENTITY代表自增主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    // @Column注解:表明该属性是和数据表对应的一个列 还可指定列名和最大长度
    @Column(name = "last_name",length = 20)
    private String lastName;
    // 若不指定列名 则默认列名为该属性的属性名
    @Column
    private String email;

   getter()setter()方法省略...
}

Finalmente, algumas configurações básicas simples no arquivo de configuração:

jpa:
  hibernate:
    # 数据表的生成策略:update代表更新或创建数据表 若无该数据表 则创建 若有该数据表 则更新
    ddl-auto: update
  # 显示每次执行的sql语句
  show-sql: true

Propriedades da APP em JpaPropertiesesta classe se eu não sei o que os atributos disponíveis para configuração com referência à classe
até agora toda a configuração é concluída

teste simples:

@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer id)
    {
        // 在2.x的新版本的Spring Data JPA中 findById()返回值有可能是空值 须用orElse()进行判断
        return (User) userRepository.findById(id).orElse(null);
    }

    @GetMapping("/addUser")
    public User insertUser(User user)
    {
        // 返回该储存的对象
        return userRepository.save(user);
    }
}

Resultados: O
Aqui Insert Picture Descrição
teste for bem sucedido sem escrever qualquer instrução SQL


Publicado 174 artigos originais · ganhou elogios 5 · Exibições 240.000 +

Acho que você gosta

Origin blog.csdn.net/Piconjo/article/details/105100031
Recomendado
Clasificación