Book과 Bookstore 사이의 연관관계를 만들어주세요!
-> 이건 내 예상과 다르게, 단방향인 경우 그냥 한쪽에만 만들어도 상관없다.
MySQL에는 나중에 String 대신 Text 라는 자료형을 쓸거다. String은 varcharto로 저장돼서 255자 -> 256이 2^8 이므로 8비트 = 1바이트 용량까지밖에 못쓴다. 넘는순간 바로 에러터짐.
이게 MySQL 문법을 쓰면 두 테이블을 그냥 쉽게 서로 연관시킬 수 있는데,
Spring에서는 OnetoMany나 ManytoOne이나 그런걸 안 써주면 연관관계를 만드는게 생각보다 쉽지않다. 중간 테이블을 만들어서 관리하려고 함.
-> 그런데 중간 테이블이 생기면 곤란한게 PK도 없고 FK만 두개 생기게 됨.
-> 그리고 원하지 않는 어떤 쿼리가 사용되거나 결과가 튀어나올 수도 있음.
-> 그래서 중간 테이블은 안 생기도록 하는게 좋음.
DB는 List를 다룰 수 없음. 근데 Spring은 List를 다루네? -> 이런 부분에서 '패러다임의 불일치' 라는게 보이는 것.
Mappedby는 양방향 연관관계일 때 어느 쪽에서 관계를 관리할까를 정해주는 것임.
OnetoMany는 양방향일때는 항상 Mappedby가 필요함! Mappedby는 뒷자리가 Many인 애들한테만 붙을 수 있음.
관계형DB는 Many쪽에 항상 FK가 있었다. 일대다든 다대일이든 '다' 쪽이 항상 그 관계의 주인이었음.
맵핑관계의 주인이 Book인 경우는 Book 타입의 인스턴스는 변경이 적용되지만 Bookstore 타입의 인스턴스는 뭔가를 넣어도 업데이트가 되지 않는다.
ManytoMany는 가능하면 안쓰는게 좋다. 이 방법은 무조건 중간 테이블을 만들기 때문에 트레이드오프가 생기고, 불필요한 상호작용이 생길 가능성多
DataGrip이라는 툴이 있다. IntelliJ를 쓰는 회사는 보통 이걸 씀.
IntelliJ에서 ERD 어디서 봐요?
쉬프트 두번 -> persistence 라고 검색 -> EntityManagerFactory에서 볼수 있다.