본문 바로가기

개발 이론59

영속성 컨텍스트와 트랜젝션 이 부분이 계속 헷갈려서 약 1주간 방황하다..역시 jpa 김영한님의 책을 보고 어느정도 정리되었다. Entity Manager 엔티티 매니저는 엔티티를 저장, 수정, 삭제, 조회하는 등 엔티티와 관련딘 모든 일을 처리한다. 즉 가상의 데이터 베이스라고 생각하면 된다. 다만 엔티티 매니저는 여러 스레드가 동시에 접그하면 동시성 문제가 발생하므로 스레드간의 절대 공유해서는 안된다. 궁금증 ) 엔티티 매니저의 경우 가상의 데이터베이스라고 했는데 그럼 실제 데이터베이스의 연결을 지속하는가?? 아니다. 필요한 시점에서 커넥션을 얻는다. 즉 보통 트랜젝션을 시작할때 커넥션을 획득한다 영속성 컨텍스트 엔티티를 영구 저장하는 환경이다. 엔티티 매니저를 생성할때 하나의 영속성 컨텍스트가 만들어진다. 엔티티 매니저가 자.. 2023. 12. 29.
트랜젝션에 대해 알아낸거를 기록하자 아니 프로젝트 하다보니 트랜젝션에 대해 생각보다 자세히 알고 있어야하는 느낌이더라... 옛날에는 진짜 아무생각 없이 코드를 짯는데 쿼리 나가는거 보고 이러다보니 트랜젝션이 신경쓰인다. 그래서 검색하면서 알아낸거 하나씩 추가하는 게시판 느낌으로 쓸 예정이다 # 2023.12.28 1. 여러 entityManger가 하나의 영속성 컨텍스트를 공유할 수 있다 -> 동일 트랜젝션에서 entitymanger를 여러번 호출해서 처리하면 같은 영속성 컨텍스트에서 처리된다 -> 다만 다른 트랜젝션이라면 다른 영속성 컨텍스트에서 처리된다 # 2023.12.29 영속성 컨텍스트와 트랜젝션 관련해서 게시글을 작성했다 https://haebing.tistory.com/116 2023. 12. 28.
API호출 RestTemplate, WebClient, Feign?? 개인프로젝트하면서 API호출이 필요해서 Open Feign을 사용했다. 어떠한 이유에서라기 보다 최근에 나온 기술이라고도 하고 생각보다 사용이 쉬워서 Open Feign을 사용했다. 그렇다면 RestTemplate, WebClient,Feign 차이는 뭘까...?? RestTemplate Spring Framework 에서 제공하는 동기식 클라이언트 라이브러리다. 동기식 라이브러리라 단순한 요청처리에는 효과적이다. 다만 오랫동안 인기있는 라이브러리였지만 대량의 요청이나 비동기적인 처리가 필요한 경우에는 성능이슈가 발생하여 최근에 deprecated되어 WebClient를 권장하는 추세이다. WebClient Spring Framework 5부터 도입된 비동기식 Http클라이언트이다. 비동기 및 리액티브 .. 2023. 12. 21.
[Spring] 동시성 어떻게 해결할 것인가? - 분산락 개인프로젝트에서 예약시스템을 구축하고 있다. 그러다보니 동시성 문제가 매우 중요하다. 한날짜에 같이 예약을 걸게 되면 최악의 상황이...그래서 어떻게 동시성을 핸들링 할까하다가 나같은 경우 redisson의 분산락을 이용했다. 일단 동시성이 왜 일어나는지와 동시성을 해결할 수 있는 방법에 대해서 얘기해보자. 이 글은 redis를 통한 분산락 해결책을 더 자세하게 다룰 계획이다. 동시성??그게 뭐고 왜 일어나는 건데?? 동일한 하나의 데이터가 2개이상의 스레드가 동시에 데이터를 제어또는 접근할때 발생하는 문제이다. 예를 들어 재고관리 시스템에서 재고를 감소시킨다고 생각해보자. 재고는 1개 남았다 만약 두 스레드가 병렬로 작업을 진행하게 되면 어느 한쪽에서 예외가 발생하거나 그래야한다. 하지만 실재로 실행해.. 2023. 11. 29.
[Spring Security] AccessToken과 RefreshToken 개인 프로젝트에 AccessToken이랑 RefreshToken을 아무 생각없이 도입하다 문득 생각이 들었다. 나는 왜 Refresh Token을 rdb에 저장했을까?? 만약 로그아웃 했는데 AccessToken이 유효기간이 살아있는 채로 탈취당했다면 어쩌야하는 거지?? 만약 RefreshToken 탈취는...?? 아 기능 하나 중심으로 이렇게 많은 궁금증이 생기다니... 이거 찾다보니 2시간 뚝딱이었다. 나의 밑거름이 되리라 믿고 지금까지 찾아본 결과와 생각을 정리해본다 RefreshToken은 왜 도입했나?? 나의 경우 JWT토큰을 accesstoken으로 하여 인증 인가 서비스를 구현했다. 토큰을 client에게 보내주면 클라이어트에서는 요청의 Authorization헤더에 토큰을 담아서 서버로 보.. 2023. 11. 26.
[Spring] Spring MVC Webconfig와 Interceptors, Argument Resolvers 최근에 개인 프로젝트하면서 스프링 시큐리티 필터말고 인터셉처를 통해서 인증관련된 기능을 구현하고 있다. 어떠한 이유로 스프링 시큐리티를 사용안한다기보다는 부트캠프 미션때 이미 스프링 시큐리티를 간단하게 써본적이있어서 한번 인터셉터를 통해 구현해보고 싶었다. 스프링 시큐리티와 인터셉터가 뭐가 다르냐고 물어본다면 이미 정리해둔 내용이 있다 https://haebing.tistory.com/85 또 arguementResolver가 정확히 몰라서 간단하게 정의와 코드로 정리해둔 내용이 있다 https://haebing.tistory.com/87 WebConfig파일 프로젝트 한번 해봤다하면 WebConfig파일은 한번씩 봤을 것이다. 한마디로 정리하면 웹 구성에 대해 지정하는 내용이 담겨있는 파일이다 스프링부.. 2023. 11. 26.
728x90