如何减少Hibernate类中的重复代码?

时间:2014-11-13 17:08:16

标签: java hibernate

此时我们在项目中有几个Hibernate对象类,如下所示:

package org.carl.recordkeeper.entity;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;

public class BstRecordPK implements Serializable
{
// ------------------------------ FIELDS ------------------------------

private String bst;

private Integer instbit;

// --------------------- GETTER / SETTER METHODS ---------------------

@Id
@Column( name = "BST", nullable = false, length = 1 )
public String getBst()
{
    return bst;
}

public void setBst( String bst )
{
    this.bst = bst;
}

@Id
@Column( name = "INSTBIT", nullable = false )
public Integer getInstbit()
{
    return instbit;
}

public void setInstbit( Integer instbit )
{
    this.instbit = instbit;
}

// ------------------------ CANONICAL METHODS ------------------------

@Override
public boolean equals( Object o )
{
    if ( this == o )
    {
        return true;
    }
    if ( o == null || getClass() != o.getClass() )
    {
        return false;
    }

    BstRecordPK that = (BstRecordPK)o;

    if ( bst != null ? !bst.equals( that.bst ) : that.bst != null )
    {
        return false;
    }
    if ( instbit != null ? !instbit.equals( that.instbit ) : that.instbit != null )
    {
        return false;
    }

    return true;
}

@Override
public int hashCode()
{
    int result = instbit != null ? instbit.hashCode() : 0;
    result = 31 * result + ( bst != null ? bst.hashCode() : 0 );
    return result;
}
}

我们还有一个重复的代码检查器,当我们创建一个新的Hibernate类时它会继续运行,因为其中一个get / set对匹配另一个类(具有外键的数据库表)中的内容。有没有办法减少重复的代码,仍然保持Hibernate快乐?我已经考虑过使用基类,但是并不是说在所有数据库表中都使用了一个列。

1 个答案:

答案 0 :(得分:1)

代码重复警告,用于显示通常使用copy& amp;糊。复制代码会降低可维护性并可能导致安全问题。

如果sonarqube向我显示重复警告,我会仔细查看fode的部分并决定,如果这是误报,即使retrn类型不同,许多pojos会共享一些代码,例如getId() { return id; }或者我有些程序员刚刚重新实现或复制了一个部分。

我强烈建议不要减少你的实体。这只会导致诽谤。

但是,如果您真的对代码出版检测限制感到烦恼,可以尝试使用@MappedSuperClass