@Id
    private int id;
    private String name;
    private String wifeName;
    private Date birthDate;
    //Title是Enum(枚举)类型
    private Title  title;
 ***********************************   

    @Id
    public int getId() {
        return id;
    }

在hibernate里,映射@Id可以放在成员变量上,完全可以。

实际工作中,有人放在成员变量上,看起来更集中,更清晰。但是这样放,已经破坏了java的面向对象的的封装性。因为平时我们写javaBean时,属性field都是private的,私有的。

如果在私有的上写上注解,这时相当于hibernate可以直接访问你的私有的成员变量,java的反射机制就能够做到。但是从设计的角度绝不推荐这样干,因为本身我们把他设成私有的就是不希望别人直接就伸进我们兜里来拿我们这些私有的东西。比如,本来你把你家的存折放进你兜里,加了把锁,结果hibernate二话不说直接把手伸进你兜里把存折拿出来了,不合适,所以应该建议把注解写在get方法上。不应该直接去访问private变量,更别提hibernate直接去修改你的私有变量。这样就更不爽了。直接二话不说,把你存折原来有10000,直接给你改成1块。

而且要保持属性名和set、get方法一致。

 

 欢迎关注个人公众号一起交流学习: