💻 Backend 82

TIL / 2022-01-24 - 스프링

[한 것] 앱 개발 프로젝트에서 쪽지 기능 다량 수정(각 유저의 방 확인 & 메시지 불러오기) SQLD 자격증 66page까지 풀기 완료 스프링 강의(기본편 - 싱글톤 파트) 듣기 완료 [배운 것] JPA에서 nativeQuery의 쓰임을 알게 되었다. SQL의 기초 커리문을 복습하였다. 싱글톤 패턴과 싱글톤 컨테이너에 대해 알게 되었다. [느낀점] SQLD 자격증 공부가 조금 힘든 것 같다. [할 것] SQLD 자격증 풀기 스프링 스터디 강의 듣기 르탄즈 PPT 수정하기

💻 Backend/TIL 2022.01.25

싱글톤 방식의 주의점

싱글톤 패턴, 스프링 같은 싱글톤 컨테이너를 사용할 때, 객체 인스턴스를 하나만 생성해서 공유하는 싱글톤 방식은 여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지(stateful)하게 설계하면 안된다. 무상태(stateful)로 설계해야 된다. 특정 클라이언트에 의존적인 필드가 있으면 안된다. 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다. 가급적 읽기만 가능해야 한다. 자바에서 공유되지 않는, 지역변수, 파라미터, ThreadLocal 등을 사용해야 한다. 스프링 빈의 필드에 공유 값을 설정 금지해야 한다.

JPA, JPQL에서 limit 사용하기

@Query(nativeQuery = true, value = "SELECT * FROM SLSNotification s WHERE s.userId = :userId ORDER BY snumber DESC LIMIT 20") List getUserIdforManage(@Param("userId") String userId); 쿼리에서 limit을 사용하기 위해서, nativeQuery = true문을 옵션으로 추가하여 사용할 수 있습니다. 출처 https://stackoverflow.com/questions/47616482/how-to-limit-result-in-query-used-in-spring-data-repository How to limit result in @Query used in Spri..

싱글톤 컨테이너란?

스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤(1개만 생성)으로 관리한다. 스프링 빈이 바로 싱글톤으로 관리되는 빈이다. 스프링 컨테이너는 싱글턴 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리한다. 스프링 컨테이너는 싱글톤 컨테이너 역할을 하는데, 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리이다. [싱글톤 컨테이너의 장점] 싱글톤 패턴을 위한 지저분한 코드가 들어가지 않아도 된다. DIP, OCP, 테스트, private 생성자로 부터 자유롭게 싱글톤을 사용할 수 있다. 이렇게 생성자 의존성 주입으로, 스프링 빈에 postRepository가 자동으로 주입되어 postRepository를 요청할때마다 스프링 컨테이너에서 동일한 postRepositor..

싱글톤 패턴이란?

싱글톤 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 패턴은 private 생성자를 사용해서, 외부 클래스에서 임의로 new 키워드를 통해 객체 생성 하는 것을 막는다. 싱글톤 패턴을 적용한 서비스를 한번 구현해보자. 자기 자신을 내부에 private으로 가지고 있다. static은 클래스 레벨에 존재하기 때문에 단 하나만 존재하기 때문에 선언한다. private 생성자를 이용하여 다른 클래스에서 singletonservice를 부르려는 것을 막는다. 하지만 이러한 구현을 일일이 할 필요없이 스프링 컨테이너를 쓰면 객체를 싱글톤으로 만들어 관리해준다. 기존에 있는 객체를 재활용하여 성능 향상한다는 장점이 있다. [싱글톤 패턴의 단점] 싱글톤 패턴을 구현하는 코드 자..

싱글톤이란?

싱글톤은 객체 인스턴스가 자바 JVM에 하나만 존재해야 하는 상태를 의미합니다. 왜 웹 어플리케이션에 싱글톤 패턴이 필요할까? 스프링은 주로 기업용 온라인 서비스를 지원하려고 만들어졌습니다. 스프링 애플리케이션은 주로 웹 애플리케이션 입니다. 웹 어플리케이션은 보통 여러 고객이 동시에 요청합니다. 스프링이 없는 DI 컨테이너의 경우 웹 서비스에서 여러 사람이 요청하면, 서비스 객체를 각각마다 생성하여 반환해야 합니다. 즉 계속 요청할때마다 객체를 만들어야 하여 비효율적입니다. 그래서 만들어진 것이 해당 객체가 딱 1개만 생성되고 공유하도록 설계하면 된다라는 개념 → 싱글톤 패턴입니다.

TIL / 2022-01-21 - 대외활동

[한 것] UMC 앱 개발 프로젝트를 한창 진행 중(~ing) 앱 개발 프로젝트에서 쪽지 기능 추가(각 유저의 방 확인 API) BUT 오류 발생 SQLD 자격증 2단원 풀기 완료 백준 15683번(감시) 풀기 완료 [배운 것] JPA에서 최신순 게시글 하나 가져오기 쿼리를 단순히 레포지토리에서 FirstBy로 가져올 수 있음을 알게 되었다. 그리고 DB 기본 용어 (SQL, DDL, DML, DCL, TCL) 를 복습 차원에서 공부하게 되었다. [느낀점] 하루에 해야할게 너무 많은 것 같다. 포기하지 말자. [할 것] SQLD 자격증 풀기 스프링 스터디 강의 듣기

💻 Backend/TIL 2022.01.22

TIL / 2022-01-18 - 스프링

[한 것] UMC 앱 개발 프로젝트를 한창 진행 중(~ing) 쪽지 기능 구현(쪽지 보내기 및 도메인 구현 틀 제작 완료) 10주 스터디 지원 완료 [배운 것] 직접 설명하는 것이 중요하다는 것을 알았다. 공부 후 -> 남에게 설명하는 것이 진정한 공부 [느낀점] 요즘 JPA로 스프링 구현하는 것이 재밌다. 알아가는 것이 쏠쏠히 재밌는듯..? [할 것] 스파르타코딩클럽 르탄즈 2기 1주 생각해보기 SQLD 자격증 준비하기

💻 Backend/TIL 2022.01.19

TIL / 2022-01-16 백준

[한 것] UMC 앱 개발 프로젝트를 한창 진행 중(~ing) 스파르타코딩클럽 르탄즈 2기 합격! UMC 앱 개발 프로젝트 개발 회의 완료 백준 15683번 풀기 실패.. 트웬비 스터디 개발자 구글폼 작성 완료 [배운 것] 주변에 너무 열심히 사는 분들이 많은 것 같다. 오늘 회의를 하면서 API 명세서를 사용할 때 Swagger를 사용하면 더욱 편리하다는 것을 새롭게 알게 되었다. [느낀점] 오늘 바킹독 알고리즘 강의를 조금 수강하면서 백준 15683번(감시) 기출 문제를 풀어봤는데 3시간 시도 했는데 실패했다.. 스프링 개발은 재밌는데 알고리즘 풀이는 왤케 힘들까.. 일이 생각 및 계획한대로 안되면 정말 화가 많이 난다.내 자신에게 조금 실망한 것 같다. 스파르타코딩클럽 르탄즈 2기 합격해서 너무 기..

💻 Backend/TIL 2022.01.17