분류 전체보기 (122) 썸네일형 리스트형 [JPA] JPA 실전 - 공통 인터페이스 JPA에서는 엔티티의 변경을 감지하는 기능(Dirty Checking)을 통해 엔티티를 수정할 수 있습니다. 트랜잭션 내에서 엔티티를 조회하고 필드 값을 변경하면, 트랜잭션 종료 시점에 JPA가 자동으로 변경된 엔티티를 감지하고 데이터베이스에 UPDATE 쿼리를 실행합니다. 순수JPA 기반 리포지토리package com.example.jpaspring.repository;import com.example.jpaspring.domain.Member;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import org.springframework.stereotype.Repository;import jav.. [JPA] JPA 실전 - 개발 기본 Member 엔티티package com.example.jpaspring.domain;import jakarta.persistence.*;import lombok.*;@Entity@Getter @Setter@NoArgsConstructor(access = AccessLevel.PROTECTED)@ToString(of = {"id", "username", "age"})public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @Jo.. [JPA] JPA 활용1 - 웹 계층 개발 - 회원 도메인 개발 계층형 구조 사용controller, web: 웹 계층service: 비즈니스 로직, 트랜잭션 처리repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용**개발 순서: 서비스, 리포지토리 계층을 개발하고, 테스트 케이스를 작성해서 검증, 마지막에 웹 계층 적용** 회원 리포지토리package com.example.jpaspring.test1.repository;import com.example.jpaspring.entity.Member;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import org.springframe.. [JPA] JPA 활용1 - 도메인 분석 설계 참고: 실제 코드에서는 DB에 소문자 + _(언더스코어) 스타일을 사용하겠다.**데이터베이스 테이블명, 컬럼명에 대한 관례는 회사마다 다르다. 보통은 대문자 + _(언더스코어)나 소문자 + _(언 더스코어) 방식 중에 하나를 지정해서 일관성 있게 사용한다. **참고: 외래 키가 있는 곳을 연관관계의 주인으로 정해라.**연관관계의 주인은 단순히 외래 키를 누가 관리하냐의 문제이지 비즈니스상 우위에 있다고 주인으로 정하면 안된 다.. 예를 들어서 자동차와 바퀴가 있으면, 일대다 관계에서 항상 다쪽에 외래 키가 있으므로 외래 키가 있는 바퀴 를 연관관계의 주인으로 정하면 된다. 물론 자동차를 연관관계의 주인으로 정하는 것이 불가능 한 것은 아니지만, 자동차를 연관관계의 주인으로 정하면 자동차가 관리하지 않는.. [JPA] JPA 활용1 - 프로젝트 환경설정 start.spring.io 사이트에서 스프링 부트 2.x에 대한 지원이 종료되어서 더는 선택할 수 없습니다. 이제는 스프링 부트 3.0이상을 선택해주세요. 스프링 부트 3.0을 선택하게 되면1. Java 17이상을 사용해야 합니다.2. javax 패키지 이름을 jakarta로 변경해야 합니다.- 오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 했습니다.3. H2 데이터베이스를 2.1.214 버전 이상 사용해야 합니다. plugins { id 'java' id 'org.springframework.boot' version '3.3.1' id 'io.spring.dependency-management' version '1.1.5'}group = 'com.e.. [JPA] JPA 기본값 타입 기본값 타입JPA에서 데이터 타입은 크게 두 가지로 분류할 수 있습니다: 엔티티 타입과 값 타입입니다.엔티티 타입정의: @Entity로 정의된 객체.특징:데이터가 변해도 식별자(ID)로 지속해서 추적 가능.식별자를 통해 동일한 객체를 유지.예를 들어, 회원 엔티티에서 키나 나이 값이 변경되어도 동일한 회원으로 인식 가능.값 타입정의: 자바 기본 타입이나 객체로 단순히 값으로 사용.특징:식별자가 없고 값만 있음.값이 변경되면 추적 불가.예를 들어, 숫자 100을 200으로 변경하면 완전히 다른 값으로 인식.값 타입 분류기본 값 타입예시: String name, int age특징:생명 주기가 엔티티에 의존.예를 들어, 회원을 삭제하면 이름과 나이 필드도 함께 삭제됨.값 타입은 공유 불가.예를 들어, 회원 이.. [JPA] JPA 프록시와 연관관계 관리 프록시(Proxy)는 JPA와 Hibernate에서 자주 사용되는 개념으로, 실제 엔티티 객체를 대리하여 동작하는 가짜 객체입니다. 프록시를 통해 데이터베이스 조회를 지연시키고, 성능을 최적화할 수 있습니다. 프록시의 주요 특징데이터베이스 조회 지연:em.find() 메소드는 데이터베이스를 즉시 조회하여 실제 엔티티 객체를 반환합니다.em.getReference() 메소드는 데이터베이스 조회를 미루고, 프록시 객체를 반환합니다. 실제 데이터는 프록시 객체의 메소드가 처음 호출될 때 조회됩니다.프록시 객체의 구조:프록시 객체는 실제 엔티티 클래스를 상속받아 만들어집니다.프록시 객체는 실제 엔티티 객체를 참조하는 방식으로 동작합니다.프록시 객체의 초기화:프록시 객체는 처음 사용할 때 한 번만 초기화됩니다.초.. 영어 1 일차 Why, How- Why do you start English? Certificate, employment, exam, etc- We need motivation to start English.- It's never too late to start English.- It doesn't matter if you get it wrong, so keep practicing speaking- Well begun is half done- If you want to be good at English, like English 모두 암기는 불가능! 기본 영어 감각 깨우기- 단어는 꽤 외웠는데, 단어끼리 연결이 안돼서 문장을 만드는데 시간이 많이 걸리고 어렵다. 3초 안에 대답해보아라!!1. [카페 주문] 아이스 아메.. [JPA] JPA 고급 매핑 상속관계 매핑JPA는 객체 지향 프로그래밍의 상속을 데이터베이스의 슈퍼타입 서브타입 관계로 매핑할 수 있습니다. 이를 통해 상속 구조를 데이터베이스에 저장할 수 있습니다. 상속관계 매핑에는 여러 전략이 있으며, 각각의 장단점이 있습니다.주요 어노테이션@Inheritance(strategy=InheritanceType.XXX)JOINED: 조인 전략SINGLE_TABLE: 단일 테이블 전략TABLE_PER_CLASS: 구현 클래스마다 테이블 전략@DiscriminatorColumn(name="DTYPE")상속관계에서 구분 컬럼을 정의할 때 사용합니다.@DiscriminatorValue("XXX")각 엔티티가 구분 컬럼에서 가질 값을 정의합니다.조인 전략 (JOINED Strategy)장점테이블 정규화가 잘.. [JPA] JPA 연관관계 매핑 (2) 단방향과 양방향 연관관계테이블에서의 연관관계테이블: 외래 키 하나로 양쪽 조인 가능. 방향이라는 개념이 없음.객체: 참조용 필드가 있는 쪽으로만 참조 가능.한쪽만 참조하면 단방향.양쪽이 서로 참조하면 양방향.연관관계의 주인테이블: 외래 키 하나로 두 테이블이 연관관계를 맺음.객체 양방향 관계: A -> B, B -> A처럼 참조가 2군데.객체 양방향 관계: 참조가 2군데 있음. 둘 중 테이블의 외래 키를 관리할 곳을 지정해야 함.연관관계의 주인: 외래 키를 관리하는 참조.주인의 반대편: 외래 키에 영향을 주지 않음, 단순 조회만 가능. 다대일 [N:1]다대일 관계에서는 여러 엔티티가 하나의 엔티티와 연관됩니다. 예를 들어, 여러 Member가 하나의 Team에 속하는 경우입니다.- 가장 많이 사용하는 연.. 이전 1 2 3 4 5 6 7 ··· 13 다음