[Spring] 좋은 객체 지향 프로그래밍이란?
·
Study/Spring
객체 지향 객체 지향의 특징 추상화 캡슐화 상속 다형성 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 유연하고 변경이 용이? 레고 블럭 조립하듯이 키보드, 마우스 갈아 끼우듯이 컴푸타 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 다형성 (Polymorphism) 다형성의 실세계 비유 실세계와 객체 지향을 1:1로 매칭X 그래도 실세계의 비유로 이해하기에는 좋음 역할과..
[Spring] JPA 란?
·
Study/Spring
JPA? JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다. 우선 JPA에 앞서, 먼저 ORM에 대해 알아보도록 하자. ORM(Object-Relational Mapping) 우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화해 주는 것이라고 보면 된다. 장점 SQL문이 아닌 Method를 통해 DB를 조작할 수 있어..
[Spring] DTO는 왜 써야 하나?
·
Study/Spring
DTO (Data Transfer Object) DTO란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans) DTO는 왜 필요할까? 1. Entity 2. Service 3. Dto 4.Controller 위 예제 코드의 테스트 코드는 Posts라는 엔티티를 생성하는 코드이다. 이를 위해 맨 처음에 PostsSaveRequestDto라는 Dto 객체를 빌더 패턴으로 생성하고 Dto를 컨트롤러에게 던져준다. 컨트롤러는 해당 Dto를 다시 Service에게 넘겨주고, Service 단에서 JPA를 이용하여 생성된 객체를 저장한다. 그런데 DTO와 Entity는 거의 똑같은 것 같은데, 왜 변환을 해서 사용해야 하며, 그렇다면 언제 DTO가 필요할까? Entity클래스와 거의 유사한 형태임에도 DT..
[Spring] Spring Security + JWT 로그인
·
Study/Spring
JWT = Json Web Tokens = Json 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token JWT 구성 Header : Signature를 해싱하기 위한 알고리즘 정보들이 담겨있다. Payload : 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들이 담겨있다. Signature : 토큰의 유효성 검증을 위한 문자열이 담겨있다. 장/단점 장점 중앙의 인증서버, 데이터 스토어에 대한 의존성이 없다. -> 시스템 수평 확장에 유리 Base64 URL Safe Encoding을 이용하기 때문에 URL, Cookie, Header를 모두 사용 가능한 범용성을 가지고 있다. 단점 Payload의 정보가 많아지면 네트워크 사용량이 증가한다. 이를 고려해서 데이..