테이블의 필드값으로 '리스트'는 본질적으로 들어가는 것이 불가능하다
@OneToMany
는 실제적으로 존재하지 않는 개념이므로 JWT에서 만들어서 사용하는 것이므로 실질적으로는 사용하지 않는다
사실상 @ManyToOne
만 사용하면 된다
참고
cascade
-> 정말 위험한 것이다
부모를 지우면 자식까지 다 지워버리는 것 -> 코드로 정의하지 않았는데 자동으로 무언가가 된다는 건 사실 정말 위험한 것이다
비슷한것orphanRemoval = true
(위험)
데이터는 중요하다
구글이 장기적으로 AI측면에서 강점을 보일것이다?
-> 데이터가 많기 때문에 -> 사람들이 구글에서 검색을해서 => 세상의 모든 데이터를 다 긁어모은다
데이터 = 돈
@ManyToMany를 쓰지 않는 이유?
But 쓰는 경우도 있다
내부적으로는 중간 테이블을 만든다 -> 우리가 이 중간테이블을 파악할 수 가없다 -> 문제가 생겼을때 우리가 파악하고 수정하기 힘들다
JPA -> ORM
Node -> TypeORM
JWT는 stateless, Session은 stateful
무슨 뜻일까?
상태가 없는, 상태가 있는
로그인은 어떻게 동작할까?
계속 naver.com을 검색해서 들어가도 창화면은 똑같다
HTTP의 특징 중 하나가 바로 stateless인데, 무슨 뜻이냐면 요청들은 서로 독립적이라는 것!
상태를 유지하지 않기때문에(무언가 남아있지 않기 때문에) -> 모른다
상태를 갖지 않는다는 것은 '데이터가 없다는 것'
아무런 데이터가 없기 때문에 어떤게 어떤건지 알 수가 없다 -> 증거가 없다
둘중의 유저의 데이터(상태)를 누가 갖고 있을까?
둘다 갖고있다
JWT : 클라이언트가 상태를 갖고 있음
Session : 서버가 상태를 갖고 있음
JWT는 이 안에 필요한 모든 정보를 다 갖고 있다
-> JWT는 상태를 모두 들고 다닌다
자신이 누군지 요청마다 다 알려준다
그건 서버의 입장에서 말하는 것이다
JWT가 데이터를 모두 갖고있으므로 서버입장에서는 데이터가 필요 없다
-> 그래서 stateless이다
JWT 일 때 로그아웃 하는 방법
JWT는 Client에서만 로그아웃이 가능하다
-> 클라이언트에서 JWT를 지우면 된다
Session 일때 로그아웃방법(Client,Server 모두 가능)
1.서버에서 Session데이터(상태)를 지워버린다
2.클라이언트에서 SessionKey를 날린다
1.@ManyToOne을 사용하자
2.Dto에 Entity 안쓰고, Dto 안에도 Dto를 무조건 쓴다
JWT는 stateless, Session은 stateful