Spring(41)
-
5. 연관관계 매핑 - 단방향, 양방향 연관관계
1. 연관관계 매핑 기초 개요1) 연관관계 매핑의 목표2) 연관관계가 필요한 이유3) 예제 시나리오2. 단방향/양방향 연관관계의 개념 1) 단방향/양방향 연관관계 2) 양방향 연관관계의 주인 3. 단방향 연관관계 1) 단방향 연관관계 적용 2) 연관관계 저장, 조회, 수정 4. 양방향 연관관계1) 양방향 연관관계 적용 2) 양방향 탐색 5. 양방향 연관관계의 주인과 비주인의 차이: 읽기 전용 여부1) 연관관계의 주인 → DB에 반영됨 (읽기 전용 X)2) 비주인 → DB에 반영 안됨 (읽기 전용O) 6. 양방향 연관관계의 주인을 정하는 기준1) DB에서 외래 키가 있는 테이블의 객체, 즉 Many(N) 쪽을 주인으로 정하자 2) 반대로 One(1) 쪽을 주인으로 하면? 비효율적7. 양방향 매핑에서 많이 ..
2025.06.15 -
4. 엔티티 매핑
[목차]1. 엔티티 매핑 개요 1) 정의 2) 대표 어노테이션 2. 객체-테이블 매핑 1) @Entity 3) @Table 3. 데이터베이스 스키마 자동 생성 1) 기능 설명 2) 설정 옵션 3) 권장 사용 환경 4. 필드-컬럼 매핑 1) @Column 속성 정리 2) @Enumerated 3) @Temporal 4) @Lob 5) @Transient 5. 기본 키 매핑 5-1. 기본 키 매핑 방법 5-2. @GeneratedValue의 전략(strategy)별 비교 1) IDENTITY 전략 2) SEQUENCE 전략 3) TABLE 전략 4) 왜 allocationSize 기본값이 50일까? 5-3. 권장하는 식별자 전략 1...
2025.06.12 -
3. 영속성 관리
[목차] 1. JPA에서 중요한 개념 2. Entity Manager Factory와 Entity Manager1) EntityManagerFactory (엔티티 매니저 팩토리)2) EntityManager (엔티티 매니저)3) 예시 흐름 3. 영속성 컨텍스트와 엔티티 매니저1) 영속성 컨텍스트란?2) EntityManager와의 관계 4. 엔티티 생명주기 5. 영속성 컨텍스트의 이점5-1. 1차 캐시1) 캐시란?2) JPA의 1차캐시3) 1차 캐시 사용 예시4) 1차 캐시의 장점 5-2. 쓰기 지연1) 쓰기 지연2) 쓰기 지연 SQL 저장소 5-3. 변경 감지1) 변경 감지2) 변경 감지 동작 원리: 스냅샷 (Snapshot) 6. 플러시6-1. 플러시란? 6-2. 플러시 발생 상황1) em.flush..
2025.06.12 -
2. JPA 시작
1. Hello JPA - 프로젝트 생성1) 프로젝트 생성 2) H2 데이터베이스 설치http://www.h2database.com/ 접속 후 설치DB 생성과 tcp 접근생성: jdbc:h2:~/생성할DB이름접근: jdbc:h2:tcp://localhost/~/생성한DB이름H2 데이터베이스의 장점가볍고 빠르다 (1.5MB)웹 기반 쿼리 툴 제공다양한 DB(MySQL, Oracle 등) 시뮬레이션 가능시퀀스, AUTO_INCREMENT 지원3) Maven 파일: pom.xml 설정 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 1.4.199 4) JPA 설정 파일: persist..
2025.06.11 -
1. JPA 소개
1. SQL 중심적인 개발의 문제점1) 반복되는 SQL 코드기존 개발 방식에서는 INSERT, SELECT, UPDATE, DELETE 등 CRUD 쿼리를 직접 작성해야 함.자바 객체를 DB에 저장하려면 필드를 SQL에 맞게 매핑하고, 결과를 객체로 다시 매핑하는 코드가 반복됨.코드가 지루하고 유지보수가 어려움, 개발 생산성 저하 2) SQL 의존성도메인 클래스에 필드를 하나 추가하면 모든 SQL 수정이 필요함SQL에 지나치게 의존적이라 객체지향적인 모델링이 어려움결과적으로 객체의 구조를 SQL에 맞추는 형태의 개발이 되어버림.3) 객체와 관계형 DB의 패러다임 불일치객체: 상속, 다형성, 캡슐화 등으로 복잡한 구조를 표현관계형 DB: 정형화된 테이블 구조를 사용하며, JOIN, 외래 키 등 관계 중심 ..
2025.06.11 -
MyBatis
1. MyBatis 코드 적용하기 //MemberMapper.java@Mapperpublic interface MemberMapper { void save (Member member); void update(@Param("id") Long id, @Param("updateParam") MemberUpdateDTO updateParam); Optional findById(Long id); List findAll(MemberSearchCond cond);}mybatis.type-aliases-package=com.hnjee.tripnow.member.domainmybatis.configuration.map-underscore-to-camel-case=truelogging.level.c..
2025.06.05