javax.persistence 字段、getter 或 setter 上的注释?

2024-01-26

我目前正在学习 Hibernate 和 Java Persistence API。

我有一个 @Entity 类,需要将注释应用于各个字段。我已经在下面的代码中包含了它们可以去的所有三个地方。

我应该将它们应用于字段本身、getter 还是 setter?这三个选项之间的语义差异(如果有)是什么?

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;

@Entity
@Table(name = "song")
public class Song { 
    // Annotations should only be applied to one of the below

    @Id 
    @Column(name="id", unique=true, nullable=false)
    private int    id;

    @Id
    @Column(name="id", unique=true, nullable=false)
    public int getId() {
        return id;
    }

    @Id
    @Column(name="id", unique=true, nullable=false)
    public void setId(int id) {
        this.id = id;
    }
}

你必须在 field 和 getter 之间做出选择。不支持 setter 上的注释。所有注释都应该在字段上,或者它们都应该在 getters 上:你不能混合使用这两种方法(除非你使用@AccessType http://docs.oracle.com/javaee/6/api/javax/persistence/AccessType.html注解)。

至于哪一种更可取,答案是:视情况而定。我更喜欢现场访问,但是 YMMV,并且在某些情况下更喜欢属性访问。看Hibernate Annotations - 字段访问和属性访问哪个更好? https://stackoverflow.com/questions/594597/hibernate-annotations-which-is-better-field-or-property-access.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javax.persistence 字段、getter 或 setter 上的注释? 的相关文章

随机推荐