🧐 POJO (Plain Old Java Object) μ•Œμ•„λ³΄κΈ°

1,009 단어·3 뢄·원문(.md)

κ°œμš” #

POJOλž€ λ¬΄μ—‡μΌκΉŒ? μ˜€λŠ˜μ€ 무엇을 κ³΅λΆ€ν• κΉŒ ν•˜λ©° μ£Όμ œλ“€μ„ μ°Ύκ³ μžˆμ—ˆλŠ”λ°

POJOλž€κ²Œ λˆˆμ— λ³΄μ˜€λ‹€. λ­”κ°€ 이름이 κ·€μ—¬μ›Œλ³΄μ΄κΈ°λ„ν•˜κ³  κ·Έλž˜μ„œ 였늘 ν•œλ²ˆ 곡뢀해보겠닀.

POJO #

POJO(Plain Old Java Ovject) 말 κ·ΈλŒ€λ‘œ ν•΄μ„ν•˜λ©΄ 였래된 λ°©μ‹μ˜ κ°„λ‹¨ν•œ μžλ°” μ˜€λΈŒμ νŠΈλΌλŠ” 말이닀.

였래된 λ°©μ‹μ˜ κ°„λ‹¨ν•œ 였브젝트λ₯Ό 쑰금 더 ν’€μ–΄μ„œ λ§ν•΄λ³΄μžλ©΄ νŠΉμ • κΈ°μˆ μ— μ’…μ†λ˜μ–΄ λ™μž‘ν•˜λŠ” 것이 μ•„λ‹Œ μˆœμˆ˜ν•œ μžλ°” 객체 κ·Έ 자체λ₯Ό λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

@Getter
@Setter
public class UserDto{

    private String name;
    private String email;
    private String password;
}

예λ₯Ό λ“€μ–΄ μœ„ κ°μ²΄λŠ” 순수 μžλ°” κΈ°λŠ₯인 Getter, Setter만 κ°€μ§€κ³  μžˆλ‹€.

νŠΉμ • κΈ°μˆ μ— μ’…μ†λ˜μ§€μ•Šκ³  μˆœμˆ˜ν•œ μžλ°” 객체기 λ•Œλ¬Έμ— POJO라고 ν•  수 μžˆλ‹€.

λ°˜λŒ€μ˜ μ˜ˆμ‹œλŠ”

public class WindowExam extends WindowAdapter{
	
    @Override
    public void windowColsing(WindowEvent e){
    	System.exit(0);
    }
}

이 처럼 Window κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ WindowAdapter 클래슀λ₯Ό μƒμ†λ°›μ•˜λ‹€.

μ΄λ ‡κ²Œ 되면 λ‹€λ₯Έ μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜κ³ μž ν•  λ•Œ λ§Žμ€ μ–‘μ˜ μ½”λ“œλ₯Ό λ¦¬νŒ©ν„°λ§ ν•΄μ•Όν•˜λŠ” λ¬Έμ œλ„ μžˆλ‹€.

이처럼 νŠΉμ • 기술과 ν™˜κ²½μ— μ’…μ†λ˜μ–΄ μ˜μ‘΄ν•˜λ©΄ μ½”λ“œμ˜ 가독성 뿐만 μ•„λ‹ˆλΌ μœ μ§€λ³΄μˆ˜, ν™•μž₯성에도 어렀움이 μƒκΉλ‹ˆλ‹€.

μ΄λŸ¬ν•œ 객체지ν–₯의 μž₯점을 μžƒμ–΄λ²„λ¦° μžλ°”λ₯Ό λ˜μ‚΄λ¦¬κΈ° μœ„ν•΄ POJOλΌλŠ” κ°œλ…μ΄ μƒκ²ΌμŠ΅λ‹ˆλ‹€.

POJOλ₯Ό μ§€ν–₯ν•˜λŠ” 이유? #

μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬ μ „μ—λŠ” μ—”ν„°ν”„λΌμ΄μ¦ˆ 기술이 μžˆμ—ˆκ³  κ·Έ κΈ°μˆ μ„ μ§μ ‘μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 객체λ₯Ό μ„€κ³„ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€. 그리고 μ΄λŸ¬ν•œ 개발 방식이 λ§Œμ—°ν•˜κ³  μžˆμ—ˆκ³  νŠΉμ • 기술과 ν™˜κ²½μ—Β μ’…μ†λ˜μ–΄ μ˜μ‘΄ν•˜κ²Œ 된 μžλ°” μ½”λ“œλŠ” 가독성이 λ–¨μ–΄μ Έ μœ μ§€λ³΄μˆ˜μ˜ 어렀움이 μƒκ²ΌμŠ΅λ‹ˆλ‹€. λ˜ν•œ νŠΉμ • κΈ°μˆ μ— 클래슀λ₯Ό μƒμ†λ°›κ±°λ‚˜ 직접 μ˜μ‘΄ν•˜κ²Œ λ˜μ–΄ ν™•μž₯성이 맀우 λ–¨μ–΄μ§€λŠ” 단점도 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 말은 객체지ν–₯의 화신인 μžλ°”κ°€ 객체지ν–₯ μ„€κ³„μ˜ μž₯점듀을 μžƒμ€ 것 μž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ POJOλΌλŠ” κ°œλ…μ΄ λ“±μž₯ν–ˆμŠ΅λ‹ˆλ‹€. 본래 μžλ°” μž₯점을 μ‚΄λ¦¬λŠ” 였래된 λ°©μ‹μ˜ μˆœμˆ˜ν•œ μžλ°” 객체 λ§μž…λ‹ˆλ‹€.

POJO의 기반의 μ½”λ“œμΈμ§€ ν™•μΈν•˜λŠ” 방법 #

  1. νŠΉμ • κ·œμ•½μ΄λ‚˜ ν™˜κ²½μ— μ’…μ†λ˜μ–΄ μžˆμ§€λŠ” μ•ŠλŠ”κ°€?

  2. 객체지ν–₯적으둜 μ„€κ³„λ˜μ—ˆλŠ”κ°€?

  3. ν…ŒμŠ€νŠΈκ°€ μš©μ΄ν•œκ°€?

ν† λΉ„μ˜ μŠ€ν”„λ§μ—μ„œλŠ” μ§„μ •ν•œ POJOλ₯Ό μ•„λž˜μ™€ 같이 μ •μ˜ν–ˆλ‹€.

그럼 νŠΉμ • κΈ°μˆ κ·œμ•½κ³Ό ν™˜κ²½μ— μ’…μ†λ˜μ§€ μ•ŠμœΌλ©΄ λͺ¨λ‘ POJO라고 말할 수 μžˆλŠ”κ°€? λ§Žμ€ κ°œλ°œμžκ°€ 크게 μ˜€ν•΄ν•˜λŠ” 것 μ€‘μ˜ ν•˜λ‚˜κ°€ λ°”λ‘œ 이것이닀. ...(μ€‘λž΅)...
μ§„μ •ν•œ POJOλž€ 객체지ν–₯적인 원리에 μΆ©μ‹€ν•˜λ©΄μ„œ, ν™˜κ²½κ³Ό κΈ°μˆ μ— μ’…μ†λ˜μ§€ μ•Šκ³  ν•„μš”μ— 따라 μž¬ν™œμš©λ  수 μžˆλŠ” λ°©μ‹μœΌλ‘œ μ„€κ³„λœ 였브젝트λ₯Ό λ§ν•œλ‹€

POJO Framework #

POJO ν”„λ‘œκ·Έλž˜λ°μ΄ κ°€λŠ₯ν•˜λ„λ‘ 기술적인 κΈ°λ°˜μ„ μ œκ³΅ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬λŠ” λŒ€ν‘œμ μœΌλ‘œ 두가지가 μžˆλŠ”λ° 그게 λ°”λ‘œ μš°λ¦¬μ—κ²Œ 제일 μ΅μˆ™ν•œΒ Spring Framework, Hibernate이닀.

POJO μž₯점 #

  1. μ½”λ“œκ°€ 깔끔해진닀.

  2. μžλ™ν™”λœ ν…ŒμŠ€νŠΈμ— μœ λ¦¬ν•˜λ‹€.

  3. 객체지ν–₯적인 섀계λ₯Ό 자유둭게 μ μš©ν•  수 μžˆλ‹€.

Back-End/JAVA/pojo.md