【问题标题】:Do I have to have the word get and set in my Java class using Hibernate?我是否必须使用 Hibernate 在我的 Java 类中使用 get 和 set 这个词?
【发布时间】:2013-08-15 18:40:23
【问题描述】:

我见过的大多数例子都是this

private int productId;
private String proName;
private double price;

public void **set**ProductId(int productId)
{
    this.productId = productId;
}
public int **get**ProductId()
{
    return productId;
}

public void setProName(String proName)
{
    this.proName = proName;
}
public String getProName()
{
    return proName;
}

public void setPrice(double price)
{
    this.price = price;
}
public double getPrice()
{
    return price;
}

使用 Hibernate 时是否需要这种命名约定?

【问题讨论】:

  • 我不认为只要你把注解放在字段名上。不过我可能是错的。
  • 这是在 Javabean 规范中,所以即使不需要它我也会使用它,因为除了 Hibernate 之外的其他库会期望它符合标准。

标签: java hibernate


【解决方案1】:

这个命名约定最初是由Java Beans 引入的。属性的统一命名约定(getXXXsetXXX)允许运行时发现(和访问)框架的 java bean 的属性。 由于 Hibernate 可以使用反射来访问私有字段,正如 How can hibernate access a private field? 中所解释的那样,因此不必遵循此命名约定,但这是一个很好的做法。

【讨论】:

  • 但是 ;) 当你公开你的字段时,setter 和 getter 就不再需要了。然后你就失去了对 getter 和 setter 中的数据做某事的可能性。
【解决方案2】:

基于Hibernate 3.6 documentation:

如果这些类遵循一些简单的规则(也称为普通旧 Java 对象 (POJO) 编程模型),那么 Hibernate 效果最好。然而,这些规则都不是硬性要求。事实上,Hibernate 很少假设持久对象的性质。您可以用其他方式表达域模型(例如,使用 java.util.Map 实例树)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多