📜  Hibernate,我们如何将主键值生成逻辑定义为自动? (1)

📅  最后修改于: 2023-12-03 15:15:31.634000             🧑  作者: Mango

Hibernate提供了多种主键生成策略,包括自动、手工、序列、表格等方式。在实际开发中,自动主键生成方式是最受欢迎的方式之一,因为它可以避免手工维护主键值的麻烦,并且能够在并发操作中保证主键的唯一性。

首先,在Entity类中通过@Id注解来标识该属性为主键,并且通过@GeneratedValue注解来指定主键生成策略为自动:

@Entity
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  private String name;

  // getters and setters
}

这里的strategy属性指定了主键生成策略为自动,Hibernate会根据数据库的不同自动选择适合数据库的主键生成策略,例如MySQL使用的是自增长主键,Oracle使用的是序列。

除了strategy属性外,@GeneratedValue注解还有其他属性可供设置,包括generator、initialValue、allocationSize等,用于定制化主键生成策略的行为,详细内容可以参考Hibernate文档。

另外,还可以通过在XML文件中定义主键生成策略的方式来实现,示例代码如下:

<hibernate-mapping>
  <class name="User">
    <id name="id" type="java.lang.Long">
      <generator class="native"/>
    </id>
    <property name="name" type="java.lang.String"/>
  </class>
</hibernate-mapping>

这里的generator属性指定了主键生成策略为native,同样会根据不同的数据库自动选择适合的主键生成方式。

总之,Hibernate提供了丰富的主键生成方式,无论是通过注解还是XML配置方式,都可以方便快捷地定义自动主键生成策略。