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