본문 바로가기

전체글28

[JPA] 엔티티 매핑 - 필드와 컬럼 매핑 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. 매핑 애노테이션 정리 @Column : 컬럼 매핑 @Temporal : 날짜 타입 매핑 @Enumerated : enum 타입 매핑 @Lob : BLOB, CLOB 매핑 @Transient : 특정 필드를 컬럼에 매핑하지 않음 @Column 속성 name : 필드와 매핑할 테이블의 컬럼 이름을 지정할 수 있다. insertable, updatable : 기본값은 true이다. false 지정 시, 해당 컬럼을 수정했을때 데이터베이스에 insert 또는 update를 하지 않는다. nullable : 기본값은 true이다. false 지정 시, DDL을 생성할 때 not null 제약 조건이 걸린다. u.. 2023. 6. 10.
[Java] Pass-By-Value? Pass-By-Reference? 흔히들 Java는 Primitive 타입은 Pass-By-Value(Call-By-Value), Reference 타입은 Pass-By-Reference로 동작한다고 생각한다. 나 또한 그렇게 생각했다. 그러나 이것은 완전히 틀렸다. Java는 오직 Pass-By-Value로 동작한다. 어째서일까? 함께 알아보도록 하자. (참고 : 1. stackoverflow #40480 , 2. 망나니개발자 블로그, 3. Scott Stanchfield 블로그) 문제 import java.util.Arrays; public class JavaExample { public static void main(String[] args) { int x = 10; int[] arr = new int[]{1, 2, 3}; Pers.. 2023. 6. 9.
[JPA] 엔티티 매핑 - 객체와 테이블 매핑, 데이터베이스 스키마 자동 생성 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑: @ManyToOne, @joinColumn 객체와 테이블 매핑 @Entity @Entity public class Member { ... } @Entity가 붙은 클래스는 JPA가 관리하며, 엔티티라 한다. 파라미터가 없는 public 또는 protected인 기본 생성자가 필수이다. JPA 스펙상 그렇다. 동적인 작업이나, Reflection, Proxy하는 작업 등을 할 때 필요하다. final class, enum, interface, inner cla.. 2023. 6. 6.
[JPA] JPA 내부 구조 (3) - 플러시 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. 플러시(Flush) 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화하는 것 데이터베이스 트랜잭션이 commit되면 flush가 자동 발생 플러시 발생하면 어떤 일이? 변경 감지 (Dirty Checking) 수정된 Entity를 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송 (SELECT, UPDATE, DELETE) -> flush가 일어난다고, 데이터베이스 트랜잭션이 commit이 되는건 아니다. 트랜잭션 커밋 호출시, 커밋된다. 영속성 컨텍스트를 플러시하는 방법 다음 내용들을 직접 사용할 일은 거의 없지만, 테스트 등의 과정을 위해서 알아놔야 한다! em.flus.. 2023. 5. 28.
[JPA] JPA 내부 구조 (2) - 영속성 컨텍스트의 이점, 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. 영속성 컨텍스트의 이점 1차 캐시 영속 엔티티의 동일성(identity) 보장 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind) 변경 감지(Dirty Checking) 지연 로딩(Lazy Loading) 엔티티 조회 1차 캐시 다음 시나리오에 따라, 비영속 객체가 영속성 컨텍스트의 1차 캐시에 어떻게 저장되는지 알아보자. // 새로운 멤버 객체 생성 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); // 1차 캐시에 저장됨 em.persist(member); // 1차 캐시에.. 2023. 5. 28.
[JPA] JPA 내부 구조 (1) - 영속성 컨텍스트, 엔티티 생명주기 본 포스팅의 이미지 저작권은 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한) 강의에 있습니다. EntityManagerFactory와 EntityManager 고객이 서비스를 요청함 고객이 요청 할 때마다, EntityManagerFactory는 EntityManager를 생성 EntityManager는 내부적으로 Database Connection을 사용해서 DB를 사용한다. 영속성 컨텍스트 (Persistence Context) 엔티티를 영구 저장하는 환경 영속성 컨텍스트는 눈에 보이지 않는, 논리적인 개념이다. 엔티티 매니저(EntityManager)를 통해 영속성 컨텍스트에 접근한다. 엔티티의 생명주기 (Entity Lifecycle) 비영속 (new/transient) 영속성 컨텍스트와.. 2023. 5. 28.
728x90
반응형