Inflearn ✅ 내가 하는 공부 로드맵 (feat. 2년 차 주니어가 만든 두 가지 학습 로드맵 이야기)
·
☃︎ 𝐃𝐢𝐚𝐫𝐲
왜 로드맵을 두 개나 만들었나작년 말부터 다시 공부를 시작하면서 고민이 하나 생겼다.강의만 들을까, 책을 읽을까. 둘 다 장단점이 있었다.강의는 개념을 빠르게 이해할 수 있고 코드를 직접 보며 따라 칠 수 있다는 장점이 있다.특히 김영한 선생님 강의는 실습 위주라 손에 익히기 좋다.하지만 깊이 있는 내용은 책만한 게 없더라.특히 Real MySQL이나 이펙티브 자바 같은 책은 실무에서 막힐 때마다 찾아보는 레퍼런스가 되었다.그래서 두 개를 만들었다.강의 중심 로드맵: 빠르게 실무 감각을 익히고 싶을 때책+강의 로드맵: 제대로 깊게 공부하고 싶을 때 강의 로드맵 (21개 코스)강의 로드맵 보러가기이건 순수하게 강의만으로 구성했다.인프런에서 김영한 선생님 강의를 중심으로 Java 기초부터 Spring ..
👩🏻‍💻 Springframwork 실무 : 레거시 API 성능 개선기(feat. JPA) / N+1 문제와의 3라운드 사투🥊
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 배경·문제 정의회사에 입사하고 3개월쯤 지났을 때, 선배가 "이 API 좀 느린데 확인해볼래?"라며게시판 조회 API 하나를 던져주었다.로컬에서 테스트해보니 응답시간이 3초. 데이터가 겨우 100건인데 말이다.쿼리 로그를 켜보니 SELECT 문이 101번 실행되고 있었다.전형적인 N+1 문제였다.fetch join을 적용하면 되겠지 싶었지만, 현실은 그렇게 호락호락하지 않았다.결국 fetch join → @EntityGraph → @BatchSize + DTO 변환까지3번의 시도 끝에 응답시간을 300ms로 줄일 수 있었다. ⟡ 최종 해결 요약최종적으로 선택한 방식은 다음과 같다:Post 엔티티: @BatchSize(size = 100) 적용Service 계층: DTO 변환으로 엔티티 ..
👩🏻‍💻 Springframwork Mig 기록 : 레거시 프로젝트에 단위 테스트 도입하기(feat.실패하고 배운 이야기)
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
2026년 새해가 밝았다.오늘도 난 퇴근 후 공부를 하고 난뒤, 업무를 하면서 겪었던 내용을 정리해 포스팅을 한다😳누구에겐 오늘이 뜻깊고 한해를 마무리하는 날 이지만, 나에겐 그리 특별하지 않다. 그냥 매일 똑같은 하루 같은 느낌이랄까.그래도 이 글을 읽는 분들은 행복한 날이 되길 바래본다❤️다들 새해 복 많이 받으세요🫶 ⟡ 인트로신입으로 입사해 처음 맡은 고도화 프로젝트에서 가장 큰 불안 요소는 테스트 코드가 전혀 없는 레거시 시스템이었다.코드를 수정할 때마다 전체 애플리케이션을 실행해서 수동으로 확인해야 했고, 사이드 이펙트를 발견하는 건 운에 맡겨야 했다.단위 테스트를 도입하려고 했지만 처음에는 방법을 몰라서 여러 번 실패했다.전체 Spring 컨텍스트를 로딩하는 느린 테스트,..
👩🏻‍💻 Springframwork Mig 기록 : @RequiredArgsConstructor와 의존성 주입, 언제 안전하고 언제 위험한가
·
🌱 𝐅𝐫𝐚𝐦𝐞𝐰𝐨𝐫𝐤
⟡ 주제 정의 Spring 프로젝트에서 @RequiredArgsConstructor를 사용한 생성자 주입은 일반적인 패턴이다.하지만 이 방식이 모든 상황에서 안전한 것은 아니다.특히 HttpServletRequest 같은 request-scoped 빈을 주입할 때는 계층별로 다른 결과가 나타난다.이 글에서는 Spring 공식 문서를 기반으로 실무에서 마주치는 케이스들을 분석한다. ⟡ Spring 공식 문서의 의존성 주입 방식 Spring은 세 가지 의존성 주입 방식을 제공한다.// 1. 생성자 주입 (Constructor Injection)private final UserRepository userRepository;// 2. 필드 주입 (Field Injection)@Autowire..
⛔️ Could not transfer artifact ... Received fatal alert: protocol version & maven-surefire-plugin | Spring레거시&Maven&JDK1.7 Build오류 ⛔️
·
⚠️ 𝐄𝐫𝐫𝐨𝐫
👀 개요업무에서 사용하던 IDE는 원래 이클립스였다.내가 담당하는 서비스와 연관된 몇몇 서비스들이 먼저 고도화를 진행하면서, 일부는 VSCode로 넘어갔다.이번에 내 담당 서비스도 고도화를 진행하게 되었고, IDE 역시 VSCode로 전환하게 되었다.사실 나는 그동안 이클립스의 무거움과 잦은 오류 때문에 불편함을 많이 겪었는데, 특히 Git 연결 후 자꾸 실패하거나 거부되는 문제가 있었다.참다못해 혼자 IntelliJ ultimate로 환경을 바꾸고, 가이드 문서까지 작성해 둔 상태였다.혼자 구성하면서 가이드까지 정리하는 과정이 꽤 힘들었다.그런데 고도화 작업을 담당하는 팀에서 기존 소스를 분석하기 위해 환경 구성이 필요했는데내가 만든 문서는 인텔리제이 기준이었고 해당 팀에서는 인텔리제이 유료 버전을..
xml파일이나 java파일 수정 후 적용이 안 되는 경우 | 이클립스 Build오류
·
⚠️ 𝐄𝐫𝐫𝐨𝐫
나는 이전부터 인텔리제이(대학생 인증으로 유료버전을 무료로 사용)를 사용했고 FE만 VSCode를 이용해 왔다.그러다 보니 학원에서도 다들 이클립스를 쓸 때 UI가 너무나 구린 이클립스는 거들떠도 안 본 것 같다.학원 프로젝트를 따라갈 때에도 인텔리제이를 놓을 수 없었기에 난 그렇게 젯브레인의 노예가 됐다😂그리고 난 취업을 했는데 첫 직장의 IDE는 이클립스였다... 그리고 Java의 버전도 학부생 때나 만져본 게 Java8이었는데, 여기는 7...😭적응을 하는데 꽤 오랜 시간이 걸리는 것 같다. 입사 후 구 버전의 툴과 구 버전의 언어를 사용하다 보니 , 매번 오류 투성이었고😮‍💨아직도 적응 중이다.IDE를 사용하면서 , 구 언어를 사용하면서 겪었던 오류를 기록함으로써.추후 동일한 에러가 나타나..
Java7의 날짜계산 : Date, Calendar, SimpleDateFormat(2)
·
📖 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/Jᴀᴠᴀ
안녕하세요 - 티친님들🙋‍♀️  저번 포스팅을 이어서 작성해 보겠습니다.  부족한 신입 개발자 이지만 한번 봐주시겠습니까 -? 👩🏻‍💻   이전 포스팅👇 Java7의 날짜계산 : Date, Calendar, SimpleDateFormat(1)안녕하세요 티친분들🙋‍♀️그동안 포스팅이 많이 뜸(?)했습니다.회사 적응기간이다 보니 티스토리에 포스팅하는 날이 많이 적어졌었어요.그만큼 제가 열심히 적응했다고 생각해 주세요 🥺yurizzy.tistory.com      개발 테스트 준비 필요한 데이터1. 현재 서버의 날짜 : today  2. 입력받은 날짜 데이터 2개(시작일 : startDate , 종료일: endDate)     3. 현재 서버의 날짜(today) - 35일 , 조회 시작 가능한 날..
Java7의 날짜계산 : Date, Calendar, SimpleDateFormat(1)
·
📖 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/Jᴀᴠᴀ
안녕하세요 티친분들🙋‍♀️그동안 포스팅이 많이 뜸(?)했습니다.회사 적응기간이다 보니 티스토리에 포스팅하는 날이 많이 적어졌었어요.그만큼 제가 열심히 적응했다고 생각해 주세요 🥺  오늘 작성할 내용은 날짜계산에 대한 것을 적어보려고 합니다.학원 프로젝트때도 만져봤지만 현재 저는 Java7 버전에서 개발을 하고 있어 조금 다르더라고요.다음에 또 사용할 수 있을 것 같아 잊어먹지 않게 한번 정리를 해보려고요. 시작해 보겠습니다.   날짜 계산이 필요하게 된 이유업무를 하면서 기존 서비스 중인 사이트에 보안 개선건으로 요청이 왔다.해당 기능은 날짜와 검색할 조건을 선택하고 🔍검색 버튼을 클릭하게 되면 해당 조건이 일치한 데이터를 DB에서 가져와 화면에 보여주는 기능이었다.사용자의 이력을 조회하는 기능인데..
일급 컬렉션 (First Class Collection)
·
📖 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞/Jᴀᴠᴀ
며칠 전 개발바닥 유튜브에서 개발자의 이력서를 검토해 준 영상을 보게 됐다. 참가자 분의 Git을 보면서 코드 리뷰도 해주셨는데, 리팩토링 하기 위한 쉬운 코드를 위해 일급 컬렉션이 필요하다는 것을 들었다.일급 컬렉션이 뭘까? 궁금증이 생겼다.학부 때 들었던 것 같았지만 자세히 기억나지 않아 일급 컬렉션에 대해 검색해 봤다.   일급 컬렉션이란 무엇일까?다른 객체와 동일한 권한(지위)을 가진 컬렉션 객체를 의미한다.즉 , 변수에 할당되거나, 매개변수로 전달되거나, 반환값으로 사용될 수 있으며, 다른 객체와 동일한 방식으로 비교될 수 있다.   Java에서 일급 컬렉션 특징변수나 매개변수에 할당할 수 있다다른 객체와 동등한 지위를 가진다반환값으로 사용 가능하다필요시 메서드에서 생성할 수 있다.  향로님의 ..
H2 DataBase (In-Memory Mode)로 사용설정
·
𝐀𝐜𝐚𝐝𝐞𝐦𝐲 : 𝟐𝟎𝟐𝟑-𝟐𝟎𝟐𝟒/Sᴘʀɪɴɢ
개발환경Language: JavaVersion: Java 17Gradle: Build toolSpring Boot: Version 3.2.4   H2 Database 설명H2 Database란?Java로 개발된 오픈 소스 SQL 데이터베이스 관리 시스템(DBMS)이다.가볍고 빠른 속도를 자랑하며 다양한 플랫폼에서 사용할 수 있다는 장점으로 인해 개발 및 테스트 환경에서 널리 활용된다. 특히 In-Memory 모드는 데이터베이스를 메모리에 저장하여 빠른 데이터 접근 속도를 제공하고간편한 사용과 테스트 환경 적합성이라는 특징을 지닌다.별도 설치할 필요 없다  Server ModeH2 Database 서버를 별도의 프로세스로 실행하는 모드입니다.장점 :  In-Memory 모드보다 더 많은 기능을 제공 / 여..
응급구조사편_의료서비스 검색화면 및 로직2
·
𝐀𝐜𝐚𝐝𝐞𝐦𝐲 : 𝟐𝟎𝟐𝟑-𝟐𝟎𝟐𝟒/Eᴍʙᴀᴅ (23.12~24.01)
❤ 김춘장이의 위키백과 - 나만의 공부 기록 Tistory ❤ gayulz - Overview 개발자가 되고싶은 개발어린이💟. gayulz has 11 repositories available. Follow their code on GitHub. github.com GitHub - gayulz/EMBAD_project: EMBAD , MY PROJECT EMBAD , MY PROJECT. Contribute to gayulz/EMBAD_project development by creating an account on GitHub. github.com 응급구조사가 요구한 내용을 처리하여 화면에 응답했다 , 그다음 제공해야 할 서비스는 어떤 내용일까 현재 사용자의 위치 요구한 서비스가 가능한 병원의 정보 병..
응급구조사편_의료서비스 검색화면 및 로직1
·
𝐀𝐜𝐚𝐝𝐞𝐦𝐲 : 𝟐𝟎𝟐𝟑-𝟐𝟎𝟐𝟒/Eᴍʙᴀᴅ (23.12~24.01)
❤ 김춘장이의 위키백과 - 나만의 공부 기록 Tistory ❤ gayulz - Overview 개발자가 되고싶은 개발어린이💟. gayulz has 11 repositories available. Follow their code on GitHub. github.com GitHub - gayulz/EMBAD_project: EMBAD , MY PROJECT EMBAD , MY PROJECT. Contribute to gayulz/EMBAD_project development by creating an account on GitHub. github.com 응급구조사에게 가장 핵심 서비스는 응급실찾기 이다 사용자에게 필요한 정보는 필요한 의료 서비스 정보 직관적으로 확인할 수 있는 위치 필요 의료 서비스를 받을..
김춘덕⸝ဗီူ⸜
'java' 태그의 글 목록