首页>Program>source

我有一个关于Hibernate使用的简单问题.通过注释类的字段以及注释对应的bean的get方法,我不断看到人们以两种方式之一使用JPA注释。

我的问题如下:使用JPA注释(例如@Id),注释字段和bean方法之间是否有区别。

示例:

@Entity
public class User
{
**@ID**
private int id;
public int getId(){
return this.id;
}
public void setId(int id){
this.id=id;
}
}

-----------或-----------

@Entity
public class User
{

private int id;
**@ID**
public int getId(){
return this.id;
}
public void setId(int id){
this.id=id;
}
}
最新回答
  • 2021-1-11
    1 #

    是的,我相信您想搜索字段访问权限和属性访问权限:

    休眠注释-字段或属性访问哪个更好?

    Spring首选项是字段访问.是我遵循的。

  • 2021-1-11
    2 #

    是的,如果您注释字段,则Hibernate将使用字段访问来设置和获取这些字段.如果您对方法进行注释,休眠将使用getter和setter方法. Hibernate将根据 @Id的位置选择访问方法 注解,据我所知,您无法混搭.如果您用 @Id注释字段 ,方法注释将被忽略,反之亦然.您还可以使用类级别注释 @AccessType手动设置方法

    事实证明,《 Hibernate Annotations参考指南》是一个非常有用的资源,它详细说明了访问类型如何沿层次结构向下层叠。

  • 2021-1-11
    3 #

    我的建议是对方法进行注释.这样,您将获得一点灵活性.例如,假设您有几个Class程:

      AbstractEntity

      StringIdEntity

      AutoIdEntity

      AbstractEntity 定义id字段/ getter / setter.类 StringIdEntityAutoIdEntityAbstractEntity继承 ,但请使用其他 @Id 策略.如果注释该字段,则不能将其从类更改为另一个.

      如果您注释方法,则将 getId()标记为 作为 @Transient/abstractAbstractEntity 然后在子类中,您只需覆盖方法并应用您希望使用的策略.我曾经自己对字段进行注释,并遇到了这种情况,并决定我将始终对前进的方法进行注释.

      因此,即使您没有立即看到使用注释方法的好处,但是当您拥有太多的类时,转换可能会变得很头疼。

  • 2021-1-11
    4 #

    您为什么要注释访问器? 它看起来很杂乱,很难维护.现在,我必须遍历全班,以了解如何应用JPA或Hibernate.当使用某些用于Eclipse的Hibernate代码生成插件时,这是默认设置,它会驱动我疯狂。

    更不用说我们使用访问器的另一个原因是将逻辑添加到属性访问或引用父对象或其他对象,而这些对象与所述注释不能很好地融合在一起。

  • 2021-1-11
    5 #

    有很多讨论可以给出 在属性上使用FIELD的优势(请参阅-http://java.dzone.com/tips/12-feb-jpa-20-why-accesstype).甚至spring框架也建议在属性上使用FIELD(请参阅-http://static.springsource.org/spring/docs/2.5.x/reference/orm.html)。 我发现FIELD的方法更加简洁,这不仅是因为您没有被迫实现setter / getter,而且可以在类中使用自定义类型setter / getter。 因此,更好的封装和更干净的类.在性能方面,FIELD在PROPERTy方面略有优势,但可以忽略不计。

    在一行中使用FIELD代替PROPERTy.如果您确实需要,请使用属性.

  • c#:配置JSONNET以忽略DataContract / DataMember属性
  • encoding:MIME编码的带引号的可print文本中的" = C2 = A0"是什么?