spring JPA 实践记录
2020-12-13 14:29
标签:pre exe java nullable java ee 生成器 data import ext 开发一个小功能 mysql 数据库关联POJO jpa 支持以下命名规范 适用于 JPA(Java Persistence API),是Java EE 5的标准ORM接口,也是ejb3规范的一部分。 Hibernate是之前很流行的ORM框架,也是JPA的一个实现,其它还有Toplink之类的ROM框架。 Hibernate主要是通过三个组件来实现的: @GeneratedValue(strategy=GenerationType,generator=””) generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定uuid等主键生成方式. spring JPA 实践记录 标签:pre exe java nullable java ee 生成器 data import ext 原文地址:https://www.cnblogs.com/mushimeng/p/11562986.html 1 package *;
2
3 import lombok.Data;
4 import lombok.NoArgsConstructor;
5
6 import javax.persistence.Column;
7 import javax.persistence.Entity;
8 import javax.persistence.Id;
9 import javax.persistence.Table;
10
11 @Data
12 @Entity
13 @NoArgsConstructor
14 @Table(name = "alarm_topics")
15 public class AlarmTopicsEntity {
16
17 @Column(name = "name", length = 255, nullable = false)
18 private String name;
19
20 @Id
21 @Column(name = "topic_urn", unique = true, nullable = false)
22 private String topicUrn;
23
24
25 @Column(name = "creator", length = 255)
26 private String creator;
27
28 @Column(name = "created_time")
29 private long createdTime;
30
31 @Column(name = "updated_time")
32 private long updatedTime;
33
34 @Column(name = "rules", length = 4096)
35 private String rules;
36 }
其中topicUrn 为ID索引
1 package *.dao.api;
2
3 import *.model.AlarmTopicsEntity;
4 import org.springframework.data.jpa.repository.JpaRepository;
5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
6
7 import java.util.List;
8
9 public interface AlarmTopicDao extends JpaRepository, JpaSpecificationExecutor {
10
11
12 // /**
13 // * findAll
14 // *
15 // * @param spec spec
16 // * @param pageable pageable
17 // * @return Page
调用 1 public void deleteTopic(String topicUrn) {
2
3 alarmTopicDao.deleteById(topicUrn);
4 //注意此处不是deleteByTopicUrn,也不用再AlarmTopicDao中声明
5 }
6
7 public AlarmTopicsEntity getTopicByTopicUrn(String topicUrn) {
8
9 return alarmTopicDao.findById(topicUrn).orElse(null);
10
11 }
findById(topicUrn)而非findByTopicUrn,
alarmTopicDao.findById(topicUrn)返回Optional结果,通常可以通过ispresent()方法判断是否有结果,也可以使用
JPA和Hibernate的关系
@id定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主键。
可选
strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM框架自动选择,根据数据库的 Identity 字段生成,根据数据库表的 Sequence 字段生成,以有根据一个额外的表生成主键,默认为 AUTO。
@Column
可选
@Column描述了数据库表中该字段的详细定义,这对于根据JPA注解生成数据库表结构的工具非常有作用。
name:表示数据库表中该字段的名称,默认情形属性名称一致。
nullable:表示该字段是否允许为null,默认为true。
unique:表示该字段是否是唯一标识,默认为false。
length:表示该字段的大小,仅对String类型的字段有效。