Hibernate如何避免使用GenerationType.AUTO生成主键?


在MySQL中,TABLE生成器是您总是希望避免的。永远不要用它!
在MySQL和Hibernate 5中,GenerationType.AUTO生成器类型将导致使用TABLE生成器。这增加了显着的性能损失。使用GenerationType.IDENTITY或原生生成器。

要点:
- 使用GenerationType.IDENTITY而不是GenerationType.AUTO
- 使用 此源代码中举例说明的原生生成器

输出结果:

推荐做法:

@Entity
public class UserGood implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="native")
    @GenericGenerator(name="native", strategy="native")
    private Long id;

不好的做法:

@Entity
public class UserBad implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)