[6장] 다양한 연관관계 매핑

책 스터디 정리/JPA ORM 스터디 2023. 5. 2. 22:42

6-1. 다대일 다대일 관계의 반대는 항상 일대다 관계 / 일대다 관계의 반대는 항상 다대일 관계 다대일 단방향 [N:1] JoinColumn 어노테이션으로 N쪽의 테이블의 필드를 외래키와 매핑해서 관리 다대일 양방향 [N:1, 1:N] 외래키가 있는 쪽이 연관관계의 주인 항상 N쪽에 외래키가 존재 JPA는 외래 키 관리시 연관관계의 주인만 사용 주인이 아닌 쪽은 조회를 위한 JPQL/객체 그래프 탐색시 사용 항상 서로를 참조 연관관계 편의 메소드를 작성하는 것이 좋음 6-2. 일대다 일대다: 다대일 관계의 반대, 엔티티 하나 이상 참조 가능 → Collection, List, Set, Map 중 하나 사용 필요 일대다 단방향[1:N] 반대쪽 테이블에 있는 외래 키를 관리 외래키는 항상 N쪽의 테이블에 ..

Article Thumbnail
'http://security.debian.org/debian-security stretch/updates Release' does not have a Release file. 도커 배포 이슈 처리

개발/DevOps 2023. 4. 29. 08:20

지난 주 금요일(4월 21일)까지는 정상적으로 배포되던 Github Action이 해당 DockerFile에 별다른 변경 사항이 없음에도 이번 주 월요일부터 apt-get update시 "http://security.debian.org/debian-security stretch/updates Release' does not have a Release file." 에러를 발생시키면서 배포가 fail 되기 시작했다. 첫 번째로 이슈 해결시도 방법은 deb.debian.org에서 apt-get update 하던 것을 archive.debian.org로 주소를 변경하여 archive에서 update해오도록 수정하였다. sed -i로 deb.debian.org 주소를 전부 archive.debian.org로 변경..

Article Thumbnail
[5장] 연관관계 매핑 기초

책 스터디 정리/JPA ORM 스터디 2023. 4. 25. 08:20

