Java / Lombok Interview questions
Why can @Data be risky on JPA entity classes?
@Data bundles @EqualsAndHashCode and @ToString across every field,
which interacts poorly with several JPA/Hibernate specifics: lazy-loaded associations can trigger unwanted
database queries the moment toString() or equals() touches them, and including a
mutable, database-generated id field in equals/hashCode can break
collection behavior for entities that are added to a Set before being persisted (when the id is
still null) and then persisted afterward (when it gets a real value).
@Entity @Data // risky: consider a more targeted set of annotations instead public class Order { @Id private Long id; @OneToMany private List<OrderItem> items; // lazy loading + toString/equals = trouble }
A more deliberate approach on entities is usually: exclude lazy associations from
@ToString/@EqualsAndHashCode, and base equality on a stable business key rather than
the mutable, sometimes-null database id, rather than reaching for the all-in-one @Data bundle by
default.
More Related questions...