영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 합니다. 앤티티 매니저를 통해서 영속성 컨텍스트를 관리할 수 있습니다.
영속성 컨텍스트에 저장된 엔티티는 고유한 식별자로 구분되어 [비영속, 영속, 준영속, 삭제] 의 4가지 생명주기로 관리됩니다.
영속성 컨텍스트 4가지 생명주기로 [비영속, 영속, 준영속, 삭제] 가 있다고 말씀드렸는데요,
- 비영속 상태는 엔티티 객체는 생성했지만 아직 '영속성 컨텍스트에' 저장되지는 않은 상태를 의미하고,
- 영속 상태는 앤티티 매니저를 통해 영속성 컨텍스트에 저장되어 관리받고있는 상태입니다.
- 준영속 상태는 영속성 컨텍스트가 더이상 엔티티를 관리하지 않는 상태입니다.
- 삭제는 영속성 컨텍스트와 DB에서 엔티티를 삭제하는 것을 의미합니다.
영속성 컨텍스트의 사용은 6가지 정도의 장점이 있습니다.
- 1차 캐시 역할을 하여 데이터를 효율적으로 다룰 수 있습니다.
- 엔티티와의 동일성을 보장합니다.
- 한 트랜잭션 안에서 DB 쿼리문을 모았다가 한번에 보내는 트랙잭션을 지원하는 쓰기 지연
- 영속성 컨텍스트에서 보관하는 데이터에 변경이 일어났는지 확인하여 값을 반영시켜주는 변경 감지
- 연관된 객체는 필요 시에만 조회하는 지연 로딩
파라미터 타입이나 리턴 타입에 대한 정의를 외부에서 지정해줌으로써, 런타임에 발생할 수 있는 TypeError를 컴파일 전에 검출할 수 있도록 안정성을 확보하는 것입니다.
특히 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 객체의 타입을 미리 명시해줌으로써 이후 발생할 수 있는 형변환의 번거로움을 줄여주고
컴파일 시에 객체의 타입을 체크하기 때문에 런타임에 발생할 수 있는 오류를 줄여줍니다.
- 클래스 혹은 메소드에 선언 가능하며
- 동시에 여러타입도 선언이 가능하고
- 와일드카드로 유연한 처리가 가능하고
- 타입의 상속관계도 지정 가능한 특징이 있습니다.
HTTP는 서버/클라이언트 간 데이터를 주고받기 위한 통신 프로토콜로, 80번 포트를 사용합니다. TCP/IP 위에서 작동하며 상태를 보존하지 않는 일회성 Stateless 프로토콜입니다. HTTP는 평문 데이터를 전송하는 프로토콜이었기 때문에 HTTP 프로토콜에 데이터 암호화 과정을 추가시킨 HTTPS가 등장하게 되었습니다.
개인정보와 같은 민감한 정보를 주고받을 경우 HTTPS를 이용하고, 공개되어도 무방한 정보를 주고받을 경우 HTTP를 이용합니다.