1. @Transactional 어노테이션에 readOnly 속성의 사용 이유
- 영속성 컨텍스트를 관리 하지 않고 읽기 참조만 하기 때문에 Entity의 관리가 들어가지 않으며 캐시가 날라가지 않기 때문에 변경 감지를 위한 스냅샷을 저장하지 않기에 성능이 향상된다.
2. JPA Entity Class에서 @Setter를 지양하는 이유는? (Entity에서 Setter 함수를 사용하지 않는 이유?)
- 객체의 일관성을 보장할 수 없고 그 의도를 파악하기 힘들기 때문 그렇기에 메서드를 생성해주거나 객체 생성시 값 세팅에서 빌더 패턴을 사용하면 좋다.
3. OOP(객체지향 프로그래밍) 의 특징을 설명해 보세요.
- 캡슐화:
- 필드와 메소드를 클래스로 묶는 데이터 캡슐화
- 외부에서 객체의 상태를 변경하는것을 막기위한 은닉화(접근제어자, setter, getter의 사용)
- 낮은 결합도로 다른 클래스들의 간섭이 낮아야 하며 높은 응집도로 변경시 해당 클래스만 변경이 되어야 한다.
- 추상화:
- 필요성에 의해 있어야 할 정보들만 구성하는것으로 추상메소드 인터페이스가 있다.
- 자동차를 비유하면 공통적인 바퀴 엔진 핸들 같은것을을 하나로 묶는다는것을 의미한다,
- 다형성 :
- 오버라이딩, 오버로딩이 해당하며 오버로딩의 경우 슈퍼클래스에서 구현한 메소드를 서브 클래스에서 동일한 이름으로 재작성하는것이며
- 오버로딩은 이름이 같은 서로 다른 메소드를 여러개 만들어 작성하는 것이다.
- 상속 :
- 자식 클래스가 부모를 물려받아 기능을 확장하는 것으로 코드 작성에 드는 시간과 비용을 줄이는 효과가 있다.
4. Get과 Post 방식 에 대해서 설명해 보세요. 그 둘의 차이점도 설명해 보세요.
- GET방식의 경우 쿼리 스트링으로 값을 전달하며 특정 페이지를 링크하거나 북마크 할 수 있다.
- 캐시가 가능하다
- GET요청은 브라우저 히스토리에 남는다.
- 길이 제한이 있다.
- POST방식의 경우 리소르를 생성/변경을 위해 설계
- HTTP 바디에 담아서 값을 전달하며 길이 제한이 없다.
- 헤더의 데이터 타입을 표시해야 한다.
- GET , POST차이점
- GET은 서버의 리소스에 요청을 할 때, POST는 리소스를 생성 또는 업데이트 할 때 사용
- GET은 멱등이며 POST의 경우 멱등성이 없다.
- 멱등성이란
- 연산을 여러 번 적용하더라도 결과가 달라지지 않는 것을 의미한다.