Явно конструктор с использованием Lombok?

Я ' m переписал какой-то беспорядочный код, который управляет базой данных, и увидел, что исходный программист создал класс, сопоставленный с базой данных, следующим образом:

(Я удалил ненужный код, который не имеет смысла в этом вопросе)

@Entity
@Data
@EqualsAndHashCode(callSuper = false, of = { "accessionCode", "header", "date" })
@SuppressWarnings("PMD.UnusedPrivateField")
public class PDBEntry implements Serializable {
    @Id
    @NaturalId
    @NotEmpty
    @Length(max = 4)
    private String accessionCode;

    @NaturalId
    @NotEmpty
    private Date date;

    @NaturalId
    // We allow for the header to be 'null'
    private String header;

    private Boolean isValidDssp;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastUpdated = new Date(System.currentTimeMillis());

    protected PDBEntry(){}

    public PDBEntry(String accessionCode, String header, Date date){
        this.accessionCode = accessionCode;
        this.header = header;
        this.date = date;
    }
}

Я все еще остаюсь новичок в Hibernate и использующий Lombok, но разве это не сделает то же самое, и не будет ли Lombok автоматически создавать для вас необходимый конструктор?

@Entity
@Data
@SuppressWarnings("PMD.UnusedPrivateField")
public class PDBEntry implements Serializable {
    @Id
    @NaturalId
    @NotEmpty
    @NonNull
    @Length(max = 4)
    private String accessionCode;

    @NaturalId
    @NotEmpty
    @NonNull
    private Date date;

    @NaturalId
    // We allow for the header to be 'null'
    private String header;

    private Boolean isValidDssp;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastUpdated = new Date(System.currentTimeMillis());
}

Кроме того, исходный программист этого кода говорит, что он позволяет заголовку быть ' null ', но он явно создал конструктор, которому требуется значение для заголовка. Я что-то упускаю или это немного противоречиво?

16
задан FinalArt2005 5 October 2010 в 14:05
поделиться