양방향 @OneToMany는 쓰지 않는다? JWT는 stateless, Session은 stateful?

이상민·2024년 8월 30일
0

실무에서는 양방향,OneToMany는 사용하지 않는다?

테이블의 필드값으로 '리스트'는 본질적으로 들어가는 것이 불가능하다
@OneToMany는 실제적으로 존재하지 않는 개념이므로 JWT에서 만들어서 사용하는 것이므로 실질적으로는 사용하지 않는다

사실상 @ManyToOne만 사용하면 된다

참고
cascade -> 정말 위험한 것이다
부모를 지우면 자식까지 다 지워버리는 것 -> 코드로 정의하지 않았는데 자동으로 무언가가 된다는 건 사실 정말 위험한 것이다
비슷한것 orphanRemoval = true (위험)

데이터는 중요하다

구글이 장기적으로 AI측면에서 강점을 보일것이다?

-> 데이터가 많기 때문에 -> 사람들이 구글에서 검색을해서 => 세상의 모든 데이터를 다 긁어모은다

데이터 = 돈

@ManyToMany를 쓰지 않는 이유?
But 쓰는 경우도 있다

내부적으로는 중간 테이블을 만든다 -> 우리가 이 중간테이블을 파악할 수 가없다 -> 문제가 생겼을때 우리가 파악하고 수정하기 힘들다

JPA -> ORM
Node -> TypeORM

JWT와 세션(매우 중요)

JWT의 특징?

JWT는 stateless, Session은 stateful

무슨 뜻일까?

상태가 없는, 상태가 있는

로그인

로그인은 어떻게 동작할까?


계속 naver.com을 검색해서 들어가도 창화면은 똑같다

HTTP의 특징 중 하나가 바로 stateless인데, 무슨 뜻이냐면 요청들은 서로 독립적이라는 것!

상태를 유지하지 않기때문에(무언가 남아있지 않기 때문에) -> 모른다

상태를 갖지 않는다는 것은 '데이터가 없다는 것'
아무런 데이터가 없기 때문에 어떤게 어떤건지 알 수가 없다 -> 증거가 없다

JWT와 Session?

둘중의 유저의 데이터(상태)를 누가 갖고 있을까?

둘다 갖고있다

JWT : 클라이언트가 상태를 갖고 있음
Session : 서버가 상태를 갖고 있음

JWT는 이 안에 필요한 모든 정보를 다 갖고 있다
-> JWT는 상태를 모두 들고 다닌다
자신이 누군지 요청마다 다 알려준다

근데 상태가 왜 없다고 할까? 왜 stateless일까?

그건 서버의 입장에서 말하는 것이다

JWT가 데이터를 모두 갖고있으므로 서버입장에서는 데이터가 필요 없다
-> 그래서 stateless이다

JWT 일 때 로그아웃 하는 방법
JWT는 Client에서만 로그아웃이 가능하다
-> 클라이언트에서 JWT를 지우면 된다

Session 일때 로그아웃방법(Client,Server 모두 가능)
1.서버에서 Session데이터(상태)를 지워버린다
2.클라이언트에서 SessionKey를 날린다

연관관계에서 생각해야 할 것

1.@ManyToOne을 사용하자
2.Dto에 Entity 안쓰고, Dto 안에도 Dto를 무조건 쓴다

정리

JWT는 stateless, Session은 stateful

profile
안녕하세요

0개의 댓글