Maison >Java >javaDidacticiel >Comment utiliser JPA comme framework de persistance des données dans SpringBoot
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.
<!-- 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>
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.
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 '用户名称'") private String name; @Column(columnDefinition = "varchar(50) comment '邮箱'") 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> { }
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
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/save
L'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!