1.단방향 연관관계 다대일(N:1) 단방향 연관관계 회원이 하나의 팀에만 소속 가능 회원과 팀은 다대일 관계 객체 연관관계 기준 회원은 Member.team 필드로 팀 객체와 연관관계 회원은 Member.team 필드로 팀 조회 가능/ 팀은 회원 조회 불가 테이블 연관관계 기준 회원 테이블은 team_id 외래키로 팀 테이블과 연관관계 회원 테이블/팀 테이블은 양방향 관계 team_id 외래키로 회원 JOIN 팀/팀 JOIN 회원 모두 가능 객체 연관관계 vs 테이블 연관관계 참조를 통한 객체 연관: 언제나 단방향 객체 간 연관관계를 양방향으로 만드려면 반대쪽에도 필드 추가 필요 서로 다른 단방향 연관 관계 2개로 처리 / 양방향 연관 관계 X 테이블은 외래키 하나로 양방향 JOIN 가능 객체는 참조(주..

Article Thumbnail
[4장] 엔티티 매핑

책 스터디 정리/JPA ORM 스터디 2023. 4. 18. 22:50

JPA 대표 어노테이션 객체와 테이블 매핑: @Entity, @Table 기본 키 매핑: @Id 필드와 컬럼 매핑: @Column 연관 관계 매핑: @ManyToOne, @JoinColumn 1. @Entity 엔티티: Entity 어노테이션이 붙은 클래스 / JPA에서 관리 name JPA에서 사용할 엔티티 이름 지정 기본값 : 클래스명 기본 생성자 필수 final/inner 클래스, enum, interface에는 사용 불가 저장할 필드에 final 사용불가 2. @Table 엔티티와 매핑할 테이블을 지정 name 매핑할 테이블 이름 지정 uniqueConstraints(DDL) DDL 생성시 유니크 제약 조건 생성 2개 이상의 복합 유니크 제약도 가능 Schema 자동 생성으로 DDL 만들 때만 사..

Article Thumbnail
Redis Queue vs AWS SQS in NestJS

개발/NestJS 2023. 4. 17. 08:20

NestJS에서 Queue를 사용하는 방식에는 대표적으로 Bull을 통한 Redis, aws-sdk를 통한 AWS SQS(Simple Queue Service) 등이 있다. 공식문서 레시피에서는 Queue를 사용 시Redis/Bull를 사용하는 것을 권장하고 있다. 여기서 Redis는 뭔지 알겠는데 Bull이 뭔지 모르겠다고 생각이 들수도 있다. 잠시 Bull이 뭔지 알아보자. Bull Github 주소에 들어가면 ReadMe 소개에 아래와 같이 적혀있다. The fastest, most reliable, Redis-based queue for Node. Carefully written for rock solid stability and atomicity. 소개글을 그대로 확인해보면 Bull은 Node ..

Article Thumbnail
[1장] 데이터 타입

책 스터디 정리/코어 자바스크립트 2023. 4. 16. 08:20

자바 스크립트의 데이터 타입 기본형 number string boolean null undefined Symbol(ES6 스펙 추가) 참조형 Object Array Function Date RegExp Map, WeakMap, Set, WeakSet(ES6 스펙 추가) 기본형/참조형 구분 기본형은 할당/연산시 복제 값이 담긴 주소값을 바로 복제 참조형은 주소를 참조 값이 담긴 주소값의 묶음을 가리키는 주소값을 복제 메모리와 데이터 정적 타입 언어 (C/C++, 자바 등) → 데이터 타입별로 할당 메모리 영역 구분 개발자가 직접 형변환 필요 자바스크립트 → 넉넉하게 메모리 할당 개발자가 형변환 할 일 ↓ 모든 데이터는 메모리 주소값으로 서로 구분하고 연결 식별자와 변수 변수 → 변할 수 있는 데이터 식별자..

Article Thumbnail
[3장] 영속성 관리

책 스터디 정리/JPA ORM 스터디 2023. 4. 11. 22:12

1. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리 리소스 사용 ↑ 여러 스레드 동시 접근해도 안전해서 스레드 간 공유에 이슈 없음 Hibernate 포함 JPA 구현체 → 팩토리 생성 시 DB 커넥션 풀 생성 엔티티 매니저 리소스 사용 거의 X 여러 스레드 동시 접근시 동시성 이슈 발생 → 공유하면 안됨 데이터베이스 연결이 필요한 시점까지 DB 커넥션 사용 X 보통 트랜잭션을 시작할 때, DB 커넥션 획득 2. 영속성 컨텍스트란? 영속성 컨텍스트( JPA 이해에 제일 중요한 용어 ) 엔티티를 영구 저장하는 환경 엔티티 저장/조회시, 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리 엔티티 매니저가 생성될 때, 같이 생성 3. 엔티티의 생명주기 엔티티의 4가지 상태 비영속: 영속성 컨..

Article Thumbnail
[1장] JPA 소개

책 스터디 정리/JPA ORM 스터디 2023. 4. 4. 14:07

1-1. SQL을 직접 다룰 때 발생하는 문제점 자바 애플리케이션이 관계형 DB와 통신할 때 JDBC API를 통해 SQL문을 사용한다. DB와 객체는 서로 다른 구조를 가지고 있어 객체를 DB에 직접 저장하거나, 조회가 불가능해서 개발자가 직접 애플리케이션 코드와 DB 테이블 사이의 변환 작업을 SQL과 JDBC API로 해야한다. 테이블마다 동일하게 DAO 구성 작업을 반복해야한다. 1-2. SQL에 의존적인 개발 개발하다 요구사항(스펙)이 변경되면 관련 DAO 로직의 SQL 실행을 확인 후, 수정이 필요하다. SQL에 의존하는 상황에서는 엔티티를 신뢰할 수 없다. 물리적으로는 SQL과 JDBC API를 DAO에 숨겼지만, 논리적으로는 강한 의존 관계를 가지고 있다. 강한 의존 관계로 인해 요구 사항..

Article Thumbnail
[Next.js] Github Pages 배포

개발/Github Pages 2023. 4. 2. 08:20

NextJS에서는 총 5가지 방식의 랜더링 방식을 지원한다. SSR(Server Side Rendering) SSG(Static Site Generation) CSR(Client Side Rendering) Dynamic Routing ISR(Incremental Static Regeneration) Github Page는 깃헙 계정만 있으면 무료로 호스팅이 가능하다는 장점이 있지만, 정적인 페이지만 호스팅이 가능하여 Next.js에서 SSG를 제외한 나머지 랜더링 방식은 배포시에 적용이 불가능하다. Vercel이나 AWS Amplify와는 다르게 Next.js를 Github Page에 정상적으로 배포하려면 몇 가지 추가적인 작업이 필요하다. 1. package.json 수정 1-1. homepage u..

Article Thumbnail
Cookie MaxAge vs Expires 속성 차이

개발 2023. 2. 16. 08:20

프론트에서 Cookie에 accessToken을 저장하여 회원 로그인 여부를 체크하고 있었는데 간혹 가다 expires에 적힌 date보다 먼저 쿠키가 만료되어 로그아웃이 되어버리는 이슈가 발생하였다. 쿠키를 사용할 때 기존에는 expires를 주로 사용하였는데 찾다보니 HTTP 1.1 부터 expires는 deprecated 되었고, max-age 속성이 expires를 대체하였다고 되어있는데, 과거 IE가 주로 사용되던 시절에 IE가 max-age를 지원하지 않아서 expires가 계속 사용되었던 거 같다. MaxAge Cookie가 만료되기 까지의 초를 나타낸다. 브라우저 창이 닫았다가 다시 해당 페이지를 열어도 로그인 상태 유지 Expires Cookie가 만료되기까지의 날짜를 클라이언트 시간대 ..

Article Thumbnail