问答详情
源自:3-1 开发环境搭建

关注注解在方法上和注解在属性上的异同。

@老师,请教一个问题: @Column(length = 20)    public String getName() {        return name;    } 修改默认的大小时,我第一次将@Id//主键是id    @GeneratedValue //id自增 配置在属性上,没有执行,再改到方法上注解,就OK了。注解方法和注解属性有什么异同,底层的实现原理都是一样的嘛?

提问者:Mr_Qiao93 2017-08-18 14:33

个回答

  • 邵元斌
    2017-11-08 08:53:31

    两者底层的实现原理是不一样的,注解写在属性上,是通过反射对属性值强行访问,因为属性往往是私有的,这样写就破坏了java的封装性原则,你在属性上写的private就失去了意义,而且注解直接写在属性上,一些数据内容较多的字段,或者外键约束等复杂字段上,会对你的表的构建有所影响。而写在方法上,底层是通过反射正常调用set或个get方法,这样一般不会出现意外情况的。所以我建议你把注解写在方法上!

  • Mr_Qiao93
    2017-08-20 11:40:28

    OK,thx


  • townof1997
    2017-08-18 17:15:37

    底层的原理是一样的,在属性上没有执行可能是底层的没有对属性设置而对方法设置了该注解的效果;