Maison >Java >javaDidacticiel >Comment utiliser JPA comme framework de persistance des données dans SpringBoot

Comment utiliser JPA comme framework de persistance des données dans SpringBoot

WBOY
WBOYavant
2023-05-17 18:13:40931parcourir

JPA est l'abréviation de Java Persistence API. Le nom chinois est Java Persistence Layer API. Il s'agit d'une relation de mappage entre les annotations JDK 5.0 ou les objets de description XML et les tables relationnelles, et conserve les objets d'entité au moment de l'exécution dans la base de données.

1. Présentation des dépendances

<!-- spring mvc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- mysql 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<!-- jpa持久层 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. Configuration de la connexion à la base de données

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/jpa-demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
  jpa:
    hibernate:
      # 自动创建表
      ddl-auto: update

ddl-auto Il y a cinq valeurs facultatives au total

  • none : Ne rien faire

  • create : Supprimer à chaque fois que la mise en veille prolongée est chargée. la table générée la dernière fois, puis régénérez une nouvelle table basée sur votre classe de modèle. Même s'il n'y a aucune modification deux fois, vous devez le faire. Il s'agit d'une raison importante de la perte de données de la table de base de données.

  • create-drop : La table est générée en fonction de la classe de modèle à chaque fois que la mise en veille prolongée est chargée, mais la table est automatiquement supprimée dès la fermeture de sessionFactory.

  • update : L'attribut le plus couramment utilisé. Lorsque hibernate est chargé pour la première fois, la structure de la table sera automatiquement établie en fonction de la classe du modèle (à condition que la base de données soit établie en premier lorsque hibernate est chargée ultérieurement). La structure du tableau sera automatiquement mise à jour en fonction de la classe de modèle, même si le tableau La structure a changé mais les lignes du tableau existent toujours sans supprimer les lignes précédentes. Il convient de noter que lors du déploiement sur le serveur, la structure des tables ne sera pas établie immédiatement, mais attendra que l'application soit exécutée pour la première fois.

  • validate : chaque fois que hibernate est chargé, la structure de la table de la base de données est vérifiée et créée. Elle sera uniquement comparée à la table de la base de données. Aucune nouvelle table ne sera créée, mais de nouvelles valeurs seront insérées.

3. Objet de données (DO)

import lombok.Data;

import javax.persistence.*;

@Table(name = "sys_user")
@Entity
@Data
public class SysUserDO {

    /**
     * 主键-自增
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(columnDefinition = "varchar(12) comment &#39;用户名称&#39;")
    private String name;

    @Column(columnDefinition = "varchar(50) comment &#39;邮箱&#39;")
    private String email;
}
  • @Id, indiquant que l'attribut est le champ de clé primaire

  • @GeneratedValue(strategy = GenerationType.IDENTITY), en utilisant la méthode d'incrémentation automatique de clé primaire

  • @ Colonne, spécifie les attributs du champ de la base de données. Vous pouvez définir le type de données, la longueur, les commentaires et d'autres informations, ou vous pouvez simplement écrire un commentaire le reconnaîtra automatiquement. 4. Objet de persistance

    import com.biz.jpa.entity.SysUserDO;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public interface SysUserRepository extends JpaRepository<SysUserDO, Long> {
    }
  • . @Repository, indiquant qu'il s'agit d'une couche d'accès aux données

5. Couche métier

import com.biz.jpa.dao.SysUserRepository;
import com.biz.jpa.entity.SysUserDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SysUserService {

    @Autowired
    private SysUserRepository sysUserRepository;

    public SysUserDO saveUser() {
        SysUserDO sysUser = new SysUserDO();
        sysUser.setName("Asurplus");
        sysUser.setEmail("123456@qq.com");
        sysUserRepository.save(sysUser);
        return sysUser;
    }
}

Nous insérons une donnée dans la table sys_user Étant donné que la clé primaire est automatiquement incrémentée, nous n'avons pas besoin de définir la clé primaire après. l'insertion est réussie, la clé primaire auto-incrémentée sera automatiquement réécrite dans l'objet

6. Test

import com.biz.jpa.entity.SysUserDO;
import com.biz.jpa.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;

    @GetMapping("save")
    public SysUserDO save() {
        return sysUserService.saveUser();
    }
}

Visite :

Retour :

{"id":1,"name":"Asurplus","email":"123456@qq.com"}
http://localhost:8080/saveL'insertion a réussi et la clé primaire auto-incrémentée a été renvoyé. L'intégration de Jpa est terminée ici. Une utilisation plus poussée de Jpa doit être explorée dans le développement réel du projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer