Framework

·Framework/JPA
준영속은 영속 상태의 엔티티가 영속성 컨텍스트에서 분리된 것을 준영속 상태라고 한다. 따라서 준영속 상태의 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없다. 영속상태를 준영속 상태로 만드는 방법 영속상태를 준영속으로 만드는 방법은 3가지이다. em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다. em.clear() : 영속성 컨텍스트를 완전히 초기화한다. em.close() : 영속성 컨텍스트를 종료한다. 엔티티를 준영속 상태로 전환: detach() public void testDetached() { ... //회원 엔티티 생성, 비영속 상태 Member memberA = new Member(); memberA.setId("memberA"); //회원 엔티티 영속 상태 ..
·Framework/JPA
플러시(flush)는 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것을 말한다. 플러시가 발생하면 다음과 같은 일이 발생되게 된다. 변경 감지가 동작하여 영속성 컨텍스트에 있는 모든 엔티티의 스냅샷과 비교하여 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시 하는 방법 직접호출 엔티티 매니저의 flush() 메소드를 직접 호출해서 영속성 컨텍스트를 강제로 플러시한다. 테스트나 다른 프레임워크와 JPA를 함께 쓰는 경우를 제외하고 거의 사용되지 않는다. 트랜잭션 커밋 시 플러시 자동 호출 트랜잭션을 커밋하지 않으면 데이터베이스에 SQL이 전..
·Framework/JPA
2024.03.12 - [Framework/JPA] - [JPA] 영속성 컨텍스트 [JPA] 영속성 컨텍스트 JPA에서 가장 중요한 두 가지는 객체와 관계형 데이터베이스 매핑과 영속성 컨텍스트이다. 영속성 컨텍스트를 알면 JPA가 내부적으로 어떻게 동작하는지에 대한 이해를 할 수 있게 된다. 엔티티 jh7722.tistory.com 이전 포스팅에서는 영속성 컨텍스트의 기본 개념에 대해 알아봤다. 이번에 특징을 알아보자. 영속성 컨텍스트의 특징 영속성 컨텍스트의 특징은 다음과 같다. 영속성 컨텍스트와 식별자 값 영속성 컨텍스트는 엔티티를 식별자 값(@Id로 매핑된 값)으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 영속성 컨텍스트와 데이터베이스 저장 JPA는 보통 영속성 컨텍스트에 새..
·Framework/JPA
JPA에서 가장 중요한 두 가지는 객체와 관계형 데이터베이스 매핑과 영속성 컨텍스트이다. 영속성 컨텍스트를 알면 JPA가 내부적으로 어떻게 동작하는지에 대한 이해를 할 수 있게 된다. 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트를 알기 전에 먼저 엔티티 매니저팩토리와 엔티티 매니저를 알아야 할 필요가 있다. 엔티티 매니저 팩토리는 이름 그래도 엔티티 매니저를 만드는 공장이다. 공장을 하나 만드는데 시간적 소요가 크듯이 엔티티 매니저 팩토리도 생성 비용이 크다. 따라서 한 개만 만들어 애플리케이션 전체 공유한다. 반면에 엔티티 매니저를 생성하는 것은 비용이 크지 않다. (거의 들지 않는다고 표현) 주의할 점은 엔티티 매니저 팩토리는 여러 스레드 동시 접근해도 안전하므로 공유해도 상관없지만 (스레드..
·Framework/JPA
2024.03.11 - [Knowledge/개발지식] - [개발지식] 객체와 관계형 데이터베이스와의 차이 with JPA [개발지식] 객체와 관계형 데이터베이스와의 차이 with JPA 2023.11.10 - [Knowledge/개발지식] - [스진초 5기/개발지식] DDD 설계와 SQL 중심 설계 [스진초 5기/개발지식] DDD 설계와 SQL 중심 설계 오늘의 주제는 DDD 설계이다. DDD 설계는 워낙 요즘 많이 사용하고 팀프 jh7722.tistory.com 이전 포스팅에서 관계형 데이터베이스를 객체지향적으로 모델링식 발생할 수 있는 문제를 알아봤다. 자바진영에서 그러한 문제를 해결할 수 있는 ORM인 JPA에 대해 본격적으로 공부하기 전에 JPA가 무엇인지 알아보자. JPA 란 무엇일까? 1. J..
·Framework/Spring
2023.11.08 - [Framework/Spring] - [스진초5기/Spring] DTO, VO, Entity [스진초5기/Spring] DTO, VO, Entity 스프링 MVC 기반 프로젝트를 하다 보면 DTO, VO, Entity 객체를 만들어서 사용한다. 각 클래스의 멤버변수들이 비슷한 값으로 지정되기 때문에 혼용하여 많이 사용하게 된다. 특히 DTO와 VO는 동일한 jh7722.tistory.com 이전 포스팅에서 DTO, Entity, VO과 각각 어떤 역할을 수행하고 어떤 차이를 있는지 정리했다. 각 역할에 따라 DTO와 Entity는 특정 순간에 변환돼서 사용되어야 한다. 이런 변환작업은 어느 계층에서 처리해 주는 게 가장 좋은 방법일까? DTO, Entity 변환은 어느 계층에서 일..
·Framework/Spring
스프링 MVC 기반 프로젝트를 하다 보면 DTO, VO, Entity 객체를 만들어서 사용한다. 각 클래스의 멤버변수들이 비슷한 값으로 지정되기 때문에 혼용하여 많이 사용하게 된다. 특히 DTO와 VO는 동일한 개념으로 사용되는 경우도 많아 이참에 각각의 클래스마다 정의와 특징을 살펴보자. DTO(Data Transfer Object)? DTO는 데이터를 전달하기 위한 객체라고 정의된다. 말 그대로 계층 간의 데이터를 주고받을 때 사용되는 객체라고 생각하면 된다. MVC 관점에서 본다면 View와 Controller 사이, Controller와 Service 사이 등 계층 간 데이터를 주고받을 때 사용된다. DTO의 특징으로는 getter/setter 메소드를 포함하며, 이 외의 비즈니스 로직은 포함하지..
·Framework/Spring
스프링 3 계층을 클래스 화할 때 @Controller, @Repository, @Service, @Component... 등 어노테이션을 선언하여 사용하는데 어노테이션을 지정하는 것만으로도 각 계층에서 서로를 DI 해서 사용할 수 있다. 이 구조를 이해하기 위해선 우선 Spring Bean에 대해 이해할 필요가 있다. Spring Bean? 스프링에서는 DI 컨테이너(혹은 스프링 IoC 컨테이너)에서 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부른다. 이러한 Bean들은 스프링에 의해 생성되고, 라이프 사이클을 수행하고, 의존성 주입을 수행한다. 즉, Bean들은 스프링을 구성하는 중요한 역할을 수행한다. 스프링에서는 이러한 Bean들을 XML, @Bean, @Compo..
JH_DEV77
'Framework' 카테고리의 글 목록 (2 Page)