JPA
JPA 연관관계
연관관계를 맺을 때마다 부모? 자식? 주인? 용어가 자꾸 혼동이 돼서 면접 준비도 할 겸 나만의 정리를 해보려 한다. 다중성 연관관계의 다중성은 다대일(N:1)(ManyToOne) 일대다(1:N)(OneToMany) 일대일(1:1)(OneToOne) 다대다(N:N)(ManyToMany) 가 있다. 다대다는 가급적 쓰지 않는 것이 좋다고 한다. 방향 방향은 단방향과 양방향 두 가지가 있다. 단방향은 서로 연관된 엔티티 중 한쪽만 상대방을 알고 있는 거고 양방향은 둘 다 서로를 알고 있는 것이라 생각하면 된다 예를 들어보자 대학교 수강신청에서 내가 듣는 수강 과목들은 여러 개(N) 개이고 나는 한 명이다. 이때 나를 기준으로 1:N 관계이고 나는 내가 듣는 수강과목들이 뭐뭐가 있는지 알아야 하니 수강과목을 ..

스프링부트 JPA 중복검색 해결 <트러블 슈팅>
팀프로젝트 과제를 진행하던 중 다음과 같은 코드에서 문제가 발생했다. 카테고리들은 리스트 형태로 들어오고 이걸 responseDto에서는 List으로 담아주어야 하는 코드다. 카테고리로 검색했을땐 카테고리에 맞는 내용들만 딱 맞게 뽑아져 나온다. 하지만 문제는 제목(차은우)로 검색했을 때 발생하는데 계획대로라면 룸1번 topicB에 차은우가 있고 룸2번에 연결돼있는 카테고리에 차은우가 있기때문에 룸1번 1개 룸2번 1개만 나와야 하지만 카테고리에 차은우가 있는 룸2번은 한개만 나오고 제목에 차은우가 있는 1번은 카테고리 갯수만큼 조회가 된다. 다대일 연관관계에서 문제가 되는것같단 생각이 들어 중복문제를 해결해주는 distinct를 붙여주어 시도했다. 그러니 제목으로 검색해도 한개만 나오게 됐다. 문제 해..

1-2. (상속),(JPA심화)
상속의 개념 "extends"라는 단어를 Repository에서 보았다. "클래스의 상속" 이라는 개념인데. 쉽게 말해 "이미 만들어둔거 가져다 쓰자!" 라고 선언하는 것이다. class Person { private String name; private String getName() { return this.name; } } class Tutor extends Person { private String address; // Person 클래스를 상속했기 때문에, // name 멤버변수와 getName() 메소드를 가지고 있습니다. } 위 코드에서 Tutor는 Person을 상속받았기 때문에 Person의 변수인 name과 메소드인 getName()을 사용할 수 있다. 상속 연습하기 Course클래스가 ..

1-1. (RDBMS) (H2) (SQL) (JPA)
RDBMS란? RDBMS(Relational DataBase Management System)은 컴퓨터에 정보를 저장하고 관리하는 기술. 성능/관리 면에서 매우 고도화된 엑셀 이라고 생각하셔도 좋다. RDBMS의 종류 각 제품 간 차이가 크지 않아서 사실 어떤 걸 사용하든 좋다. 유료인 Oracle을 제외하고 보통 MySQL, PostgreSQL 중에서 많이 고르는 편인데, 우리는 실제 배포 시 MySQL을 사용할 예정. 우리가 사용할 RDBMS H2 In-memory DB의 대표 주자인 H2를 먼저 사용해볼 예정. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고 서버가 멈추면 데이터가 모두 삭제되는 데이터베이스를 말합니다. MySQL MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스...