매핑을 왜 하는가 —> db테이블과 객체의 차이에서 나오는 것
객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다.
- 조영호 -
db 에서 테이블의 연관 관계는 fk연결을 통해서 끝(1개로 인해 양방향이 됨)
객체는 양방향이 없음. 두개의 단방향을 설정하여 양방향으로 착각하게 만드는 것임. (fk)
ex) table에서는 총 1개의 연관관계가 있음
게시판 ←→ 리뷰 (양방향)
ex) 객체에서는 총 2개의 연관관계가 있음 —> 양방향인것처럼(객체중심으로 db를 다루기 위한 것 —> JPA)
게시판 → 리뷰 (단방향)
리뷰 → 게시판(단방향)
select b.name, a.name, p.name
from book b, author a, publisher p
where b.author_id = a.id and
b.author_id = p.id;
SQL
복사
select book.name, author.name, publisher.name
from book, author, publisher
where book.author_id = author.id and
book.author_id = publisher.id;
SQL
복사
동적쿼리내용 —> where문이 계속 변할 수 있다는 것
String a = “select ~~”
String b = “from ~~”
String c = “where “
String d = “and ~~”
a+b+c+d
select ~~ from ~~ where ~~ and~~~
Java
복사
—> mybatis(동적쿼리내용) —> qurey~~ // mysql
⇒ 동적 쿼리 내용이 추가될 때마다 구문을 직접 작성해서 추가해줘야 한다.
db 테이블끼리 서로 관계가 있다는거잖아요 다이어그램도 그렇고 IE표기법
매핑의 궁극적인 목표는 —> 연관된 칼럼끼리 어떻게 해야 쿼리문이 줄면서 원하는 데이터값을 꺼내올 수 있는지
book을통해서 다른곳의 정보를 얻는거죠
book —> author_id
bookd —> publisher_id
OneToOne
OneToMany
ManyToOne
ManyToMany —> 유지보수 힘듦. (대안책이들있데여)
그러면 뭐가 One? 다른게 Many? 사실 우리가 깨달아야 하는것..
—db에서 FK ← 갖고있는 곳을 주인이라고 하더라구요—
book
author
publisher
생각나는 것을 아무거나 적어주세요
테이블을 분리하지 않고 그냥 사용했을 경우? 
하나의 고유한 책(같은책을 의미하는것이아닙니다. 사람으로따지면 주민등록번호처럼 책도 그런 번호가있을텐데 그 번호가 기준. 자바로따지면 메모리영역기준)에 출판사는 1개여도, 저자는 여러명일 수 있으니까.
ManyToMany 가장 큰 단점이 쿼리문 길어지거든여.. 안에 있는 녀석들이 어마무시해요..
author - book - publisher
아마.. 실무가면 만들겠지??
책찾으면 거기에 저자, 출판사를 보는 느낌인까?
교보문고 서점 저자이름으로 검색가능하잖아. —> 기능추가 author OneToMany(mappedBy = “”)
hospital(병원)
review(리뷰)
근의공식 —> 왜그런지 모르지만 일단 이렇게쓴다.
애노테이션
ManyToOne + JoinColum(name = “*_id” —> hospital_id)
Review 엔티티
Hospital 엔티티
OneToMany(mappedBy = “객체”)
private List<객체명> 객체s = new ArrayList<>();
생각나는 것을 아무거나 적어주세요
아까 아는 지인한테 물어본 내용인데
이렇게 답변이 왔었어요 목이 아파서 여기다 캡쳐올려놓을게요