본문 바로가기

나의 공부22

객체지향 설계 원칙 SOLID SOLID 원칙은 유명한 로버트 C. 마틴이라는 분깨서 정리하신 5가지 원칙입니다. 객체 지향을 설계할때 지켜야하는 점들을 말하는데요. 하나씩 알아보겠습니다. SRP 단일 책임 원칙 (SIngle responsibility Principle) "하나의 클래스는 하나의 책임만 가져야 한다." 여기서 말하는 책임은 한가지 이유만으로 동작을 해야한다는 의미입니다. 어떠한 코드를 변경할때 이것을 계기로 여러 코드를 바꿔야 한다면 바꾸게 된 클래스는 여러 책임을 가지고 있다는 것이 되므로, 단일 책임 원칙을 지키고 있지 못한 것이죠. 예시를 통해 알아보겠습니다. // 잘못된 예시 class User { public void create() { ... } // DB에 새 사용자를 생성하는 책임 public void.. 2023. 4. 27.
JPA? 왜사용할까. 백엔드 개발을 할때면 저는 DB 와 매핑할때는 JPA를 무조건 선택해서 작업을 했습니다. 근데 이 JPA, 왜쓸까요? MyBatis 등의 다른 매핑 API가 있는데 어떤 점이 있어서 많은 사람들이 사용하는지 아시나요? 저또한 아무것도 모르고 JPA~ 뭐좋으니까 쓰고 있겠지~~ 하고 개발만 해왔었습니다. 하지만 무엇을 쓰고 있는지 알고있는 것이 아니면 더욱이나 제대로 사용하고 있는 것이 아니겠다고 생각했습니다. 이후에 다른 더 좋은 API가 왔을때도 어떤점이 JPA보다 좋은지 따져보고 넘어갈지 생각도 할 수 있으니까요. 그래서 오늘은 JPA가 무엇이고, 왜 사용하는지 저와 함께 알아보아용. MyBatis 백엔드 개발을 하면 데이터를 DB에 저장을 해야합니다. DB에 데이터, 즉 객체를 저장하기 위해선 My.. 2023. 4. 21.
스프링, 스프링부트? 왜사용할까. 취준을 하면서 갑자기 궁금해졌습니다. 스프링과 스프링부트의 차이점이 뭘까? 그리고 스프링부트로 백엔드 개발을 하면 좋은 점이 뭘까. 문득 궁금하지 않으신가요? 저또한 그렇습니다. 그래서 저도 조사하면서 찾은 내용을 공유할까합니다. 스프링 스프링이란 스프링프레임워크라고 하죠 원래 ejb라는 기술이 스프링이전에 백엔드 개발로 많이 쓰이던 기술인데, 아주 고된 작업이 었다고 합니다... 이 고된 작업, 겨울이라고도 할 수 있겠죠? 겨울이 지나고 새로운 봄, 새로운 기술이 왔다고 해서 이름을 스프링이라고 명명했습니다. 우리는 스프링을 써서 왜 백엔드 작업을 할까요? 여러 이유가 존재합니다. 일단 객체지향 언어 자바와 코틀린 기반으로 작업이 되기 때문에, 개발 효율성이 아주 뛰어납니다. 코드를 재사용하거나 모듈화.. 2023. 4. 20.
JPA의 N+1 문제와 해결 서론 JPA를 사용하며 SQL를 관리하던 한 프로젝트에서 어느날, 조회시에 수많은 쿼리가 생성되는 문제를 이 게시글을 들어온 여러분은 겪은적이 많을 거에요. 저또한! 이번에는 N+1 문제가 무엇인지, 해결하기위해서는 어떻게 쿼리를 작성해야하는지에 대해 알아보도록 합시다. JPA N+1문제란? 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터의 개수만큼 연관관계의 조회 쿼리가 발생하여 데이터를 읽어오게 되는 문제입니다. 그렇다면 어떠한 경우에 이 N+1 문제가 발생할까요? 실제 코드를 보면서 같이 확인해보겠습니다. 예시 다음과 같은 상황의 User 클래스와 Team 클래스가 있다고 해봅시다. User 클래스 @Entity @Getter @NoArgsConstructor(access = AccessL.. 2023. 4. 12.
반응형