实体相关

3 阅读1分钟

主键

自增id or 随机id

内部系统 / 单库单表 → 用自增 ID
对外暴露 / 分布式 / 安全敏感 → 用随机 ID(UUID / Snowflake)

自增id

  • 优点:简单,性能最好,索引友好,可读性强
  • 缺点:对外接口会暴露业务规模,分库分表时会有冲突

随机id/分布式id:

常见类型:

类型示例
UUID550e8400-e29b-41d4-a716-446655440000
Snowflake185291834918273024
自研ID时间戳 + 随机数

属性

数值

Java 类型JPA 默认映射MySQL 常见类型说明
LongBIGINTBIGINT主键首选
IntegerINTEGERINT普通整数
ShortSMALLINTSMALLINT状态码
ByteTINYINTTINYINT布尔 / 小枚举
BigDecimalNUMERICDECIMAL(p,s)金额 / 精确计算(推荐)
DoubleDOUBLEDOUBLE近似值,不推荐金额
FloatFLOATFLOAT精度更差

字符串&文本类型

Java 类型JPA 注解MySQL 类型使用场景
StringVARCHAR(255)标题 / 名称
String@Column(length=50)VARCHAR(50)短文本
String@LobTEXT正文 / 大文本
String@Lob + columnDefinition="LONGTEXT"LONGTEXT超长正文

布尔类型

Java 类型JPA 映射MySQL 类型说明
BooleanBOOLEANTINYINT(1)推荐
booleanBOOLEANTINYINT(1)不可为 null

时间/日期类型

Java 类型JPAMySQL 类型推荐度
LocalDateTimeTIMESTAMPDATETIME⭐⭐⭐⭐⭐
LocalDateDATEDATE⭐⭐⭐⭐
LocalTimeTIMETIME⭐⭐⭐
Date(旧)TIMESTAMPDATETIME❌ 不推荐

枚举类型

Java 枚举写法SQL 类型风险
@Enumerated(ORDINAL)INT❌ 顺序变就炸
@Enumerated(STRING)VARCHAR(20)✅ 推荐