[Spring Boot] 연관관계 매핑 - N:M 관계 예제
2023. 1. 1. 16:52
Spring Boot/문법 정리
N:M 관계 예제 상황 : 저자는 여러 책을 쓸 수 있고 학원도 여러 수험생을 받을 수 있는 N:M (다대다) 관계 관계형 DB는 N:M 관계를 표현할 수 없음 => 1:N, N:1 관계로 풀어내야 함 EXAMINEE와 ACADEMY 사이에 EXAMINEE_ACADEMY 테이블을 추가로 생성해 풀어냄 이 상황에서는 EXAMINEE_ACADEMY가 두 관계에서 연관관계의 주인으로 지정 이렇게 하면 또다른 장점은 추가적인 정보를 더 집어넣을 수 있음 예를 들면 수험생이 학원을 등록한 날짜 등을 추가로 집어넣을 수 있음 => 예제에서 등록 날짜까지 구현 구현 코드 Examinee Entity @Entity @Data public class Examinee { @Id @GeneratedValue(strategy..
[Spring Boot] 연관관계 매핑 - 1:1 관계 예제 (+ @PostConstruct를 사용한 초기 데이터 생성)
2023. 1. 1. 15:09
Spring Boot/문법 정리
1:1 관계 예제 1:1 관계는 1:N 관계와 거의 유사 상황 : 영화관에 자리가 여러개 존재하고 고객이 자리를 선택해야 하는 상황 고객은 자리를 하나만 선택할 수 있고, 자리도 한 고객에게만 선택될 수 있는 1:1 관계 Customer 객체에는 id와 name 정보가 들어가고, Seat 객체에는 id, rowId(AC), colId(15) 정보가 들어감 각각의 id가 primary key(기본키)로 지정 연관관계 매핑 1:N 관계에서는 보통 N쪽을 연관관계의 주인으로 지정 1:1 관계에서도 연관관계의 주인을 지정해야 함 어느쪽을 주인으로 지정해도 상관 없지만 보통은 foreign key가 있는쪽을 주인으로 지정 이 예제에서는 아래와 같이 Customer에 foreign key를 가져오고 주인으로 정했음..
[Spring Boot] 연관관계 매핑 - 1:N 관계 예제 (+FetchType.LAZY)
2022. 12. 31. 18:38
Spring Boot/문법 정리
1:N 관계 예제 상황 : Team에는 여러 Player가 속할 수 있지만, 한 Player는 여러 팀에 속할 수 없는 1:N 관계 Team 객체에는 id와 name 정보가 들어가고, Player 객체에는 id, name, age 정보가 들어감 각각의 id가 primary key(기본키)로 지정 연관관계 매핑 하나의 엔티티에 다른 엔티티의 primary key를 foreign key(외래키)로 가져와야 함 이런 상황에서는 보통 1:N 관계에서 N쪽으로 foreign key를 가져오고, 연관관계의 주인으로 지정함 이 예제에서는 team이 1, player가 N에 해당하므로 player가 연관관계 주인이 되고, team_id를 가져옴 이 상황을 JPA를 사용해 객체 생성 및 DB 연결 해보는 예제 (양방향 ..
[Spring Boot] 연관관계 매핑 - 1:1, 1:N, N:M
2022. 12. 31. 16:34
Spring Boot/문법 정리
1:1, 1:N, N:M 관계란? 두 엔티티가 서로 관계를 맺을 때, 1:1, 1:N, N:M 형태의 관계를 맺을 수 있음 1:1 (일대일) 관계 : 국가-수도, 남편-아내 등과 같은 관계 한 국가가 여러 수도를 가질 수 없고 한 도시는 여러 국가의 수도일 수 없음 1:N (일대다) 관계 => 부모-자식, 학생-학교 등과 같은 관계 한 부모는 여러 자식을 가질 수 있지만 자식은 여러 부모를 가질 수 없음 N:M (다대다) 관계 => 고객-상품, 학생-학원 등과 같은 관계 한 고객은 여러 상품을 시킬 수 있고, 한 상품은 여러 고객에게 시켜질 수 있음 연관관계 매핑이란? 객체의 참조와 테이블의 외래키를 매핑하는 것 ex) X팀에 선수 A, B, C가 속한 상황 Java에서의 관점 Team Class, Pl..
[Vue.js + Node.js] 게시판 만들기
2022. 12. 31. 15:20
Vue.js
링크 [Node.js + Vue.js] 게시판 만들기 1. 설계 & 결과 [Node.js + Vue.js] 게시판 만들기 2. Vue.js를 사용한 Front Server 구현 [Node.js + Vue.js] 게시판 만들기 3. Node.js를 사용한 Back Server 구현 [Node.js + Vue.js] 게시판 만들기 4. 검색 기능 추가 [Node.js + Vue.js] 게시판 만들기 5. 이미지 업로드 기능 추가
[JAVA] 백준 2162 - 선분 그룹
2022. 10. 26. 19:15
JAVA/백준(BOJ) 문제풀이
문제 https://www.acmicpc.net/problem/2162 2162번: 선분 그룹 첫째 줄에 N(1 ≤ N ≤ 3,000)이 주어진다. 둘째 줄부터 N+1번째 줄에는 양 끝점의 좌표가 x1, y1, x2, y2의 순서로 주어진다. 각 좌표의 절댓값은 5,000을 넘지 않으며, 입력되는 좌표 사이에는 빈칸이 하 www.acmicpc.net 해결 방법 이 문제를 풀기 위해 두가지 알고리즘을 알아야 함 CCW를 사용해 두 선분이 겹치는지 판단 Union-Find를 통해 그룹을 합치고 확인하는 작업 진행 위 두 알고리즘을 알고 같이 사용한다면 쉽게 해결할 수 있음 입력받은 모든 선분들끼리 서로 겹치는지 판단 선분이 겹치는지는 CCW를 통해 판단 두 선분이 겹친다면 Union 과정 진행 위 작업이 끝..
[JAVA] Knapsack 알고리즘
2022. 10. 11. 16:51
JAVA/알고리즘 개념 정리
Knapsack 알고리즘 이란? Knapsack은 배낭이란 뜻으로, Knapsack 알고리즘은 배낭 알고리즘 이라고도 불림 Knapsack 알고리즘은 DP의 일종으로 배낭 채우기 문제에서 유래되었음 배낭 채우기 문제란 배낭의 크기 k와 n개의 물건 각각의 무게와 가치가 주어졌을 때, 배낭에 넣은 물건들의 최대 가치의 합을 구하는 문제 ex) 무게가 7까지 담을 수 있는 배낭이 있고, 5개의 물건의 무게와 가치가 아래와 같다고 생각해 보자 물건 1 : 무게 3, 가치 8 물건 2 : 무게 1, 가치 5 물건 3 : 무게 2, 가치 7 물건 4 : 무게 2, 가치 2 물건 5 : 무게 2, 가치 6 이 때, 가방에 넣을 수 있는 최대 가치를 구해보자 만약 1번 물건(3, 8)만 있었다고 가정해보면 DP 테이..