BackEnd(Java)/JPA 개념(4)
-
OSIV
✅ 아래 내용들에 대해서 알아보자- OSIV- OSIV 설정에 따른 차이점 OSIVOpen Session In View(OSIV)는 Hibernate가 영속성 컨텍스트와 DB 트랜잭션의 생명 주기를 관리하는 전략이다. JPA에서 트랜잭션이 시작될떄 영속성 컨텍스트가 DBCP에 있는 커넥션을 얻어와서 DB와 연결을 한다.그리고 트랜잭션 종료 후 커넥션을 반환하여 DB와 연결을 종료하게 된다. (OSIV 옵션에 따라 다름) OSIV 옵션을 설정하는 방법은 아래와 같다. 기본값은 TRUE이다.spring.jpa.open-in-view=false OSIV 설정 안하면 다음과 같은 로그가 뜨게 된다.(기본값이 TRUE) OSIV ON OSIV를 on일 경우(spring.jpa.open-in-view=true)..
2023.06.11 -
값 타입
✅ 아래 내용들에 대해서 알아보자 - 기본값 타입 - 임베디드 타입 - 값타입 공유 참조 - 값타입 비교 - 컬렉션 값 타입 기본값 타입 값 타입은 복잡한 객체 세상을 조금이라도 단순화하려고 만든 개념이다. 따라서 값 타입은 단순하고 안전하게 다룰 수 있 어야 한다. 값 타입을 이해하기 위해 간단한 예시 코드를 보자. 자바의 기본형 타입과 참조형 타입의 값 복사를 하는 과정인데, 기본형 타입은 각각 다른 메모리 주소공간을 가지게 되고 값을 복사하게 되므로 b값이 변하더라도 a에는 전혀 영향이 없게 된다. 반대로, 참조형 타입은 참조값을 대입(공유)하므로 둘 중 하나의 값이 변하게 되면 둘 다 변하게 되어 영향이 발생하게 된다. (자바의 call by value, call by reference에 대해서 ..
2023.05.22 -
엔티티 매핑
✅ 아래 내용들에 대해서 알아보자 - @Entity - @Table @Entity @Entity가 붙은 클래스는 JPA 관리하는 엔티티가 된다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수! @Entity 속성 name JPA에서 사용할 엔티티 이름 지정 클래스 이름이 default 값이다. 같은 클래스 이름 없으면 가급적 기본값 권장 @Entity 사용 시주의사항 1. JPA 구현체(ex. Hibernate)는 엔티티 객체를 생성할 때 기본생성자를 사용한다.(필수) -> JPA는 앤티티 객체로 변환하기 위해 Java의 리플랙션을 사용하는데, 이때 JPA 구현체는 앤티티 객체를 생성하기 위해 기본생성자를 호출하여 객체를 초기화한다. 2. JPA는 프락시 객체를 사용하여 지연로딩을 구현하..
2023.05.21 -
영속성 컨텍스트
✅ 아래 내용들에 대해서 알아보자 - 엔티티 매니저 팩토리와 앤티티 매니저 - 영속성 콘텍스트 - 엔티티 생명주기 - 영속성 콘텍스트 특징 - 플러시 - 준영속 엔티티 매니저 팩토리와 앤티티 매니저 DB를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. EntityManagerFactory emf=Persistence.createEntityManagerFactory("jpabook"); 앤티티 매니저 팩토리는 이름 그대로 앤티티 매니저를 만드는 공장 역할을 하며, 공장을 만드는 비용은 상당히 크다. 따라서 하나의 엔티티 매니저 팩토리를 생성하여 공유하도록 설계되어 있다. 반면 공장에서 엔티티 매니저를 생성하는 비용은 거의 들지 않는다. 앤티티 매니저 팩토..
2023.05.17