JPA에서 공부하면서 곰곰히 생각해봤다. 내가 과연 어떻게 테이블을 작성했는지... 또, 마이바티스를 어떻게 이용했는지 생각해봤다. 1년전에 보이지 않는 내용들이 점차 눈에 들어오기 시작했다. 가장 눈에 띄이는건 JOIN관계다. 애초에 테이블을 만들때 JOIN을 사용하지 않는다. SQL은 반드시 외래키를 사용해야 된다는 제약 사항이 전혀 없다. 오히려 외래키를 사용하지 않고 DB를 구축하기도 한다. 그래서 JOIN문을 사용할때 외래키를 사용하지 않고 쿼리 작성하는것이 가능하다. 신기하게도? JPA는 JOIN문을 쿼리 생성하기 전에 미리 만들어 둔다. 무조건 JOIN문을 사용해야 되는것은 아니지만, 이러한 점이 SQL을 작성할때와의 차이점이라 생각이 든다. 그렇다면 어째서 JPA는 이러한 전략을 택했을까?..
Jpa를 공부하다보면 제일 먼저 Entity를 만나볼 수 있습니다. 이걸 보고 있으면 객체이면서 테이블 같은 오묘한 기분을 느낄 수 있습니다. 이는 사실 JPA의 특징의 영속성과 큰 연관이 있습니다. 영속성 영속성이라는 것은 한 객체가 생성 작업이 종료 되었음에도 지속적으로 존재하는 상태라는 것을 말합니다. 물론 억지로 close같은 걸 이용하거나 프로그램을 강제로 종료 시킨다면 소멸 되겠지만 그렇지 않으면 웬만하면 죽지 않습니다. 그게 바로 영속성입니다. 근데 어째서 JPA에서는 영속성이라는 용어를 사용하면서 관리를 하는 걸까요? 그건 바로 객체를 이용해서 테이블을 생성하고 이용하고 싶기 때문이라고 생각합니다. 물론 마이바티스 처럼 자바에서 쿼리를 작성해서 DB에 연동시키는 게 더 좋을거라 생각할지도 ..
maven 내용을 복사한뒤 gradle에 복사하면 gradle로 변환이 되서 반영됨 - 현재 라이브러리는 gson으로 되었지만 다른 것도 가능 - 안되는 것도 있을 수 있겠지만 지금까지는 모두 가능했음 - 현재 사용하는 버전은 7.1 distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip - 다른 버전은 확인안해봐서 모르겠음 - 그래도 상위 버전은 되겠지? - ide는 인텔리제이 gradle내용을 복사한뒤 pom.xml에 붙여넣기를 하는건 의미가 없음 반영되지 않음
api gateway는 msa에서 필수 요소중 하나로 하나의 api로 여러개를 호출 할 수 있다고 한다. 예를 들어, web, app 등등이 존재한다고 가정하면 하나의 API로 이것들을 통신이 가능하다고 한다. 근데 나는 솔직히 이해가 되지 않았다. 왜냐하면 rest api가 web이든 app이든 바뀌지 않을텐데 하나의 api로 통신이 된다는게 말이 되지 않는다고 생각했다. 그림으로 그려보면 다음과 같다. 분명히 restapi는 변경이 되지 않을텐데 api gateway가 있을 필요가 없다고 생각했다. 근데 이건 잘못된 생각이 었다. 단 한가지 내가 빼먹은 부분이 존재하는데 그건 바로 포트(port)다. 즉, 기기1는 1000번 포트를 기기2는 2000번 포트를 기기3은 3000번 포트를 가진다고 해보자..