ben*_*rre 35 java orm hibernate jpa
我有一个关于Hibernate使用的简单问题.我一直通过注释类的字段以及通过在相应的bean上注释get方法,以两种方式之一看到人们使用JPA注释.
我的问题如下:注释字段和bean方法与JPA annoations(如@Id)之间是否存在差异.
例:
@Entity
public class User
{
**@ID**
private int id;
public int getId(){
return this.id;
}
public void setId(int id){
this.id=id;
}
}
Run Code Online (Sandbox Code Playgroud)
- - - - - -要么 - - - - - -
@Entity
public class User
{
private int id;
**@ID**
public int getId(){
return this.id;
}
public void setId(int id){
this.id=id;
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*rla 43
是的,如果你注释字段,Hibernate将使用字段访问来设置和获取这些字段.如果你注释方法,hibernate将使用getter和setter.Hibernate会根据@Id注释的位置选择访问方法,据我所知,你不能混用和匹配.如果您使用注释字段@Id,将忽略方法上的注释,反之亦然.您还可以使用类级别注释手动设置方法 @AccessType
在Hibernate注解参考指南,已被证明是这样的问题,一个非常有用的资源,并详细介绍访问类型如何向下级联层次.
小智 5
我的建议是对方法进行注释。通过这样做,您可以获得一点灵活性。例如,假设您有几个类:
AbstractEntityStringIdEntityAutoIdEntity AbstractEntity定义 id 字段/getter/setter。类StringIdEntity和AutoIdEntity继承自AbstractEntity,但使用不同的@Id策略。如果您对该字段进行注释,则不能将其从类更改为另一个类。
如果您注释方法,您标记getId()为@Transient/abstractinAbstractEntity然后在子类中,您只需覆盖该方法并应用您希望使用的策略。我曾经自己注释字段并遇到了这个问题,并决定我将始终注释前进的方法。
因此,即使您没有立即看到注释方法的好处,当您有如此多的类时,切换将成为一个绝对令人头疼的问题,这可能会变得很明显。
| 归档时间: |
|
| 查看次数: |
44128 次 |
| 最近记录: |