1. 특징
    1. Getter/Setter 자동 생성

      1. 클래스의 모든 필드에 대해 getX(), setX() 메서드를 자동으로 생성합니다.
    2. toString() 자동 생성

      1. 모든 필드를 포함한 toString() 메서드를 만들어서 디버깅 시 객체 내용을 쉽게 확인할 수 있습니다.
    3. equals() / hashCode() 자동 생성

      1. 객체 비교나 컬렉션(HashSet, HashMap 등)에서 필요한 equals()와 hashCode()를 자동으로 구현합니다.
    4. RequiredArgsConstructor 생성

      1. final 이나 @NonNull 필드만 포함한 생성자를 만들어줍니다.
      import lombok.Data;
      
      @Data
      public class User {
          private String id;
          private String name;
          private String email;
      }
      
      
      1. 위 클래스는 컴파일 시 다음과 같은 메서드가 자동으로 생성됩니다.
        1. getId(), setId(String id)
        2. getName(), setName(String name)
        3. getEmail(), setEmail(String email)
        4. toString()
        5. equals() / hashCode()
        6. User(String id, String name, String email) 생성자는 final/NonNull 필드가 있으면 포함
      2. 주의점
        1. 모든 필드에 getter/setter가 필요하지 않을 때는 @Getter / @Setter를 개별적으로 사용하는 것이 더 안전합니다.
        2. 엔티티 클래스에서는 @Data사용 시 equals / hashCode가 ID필드를 기준으로 안전하게 생성되는지 확인해야 합니다.