注解@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)有什么用? 为什么生成types是身份?

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) 

为什么我们使用这个注释? 我需要知道这是否自动增加我的表ID值。 (GenerationType.IDENTITY)有什么其他types什么实际上发生在我们使用这个注释

 public class Author extends Domain { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Basic(optional = false) @Column(name = "name") private String name; @Column(name = "address") private String address; @OneToMany(cascade = CascadeType.ALL, mappedBy = "authorId") private List<Book> bookList; public Author() { setServiceClassName("wawo.tutorial.service.admin.AuthorService"); } } 

*是否需要扩展领域抽象类?有什么用?

让我回答这个问题:
首先,使用注释作为我们的configuration方法只是一个方便的方法,而不是应付无尽的XMLconfiguration文件。

@Id注解是从javax.persistence.Idinheritance的,表示下面的成员字段是当前实体的主键。 因此,你的Hibernate和Spring框架以及你可以做一些基于这个注释的reflect作品。 详情请查看javadoc的Id

@GeneratedValue注释用于configuration指定列(字段)的增量方式。 例如,当使用Mysql ,可以在表的定义中指定auto_increment使其自增量,然后使用

 @GeneratedValue(strategy = GenerationType.IDENTITY) 

在Java代码中表示你也承认使用这个数据库服务器端策略。 此外,您可以更改此注释中的值以适应不同的要求。

1.定义数据库中的序列

例如,Oracle必须使用sequence作为增量方法,比方说我们在Oracle中创build一个序列:

 create sequence oracle_seq; 

2.参考数据库的顺序

现在我们在数据库中有了序列,但是我们需要使用@SequenceGenerator来build立Java和DB之间的关系:

 @SequenceGenerator(name="seq",sequenceName="oracle_seq") 

sequenceName是Oracle中sequenceName的真实名称, name是你想在Java中调用它的name 。 如果不同于name ,则需要指定sequenceName ,否则使用name 。 我通常忽略sequenceName来节省时间。

3.在Java中使用顺序

最后,现在是在Java中使用这个序列的时候了。 只需添加@GeneratedValue

 @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq") 

generator字段是指要使用哪个序列生成器。 请注意,它不是DB中的真实序列名称,而是您在SequenceGenerator name字段中指定的name

4.完成

所以完整的版本应该是这样的:

 public class MyTable { @Id @SequenceGenerator(name="seq",sequenceName="oracle_seq") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq") private Integer pid; } 

现在开始使用这些注释来简化JavaWeb开发。

在一个对象关系映射上下文中,每个对象都需要有一个唯一的标识符。 您使用@Id注释来指定实体的主键。

@GeneratedValue注释用于指定如何生成主键。 在你的例子中,你正在使用一个Identity策略

指示持久性提供程序必须为使用数据库标识列的实体分配主键。

还有其他的策略,你可以在这里看到更多。