일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Domain Driven Design
- ddd
- JPA
- 자동처리
- 한국대학생it경영학회
- 큐시즘
- 영속성
- 최범균
- GitHub Actions
- 교육기획팀원
- Spring Batch
- reactive operaton
- 교육기획팀
- 이펙티브자바
- 도메인 주도 개발 시작하기
- springboot
- 자바 ORM 표준 JPA 프로그래밍
- delayed message plugin
- Spring
- 30기
- jdbc
- 객체지향 쿼리 언어
- 밋업프로젝트
- cicd
- java
- RESTClient
- scheduling messages with rabbitmq
- rabbitmq-delayed-message-exchange
- JPQL
- kusitms
- Today
- Total
목록Backend (32)
코딩은 마라톤

7.1 상속 관계 매핑 7.1.1 조인 전략 _ 각각의 테이블로 변환 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 조회할 때 조인을 자주 사용한다. 타입을 구분하는 컬럼을 추가해야한다. (객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없기 때문) // 부모 클래스 @Entity // 부모 클래스에 @Inheritance를 사용한다. // 조인 전략을 사용하므로 InheritanceType.JOINED를 사용한다. @Inheritance(strategy = InheritanceType.JOINED) // 부모 클래스에 구분 컬럼을 지정한다. // 이 컬럼(DTYPE)을 통해 저장된 자식 테이블을 구분할 수 있다. @Dis..
6.1 다대일 6.1.1 다대일 단방향 [N:1] 회원 엔티티(Member)와 팀 엔티티(Team)는 다대일 관계이다. @Entity public class Member { ... @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; ... } @Entity public class Team { ... @Id @Column(name = "TEAM_ID") private Long id; ... } 회원은 Member.team을 통해 팀 엔티티를 참조할 수 있다. 팀에는 회원을 참조하는 필드가 없기 때문에 다대일 단방향 연관관계다. 6.1.2 다대일 양방향 [N:1] @Entity public class Member { ... @ManyToOne @Join..

목표 : 객체의 참조와 테이블의 외래 키를 매핑하는 것 단방향 연관관계 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계다. - 객체 연관관계 회원 객체와 팀 객체는 단방향 관계 Member.team 필드로 팀 객체와 연관관계를 맺는다. member -> team의 조회는 가능, 반대는 불가 - 테이블 연관관계 회원 테이블은 TEAM_ID 외래키로 팀 테이블과 연관관계 맺는다. 회원과 팀 테이블은 양방향 관계 (회원, 팀 둘다 조인 가능) - 객체 연관관계와 테이블 연관관계 정리 객체는 참조(주소)로 연관관계를 맺는다. 참조를 사용하는 객체의 연관관계는 단방향이다. 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다. 테이블은 외래 키로 연관관계를 맺는다. 외래 키를 사용하는..
@Entity 테이블과 매핑할 클래스는 필수로 붙여야 한다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름 지정 클래스 이름 주의사항 기본 생성자 필수 (@NoArgsConstructor) final 클래스, enum, interface, inner 클래스 사용 X 저장할 필드에 final 사용 X @Table 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름 catalog catalog 기능이 있는 db에서 매핑 schema schema 기능이 있는 db에서 매핑 uniqueConstraints (DDL) DDL 생성 시 유니크 제약조건 생성. 2개 이상의 복합 유니크 제약 조건도 만들 수 있다. DDL을 만들 때만 사용. 데이터베이스 스키마 자동 생성 ..
엔티티 매니저 팩토리, 엔티티 매니저 엔티티 매니저 팩토리 // persistence.xml 코드의 EntityManagerFactory emf = Persistence.createEntityManagerFactory("{name}"); - 엔티티 매니저를 만드는 공장 - 공장을 만드는 비용은 상당히 크다. -> 한 개의 엔티티 매니저 팩토리를 만들어서 전체 애플리케이션에서 공유 - 여러 스레드가 동시에 접근해도 안전 -> 서로 다른 스레드 간에 공유 가능 엔티티 매니저 EntityManager em = emf.createEntityManager(); - 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유 금지 영속성 컨텍스트 엔티티를 영구 저장하는 환경 em.persist(e..
책에 나온 설정 방법 - 이클립스 - Java 1.6 - Maven - H2 1.4.187 변경 사항 - IntelliJ 인텔리제이 - Java 11 - Gradle - H2 2.1.214 build.gradle dependencies { implementation 'org.hibernate:hibernate-entitymanager:5.6.15.Final' implementation 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final' runtimeOnly 'com.h2database:h2:2.1.214' /* java 11일 경우 설치 */ implementation 'javax.xml.bind:jaxb-api:2.3.0' compi..

JDBC - JDBC를 사용하여 DB에 접근할 경우, JDBC API를 사용해서 SQL을 DB에 전달한다. 1. SQL을 직접 다룰 경우 생기는 문제점 - SQL을 직접 다룰 경우, CRUD용 SQL을 반복해서 작성해야하는 비생산적인 과정을 수행해야한다. - SQL에 의존적인 개발을 하게 된다. (테이블에 컬럼을 추가시 연관된 SQL을 모두 수정해야한다.) 2. 객체지향 DB의 패러다임 불일치 - 상속 : 객체는 상속 기능 O VS 테이블은 상속 기능 X - 연관관계 : 객체는 참조를 통해 연관 객체 조회 VS 테이블은 외래키와 조인을 사용해서 조회 - 객체 그래프 탐색 : SQL을 직접 다룰 경우, SQL에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해진다. - 비교 : 동일성(==) 비교시 같..

Listener : 이벤트를 관찰하고 있다가 이벤트가 발생하면 콜백 메서드를 통해 특정 동작을 수행한다. JPA에서는 아래의 7가지 콜백 메서드를 제공한다. @PrePersist : insert 메소드 수행 전 시행 @PreUpdate : merge 메소드 호출 전 시행 @PreRemove : delete 메소드 호출 전 시행 @PostPersist : insert 메소드 수행 후 시행 @PostUpdate : merge 메소드 수행 후 시행 @PostRemove : delete 메소드 수행 후 시행 @PostLoad : select 조회가 일어난 직후에 실행 보통 @PrePersist와 @PreUpdate를 많이 사용한다. 특히 auditing(감시)할 때 사용한다. 예시 엔티티의 생성 시간(creat..