The Debugging Chronicles : "코드의 미학"

POJO란? 본문

Spring

POJO란?

sweetseonah1004 2024. 10. 7. 17:33

 

POJO
Plain OId java Object
VO Value Object  ==  DTO

"오래된 방식의 간단한 자바 객체"

 

간단하게 말해서 특정 프레임워크나 라이브러리에 종속되지 않는 순수한 자바 객체를 말한다.

POJO는 복잡한 상속 구조나 인터페이스를 요구하지 않고 간단한 getter/setter메서드와 

필드를 이용하여 객체의 상태를 관리하는 방식으로 코드를 작성하는 것을 의미한다.

 

POJO를 이용한 코드

public class Member {
    private int id;
    private String name;
    private String email;

    // 기본 생성자
    public Member() {}

    // 매개변수가 있는 생성자
    public Member(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    // Getter와 Setter
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

 

 

POJO를 무시한 코드

public class POJOClass extends UserService{

    private String name;
    private int age;

    @Override
    public List<User> findUsers() {
        return super.findUsers();
    }
}

 

Spring의 POJO 개념을 지킨 코드

public class POJOClass{

    @Autowired
    UserRepository userRepository;
    
    private String name;
    private int age;
    
    public void test(){
        userRepository.findAll();
    }
}

@autowired를 활용하여 의존성 주입을 하면

직접적으로 extends, implements를 하지 않아도 해당 클리스의 메소드에 접근할 수 있다.

이렇게 되면 당연히 POJO를 무시한 코드에 비해 많은 장점이 존재한다.

의존성 주입 덕분에, UserRepository의 내부 구현이 변경되어도 POJOClass의 코드를 수정할 필요가 없다.