MySQL和Hibernate/JPA如何避免使用AUTO Generator型別?
在MySQL中,TABLE生成器是您總是希望避免的。 永遠不要 用它!
在MySQL和Hibernate 5中,GenerationType.AUTO生成器型別將導致使用TABLE生成器。這增加了顯著的效能損失。使用GenerationType.IDENTITY或原生生成器。
要點:
- 使用GenerationType.IDENTITY而不是GenerationType.AUTO
- 使用 此原始碼中舉例說明的原生生成器
輸出結果:
推薦做法:
@Entity <b>public</b> <b>class</b> UserGood implements Serializable { <b>private</b> <b>static</b> <b>final</b> <b>long</b> serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO, generator=<font>"native"</font><font>) @GenericGenerator(name=</font><font>"native"</font><font>, strategy=</font><font>"native"</font><font>) <b>private</b> Long id; </font>
不好的做法:
@Entity <b>public</b> <b>class</b> UserBad implements Serializable { <b>private</b> <b>static</b> <b>final</b> <b>long</b> serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO)