본문 바로가기
728x90

분류 전체보기136

코틀린 jpa 지연로딩 코틀린으로 개인 프로젝트를 진행하던 중 흥미로운(미칠뻔한) 상황을 포스팅해보려고 합니다. jpa를 사용하면서 중요하게 신경써야하는 부분이 n+1 쿼리라고 생각합니다. 그 이유는 당장의 슬로우 쿼리는 아니지만.. 개발자도 모르는 사이에 n+1 쿼리가 쌓여가고 사용자 수가 많아지면 언젠가 데이터베이스 서버에 부하를 줄 수 있기 때문입니다! 메모리 안차면 좋고~ 따라서, 저는 jpa를 사용하면 fetchJoin을 이용해서 최대한 n+1쿼리가 안나게 만드려고 하는데요! 코틀린으로 jpa를 사용하면서 무슨 짓을 해도 발생하는 n+1 쿼리 때문에 매우 흥미로운(정신 나갈뻔..) 상황이 있었습니다 ㅎㅎ 상황을 만들어보겠습니다. team과 member가 있고 다대일 관계입니다. member에서 team을 fetchTy.. 2024. 4. 1.
트랜잭션 예외처리 롤백 개인 프로젝트를 하며 만났던 당황스러운 상황에 대해서 포스팅을 해보려고 합니다. 결론부터 말씀드리면 트랜잭션 사용 중 예외가 발생하면 롤백이 발생하는데 unCheked예외일 경우에만 롤백이 발생한다! 입니다. 간단한 예시 상황을 만들어 보겠습니다. (학습목표 포함!) 멤버와 팀이 존재한다. 팀을 저장할 때 멤버를 함께 생성한다. 팀은 성공적으로 insert쿼리가 나갔고 멤버를 저장하는 타이밍에 예외가 발생한다. 이때 checkedException과 unCheckedException이 발생했을 때 어떻게 다른지 확인해보자~ 우선, 제가 잘못 알고 있었던 부분은 '예외의 따라서 롤백이 되는 것이 아닌 예외가 발생하면 무조건 롤백' 입니다. 따라서, 위의 상황에서 4번에 상관없이 무조건 팀도 롤백이 되는 줄 .. 2024. 4. 1.
[객체지향의 사실과 오해] 2장 이상한 나라의 객체 객체지향과 인지 능력 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유 -> 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지능력에 기반을 두고 있기 때문 객체 : 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것 객체지향 프로그램 : 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 시작 그러나, 객체지향 패러다임의 목적 현실 세계 모방 x 현실 세계를 기반으로 새로운 세계를 창조 -> 소프트웨어 세계에서 살아가는 객체는 현실 세계에 존재하는 객체와는 전혀 다른 모습을 보이는 것이 일반적! 예시) 스스로 전원을 킬 수 있는 전구 주문 객체가 자신의 금액을 .. 2024. 3. 16.
[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체 시너지를 생각해라. 전체는 부분의 합보다 크다. 객체지향의 공부를 처음 접하는 대부분의 사람들은 '객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임' 이라는 설명을 접하게 된다. 하지만 위의 패러다임은 철학적인 개념으로는 적합할수 있으나 유연하고 실용적인 관점에서는 적합하지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것이다. 그렇다면 왜 자꾸 실세계의 모델링이라는 개념을 사용하는 것일까? -> 객체지향의 캡슐화와 자율성을 설명하는데 효과적 -> 객체지향의 기본 사상을 이해하고 학습하는데 효과적 처음에 이부분을 읽었을 때는 조금 당황스러운 부분이 있었습니다.. 지금까지 알고 있었던 개념이 사실 적합하지 않을 수도..?? 협력하는 사람들 커피를 만들어 내.. 2024. 3. 12.
[cs 스터디] 운영체제 후기 5주차동안의 운영체제 스터디 후기를 작성하게 되었습니다! 1~3주차는 모두 열심히 참여했지만.. 4주차 ~ 5주차는 개인 이슈때문에 참석하지 못했습니다. 우선, 운영체제 스터디를 참여하면서 가장 좋았고 기억에 남는 것은 면접에 대한 피드백과 개발을 공부하는 사람들과의 소통을 할 수 있었다는 점입니다. 저는 개인적으로 면접을 체계적으로 준비해본 경험이 없었습니다. 제가 공부한 것들에 대해서 그저 정리만 하고 면접관이 질문하면 답만 하는 면접을 준비했었습니다. 하지만, 스터디를 통해서 면접관이 원하는게 무엇일까? 에 대해서 다시 한번 생각하게 되었고 다른 분들의 면접 시 장점, 저의 면접시 단점에 대해서도 알게 되었습니다. 이를 기반으로 면접을 볼 때 한층 더 높아진 자신감으로 접할 수 있을 거라는 확신이 .. 2024. 2. 15.
[cs 스터디 - 운영체제 4주차] 병행성(동시성)에 대해 설명해주세요. 답변 병행성은 여러 작업을 번갈아가며 빠르게 수행시킴으로써 사용자가 다수의 작업이 도잇 작동하는 것처럼 느끼는 것을 말함 여러 프로세스들을 번갈아가며 수행시키면, 공유 자원에 대한 문제가 생길 수 있기 때문에 프로세스간 동기화 작업을 해줘야 함 병렬성에 대해 설명해주세요. 답변 실제 물리적으로 동시에 실행되는 것을 뜻함 여러개의 CPU들이 동시에 멀티 쓰레드를 실행시키는 것을 예시로 들 수 있음 프로세스 동기화에 대해 설명해 주세요. 답변 프로세스 동기화란, 협력하는 프로세스 사이에서 공유 자원의 일관성을 보장하는 것 프로세스가 공유 자원을 서로 사용하려는 상황에서 Race Condition을 방지하기 위해 특별한 규칙(Lock - 뮤텍스, 세마포어)을 만드는 것 C.. 2024. 2. 5.
728x90