본문 바로가기
카테고리 없음

[BeanUtils.copyProperties]를 활용한 효율적인 객체 데이터 복사 방법

by Teddy Hong 2025. 4. 5.
반응형

Spring에서 BeanUtils.copyProperties를 사용하여 객체 간 데이터 복사를 간편하게 수행하는 방법을 소개합니다.
DTO와 Entity 간의 변환을 쉽게 처리할 수 있는 유용한 팁을 제공합니다.
많이 알려져 있는 ModelMapper가 있는데 BeanUtils.copyProperties 는 어떻게 사용하는지 같이 알아보아요.

BeanUtils의 copyProperties 사용법
BeanUtils의 copyProperties 사용법

 

1. BeanUtils.copyProperties란?

BeanUtils.copyProperties는 Spring Framework에서 제공하는 유틸리티 메서드로, 객체 간의 속성을 복사하는 기능을 제공합니다. 주로 DTO(Data Transfer Object)Entity 간 데이터 전송을 간편하게 처리할 수 있도록 도와줍니다. 복잡한 복사 로직을 줄이고, 데이터 전송을 빠르고 효율적으로 처리할 수 있게 해 줍니다.

이점: 간결한 코드, 성능 최적화, 유지보수성 향상

 

2. BeanUtils.copyProperties 사용 방법

    import org.springframework.beans.BeanUtils;

    public class Example {
        public static void main(String[] args) {
            SourceDTO source = new SourceDTO();
            source.setName("John");
            source.setAge(30);

            TargetDTO target = new TargetDTO();
            BeanUtils.copyProperties(source, target);

            System.out.println("Target Name: " + target.getName());
            System.out.println("Target Age: " + target.getAge());
        }
    }
    

위 예시에서 SourceDTO 객체의 데이터를 TargetDTO 객체로 복사하는 과정입니다.

 

3. BeanUtils.copyProperties의 특징과 제한 사항

3.1 속성명이 동일해야 한다

BeanUtils.copyProperties는 속성명이 동일한 경우에만 복사 작업을 수행합니다.

3.2 컬렉션 처리 제한

BeanUtils.copyProperties는 단순한 객체 복사에는 유용하지만, 컬렉션을 복사할 때는 적합하지 않습니다.

 

4. 실전 예제: DTO와 Entity 간 데이터 전송

    @Entity
    public class UserEntity {
        private String name;
        private int age;
        private String email;

        // Getter, Setter
    }

    public class UserDTO {
        private String name;
        private int age;

        // Getter, Setter
    }

    @Service
    public class UserService {
        public UserDTO convertToDTO(UserEntity userEntity) {
            UserDTO userDTO = new UserDTO();
            BeanUtils.copyProperties(userEntity, userDTO);
            return userDTO;
        }
    }
    

 

5. BeanUtils.copyProperties의 대안: ModelMapper와 MapStruct

5.1 ModelMapper

ModelMapper는 객체 간 변환을 자동으로 처리하는 라이브러리로 복잡한 객체 변환에도 효과적입니다.

5.2 MapStruct

MapStruct는 컴파일 타임에 매핑 코드를 생성하는 라이브러리로 성능이 뛰어나고 타입 안전성을 제공합니다.

 

6. 결론

BeanUtils.copyProperties는 DTO와 Entity 간의 데이터 전송을 간단하고 효율적으로 처리할 수 있는 유용한 메서드입니다. 하지만 컬렉션이나 복잡한 객체 변환이 필요할 경우 ModelMapper 또는 MapStruct와 같은 다른 라이브러리를 고려하는 것이 좋습니다.

관련 글 추천

 

 

 

반응형