wKioL1nDE3eg0LuhAAIg35ZaB_A260.png

Student s1=(Student)session.get(Student.class, Long.valueOf(1));

    Student s2=(Student)session.get(Student.class, Long.valueOf(2));

    Student s3=(Student)session.get(Student.class, Long.valueOf(1));

    System.out.println(s1==s2); //false

    System.out.println(s1==s3); //true

如上图中的(OID)对象标识符 其中查询的语句在session中会有缓存所以在执行的时候只有两条sql


wKiom1nDE4bC0SLkAACFJuXGdJg762.png

1,increment 由Hibernate 自动以递增的方式生成标识符,适用代理主键;

2,identity 由底层数据库生成标识符;适用代理主键;

3,sequcence 由Hibernate 根据底层数据库的序列来生成标识符;适用代理主键;

4,hilo Hibernate 根据high/low 算法来生成标识符。适用代理主键

5,native 根据底层数据库对自动生成标识符的支持能力, 来选择identity,sequence 或hilo;适用代理主键;