객체지향의 3요소
객체지향의 3요소에는 캡슐화, 상속, 다형성이 있다.
객체의 속성을 보호하기 위해 사용
자바에서 캡슐화란 값의 보호를 위해 필드, 메소드를 감추거나 들어내는 것을 말한다.
접근 제한자
필드와 메소드의 접근을 접근 제한자를 통해 제한한다.
Private - 자기 클래스 내에서만 접근 가능
Protected - 다른 패키지여도 상속관계라면 접근 가능
Public - 어디서든 접근 가능
캡슐화 특징
상속이란?
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해 클래스를 작성하면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 공통적으로 관리할 수 있기 때문에 생산성과 유지보수에 크게 기여한다.
상속을 구현하는 방법
새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends와 함께 작성하면 된다.
주의점
예시로 Override를 들 수 있는데 부모클래스에서 정의된 메소드를 자식 클래스에서 재정의하여 Override하는 것 또한 다형성이라고 볼 수 있다.
Controller,Service,Repository
Controller란?
서버에서 기능별 URL이라는 API를 개설해 놓았고, 클라이언트는 필요한 데이터를 얻기 위해 적절한 API에 요청을 하게 되는데 Controller는 이런 창구 역할을 하는 API들을 모아놓은 클래스이다
Controller가 하는 역할
MVC에서 웹상으로 들어오는 여러 요청들을 처리하는 역할이며 Front-end에서 들어오는 클라이언트 측의 요청이 가장 먼저 서버 측과 맞닿는 부분이다.
뷰를 연결하여 웹에 띄우고 뷰에서 가져오는 데이터들을 어떻게 처리하는지 결정한다
Model이 DB에서 받아온 데이터를 전달받아 가공하는 역할
비즈니스 로직 처리
프레젠테이션 계층과 데이터 엑세스 계층 사이를 연결하는 역할 두 계층이 직접적으로 통신하지 않게 한다.
Repository란?
간단하게 데이터를 검색하거나, 삽입하고 삭제 및 수정을 할 수 있는 인터페이스이다.
Repository의 역할
JPA에서 Repository 인터페이스를 생성 후 JpaRepository<Entity, 기본키 타입>을 상속받으면 기본적인 Create, Read, Update, Delete를 자동으로 생성
데이터베이스에 CRUD의 명령을 실행하게 만드는 인터페이스 복잡한 쿼리 없이 CRUD 명령을 DB에 전달하여 원하는 쿼리를 실행할 수 있다.