Hibernate建议为持久化类定义一个标识属性,用于惟一的标识某个持久化实列,而标识属性须要映射到底层数据表的主键。标识属性经过<id>元素来指定。<id>的name元素指定该实列化类中的属性名称。<id>其余属性以下:算法
1)type:指定该标识属性的数据类型,该类型能够是Hibernate内建类型,也能够是JAVA类型,若是使用JAVA类型则须要使用全限定类名。该类型可选,若是没有指定,Hibernate会自行判断该属性的类型。数据库
2)column:设置标识属性所映射的数据列的列名。默认状况下,该列的列名与该标识属性的属性名相同。网络
3) unsaved-value:指定当某个实例刚刚建立、还未保存时的标识属性值。ide
4)assess:指定Hibernate访问该标识属性的访问策略,默认为property。ui
其中主键生成器有以下几种:对象
1)increment:为long、short或者int类型主键生成惟一标识。只有在没有其余进程往同一张表中插入数据时才能使用。在集群中不要使用。进程
2)identity:主键自增类型,返回的标识属性是long、short或int类型的。rem
3)sequence:主键经过序列方式增加,返回的标识属性是long、short或int类型的。字符串
4)hilo:使用一个高、低位算法高效的生成是long、short或int类型的标识符。it
5)uuid:使用网络中的惟一标识符来生成主键。
UUID算法会根据IP地址,JVM的启动时间(精确到1/4秒)、系统时间和一个计数器值(在JVM中惟一)来生成一位32位的字符串,由于一般UUID生成的字符串在一个网络中是惟一的。
6)native:根据底层数据库的能力选择identity、sequence或者hilo中的一个。
7)assigned:让应用程序在save()以前为对象分配一个标识符。
8)select:经过数据库触发器选择某个惟一主键的行,并返回其主键值做为标识属性值。