본문 바로가기
728x90

Back-end63

[JPA] 영속성 컨텍스트에 대한 정리 JPA가 내부에서 어떻게 돌아가는지에 대한 이론적 배경을 공부하기 위해 영속성 컨텍스트라는 개념을 공부해 보자. JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스를 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 (JPA의 내부 동작과 연관된 개념) 이번에는 영속성 컨텍스트에 대한 개념을 정리해 보자. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어로 "엔티티를 영구 저장하는 환경"이라는 뜻이다. EntityManager.persist(entity object); 영속성 컨텍스트를 이용해 entity를 영속화함을 의미한다. EntityManger와 영속성 컨텍스트를 정리하자면, 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않는다. EntityManger를 통해 .. 2023. 1. 21.
JPA 구동 방식과 애플리케이션 만들어보기 JPA 공부를 위한 프로젝트 생성 정보 DB: h2 database build tool: Maven Java: version 11 pom.xml을 이용해 라이브러리를 추가하고, persistence.xml는 JPA 설정 파일에 해당한다. /META-INF/persistence.xml 위치에 설정 파일을 저장한다. persistence-unit name으로 이름을 지정 javax-persistence: JPA 표준 속성을 의미 hibernate: 하이버네이트 전용 속성을 의미(하이버네이트는 JPA 구현체중 하나) property 태그를 이용해 속성 정보를 하나하나 지정하는 것 같다. user: sa password: 없음 url: jdbc:h2:tcp://localhost/~/test dialect는 방언.. 2023. 1. 20.
[JPA] Java 표준 ORM인 JPA란? SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드.. 기획 단계에서 잘못되어 새로운 필드를 테이블에 추가하려 하는 경우, 관련된 모든 쿼리를 전부 변경해야 한다. 하지만, 관계형 데이터베이스를 대부분의 케이스에서 사용하기 때문에, SQL에 의존한 개발을 할 수밖에 없다..!! 개발을 하면서 객체라는 개념을 다양한 저장소에 저장하게 되는데, 이 중 현실적인 대안은 관계형 데이터베이스이다. 개발자는 사실상 객체를 관계형 데이터베이스에 저장하기 위한 mapping 과정을 도맡아 한다고 볼 수 있음 객체와 관계형 데이터베이스의 차이 상속 연관관계 데이터 타입 데이터 식별 방법 상속 부모 테이블을 만들고, 자식 테이블을 만들어 관리하는 방식으로 흉내 낼 수 있고, 이를 슈퍼타입 서브타입으로 만들어 관리한다고.. 2023. 1. 19.
[Spring] 빈 스코프 알아보기 빈 스코프란? 지금까지 살펴본 빈은 스프링 컨테이너와 함께 생성되어, 스프링 컨테이너가 종료될 때까지 유지된다고 배웠다. 그러나, 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 여기서 빈 스코프라는 말은 말 그대로 빈이 존재할 수 있는 범위를 의미한다. 스프링은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작부터 종료까지 유지되는 가장 넓은 범위의 빈 스코프 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고, 이후에는 더 관리하지 않음. 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 applicati.. 2023. 1. 7.
[Spring] 빈 생명주기 콜백 빈 생명주기 콜백 시작 데이터베이스 connection pool이나, 네트워크 socket처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화 및 종료 작업이 필요하다. 이번에는 스프링을 통해 이러한 초기화 + 종료 작업이 어떻게 진행되는지 예제와 함께 정리해 보자. 예시 설명) 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 실제로 네트워크에 연결되는 것은 아니고 단순히 문자열을 출력하는 코드이다. NetworkClient 객체는 애플리케이션의 시작 시점에 connect() method를 호출해서 연결을 맺고 애플리케이션이 종료되면, disconnect() method를 호출해서 연결을 끊는다. 이러한.. 2023. 1. 6.
[Spring] 의존관계 자동 주입 다양한 의존관계 주입 방법 의존관계 주입 방법 4가지 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 이용해 의존관계를 주입하는 방법으로, 앞선 개념 공부에서 사용한 코드가 생성자 주입 방식을 통한 의존관계 주입에 해당한다. 특징 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용한다. MemberRepository, DiscountPolicy 두 개의 추상에 의존하는 OrderServiceImpl(주문 서비스 구현체)을 예시로 들어보자. @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository me.. 2023. 1. 5.
728x90