이력서 스터디 DAY 3

HEUKWU·2023년 5월 10일
0

영속성 컨텍스트

JPA(Java Persistence API)에서 영속성 컨텍스트(persistence context)는 엔티티 객체를 관리하며 데이터베이스와의 작업을 처리하는 중요한 개념이다.

영속성 컨텍스트는 엔티티 매니저(Entity Manager)를 통해 생성되며, 엔티티 매니저는 하나 이상의 영속성 컨텍스트를 관리한다. 영속성 컨텍스트는 엔티티 객체를 저장하고, 업데이트하고, 삭제하며, 조회할 수 있다. 이때, 영속성 컨텍스트는 엔티티 객체의 상태를 추적하여 관리한다.

주요 기능

  • 엔티티의 관리 및 추적
    영속성 컨텍스트는 엔티티 객체의 상태를 추적하며, 엔티티 객체가 생성, 수정, 삭제되는 것을 감지한다. 또한, 엔티티 객체의 변경사항을 추적하여 자동으로 데이터베이스에 반영한다.

  • 1차 캐시
    영속성 컨텍스트는 엔티티 객체를 저장하는 1차 캐시를 제공한다. 이를 통해, 같은 엔티티 객체를 조회할 때마다 데이터베이스에 쿼리를 보내는 것이 아니라, 영속성 컨텍스트 내에서 캐싱된 엔티티 객체를 반환한다.

  • 지연 로딩
    영속성 컨텍스트는 지연 로딩을 지원한다. 지연 로딩은 엔티티 객체가 실제로 사용될 때까지 데이터베이스에서 로딩하지 않고, 필요할 때 로딩하는 것을 말한다.

  • 변경 감지
    영속성 컨텍스트는 엔티티 객체의 변경사항을 감지하여 자동으로 데이터베이스에 반영한다.

  • 트랜잭션 범위 관리
    영속성 컨텍스트는 트랜잭션 범위 내에서 엔티티 객체의 변경사항을 관리한다. 트랜잭션이 커밋되면, 영속성 컨텍스트는 변경사항을 데이터베이스에 반영한다.

  • 영속성 전이
    영속성 컨텍스트는 엔티티 객체의 상태 변화를 추적하여, 연관된 다른 엔티티 객체의 상태도 함께 변경할 수 있다.

제네릭

지네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-timetypecheck)를 해주는기능이다.

객체의 타입을 컴파일시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는것은 의도하지않은 타입의 객체가 저장되는것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다.

제네릭의 장점

  • 타입 안정성을 제공한다.
  • 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다.

이와 같이 컬렉션 클래스에서 제네릭을 사용하는 이유는 컬렉션에 저장할 요소의 데이터 타입을 컴파일 시점에 체크하여 타입 안정성(Type Safety)을 보장하기 위해서이다. 예를 들어, ArrayList 클래스를 사용할 때, 요소의 타입을 지정하지 않고 Object 타입으로 저장하면, 컴파일러가 컴파일 시에는 문제가 없지만, 실행 시에 요소의 타입이 다른 객체를 추가하거나 가져올 때, ClassCastException과 같은 런타임 에러가 발생할 수 있다. 하지만, 제네릭을 사용하여 ArrayList와 같이 요소의 타입을 명시하면, 컴파일러가 요소의 타입이 일치하지 않을 때 바로 에러를 발생시켜 타입 안정성을 보장할 수 있다.

또한, 제네릭을 사용하면 코드의 가독성을 높이고, 타입 변환을 줄여서 코드의 성능을 향상시킬 수 있다. 예를 들어, ArrayList와 같이 요소의 타입을 명시하면, 값을 가져올 때 별도의 타입 변환 없이 Integer 타입으로 바로 가져올 수 있다.

0개의 댓글

관련 채용 정보