dentity在Java里是什么意思_注释@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)的用途是什么?为什么世代类型是身份?...
小編典典
讓我回答這個(gè)問(wèn)題:
首先,使用注釋作為我們的configure方法只是一種便捷的方法,而不是應(yīng)對(duì)無(wú)休止的XML配置文件。
的@Id注釋是繼承自javax.persistence.Id,指示構(gòu)件字段下面是當(dāng)前實(shí)體的主鍵。因此,您的Hibernate和spring框架以及您可以reflect基于此注釋進(jìn)行一些工作。有關(guān)詳細(xì)信息,請(qǐng)檢查javadoc以獲取ID
的@GeneratedValue注釋是配置指定列(字段)的增量的方式。例如,當(dāng)使用時(shí)Mysql,您可以auto_increment在表的定義中指定使其自增,然后使用
@GeneratedValue(strategy = GenerationType.IDENTITY)
在Java代碼中表示您也已確認(rèn)使用此數(shù)據(jù)庫(kù)服務(wù)器端策略。另外,您可以更改此批注中的值以適合不同的要求。
1.在數(shù)據(jù)庫(kù)中定義序列
例如,Oracle必須使用sequence增量方法,例如我們?cè)贠racle中創(chuàng)建一個(gè)序列:
create sequence oracle_seq;
2.參考數(shù)據(jù)庫(kù)順序
現(xiàn)在我們已經(jīng)在數(shù)據(jù)庫(kù)中有了序列,但是我們需要使用@SequenceGenerator以下方法在Java和DB之間建立關(guān)系:
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
sequenceName是Oracle中序列的真實(shí)名稱,name是您要在Java中稱呼它的名稱。您需要指定sequenceName是否不同于name,否則只需使用即可name。我通常會(huì)忽略sequenceName以節(jié)省時(shí)間。
3.在Java中使用序列
最后,是時(shí)候在Java中使用此序列了。只需添加@GeneratedValue:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
該generator字段指您要使用的序列生成器。請(qǐng)注意,它不是數(shù)據(jù)庫(kù)中的真實(shí)序列名稱,而是您在中的name字段中指定的名稱SequenceGenerator。
4.完成
因此完整的版本應(yīng)如下所示:
public class MyTable
{
@Id
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
private Integer pid;
}
現(xiàn)在開(kāi)始使用這些注釋來(lái)簡(jiǎn)化JavaWeb開(kāi)發(fā)。
2020-06-20
總結(jié)
以上是生活随笔為你收集整理的dentity在Java里是什么意思_注释@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)的用途是什么?为什么世代类型是身份?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。