내가 내일배움캠프에 참여한 계기는 무엇인가요?구직 과정에서 혼자 프론트엔드 개발 공부를 하다 한계를 느껴 더 깊이 있는 기술을 배우고 싶어 백엔드 개발을 공부하고자 한다. 다양한 사람들과 협업 경험을 쌓고 보다 완성도 높은 서비스를 만들고 싶어 지원하게 되었다.내가 이

getter/setter 를 만들기 위한 단축키가 있다.이후 command + nGetter and Setter 선택확인 누르면 끝자주 쓰는데 까먹어서 기록해둔다.

Intellij 유료버전을 사용하게 되면서 놀랐던 기능 중 하나인 코드 자동완성while만 입력해도 자동으로 상황에 맞게 완성된 코드를 추천해주는 기능이다.너무 편리했지만 학습을 위해 잠깐 꺼두기로..Settings -> Enable local Full Line com
회원 객체회원 리포지토리 인터페이스회원 리포지토리 메모리 구현체Optionaljava8 부터 추가된 기능Optional 클래스는 Java 8에서 소개된 클래스로, null 값의 처리를 보다 효율적으로 할 수 있도록 도와줍니다.Optional로 객체를 감싸서 사용하게 되
@Controller을 해두면, 아무것도 없지만 어떤 일이 벌어지냐면 Spring 컨테이너가 Spring 처음에 뜰 때 Spring이란 통이 생긴다.거기에 이 컨트롤러 애노테이션이 있으면 컨트롤러 객체를 생성하여 Spring에 넣어두고 이를 Spring이 관리한다.→
참고 : 컨트롤러가 정적 파일보다 우선순위가 높다. → 기존에 정적파일인 index.html을 만들어 놨었는데 이것도 welcome page 였다. 하지만 컨트롤러가 정적파일보다 우선순위가 높기 때문에 home.html이 매핑이 되어 나타나게 된다.회원 등록 폼 컨트

JDBC란 무엇인가? https://ittrue.tistory.com/250JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용

JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다.JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다.JPA를 사용하면 개발 생산성을 크게 높일 수 있다.spring-boot-s

드디어 자바 학습 구간이 끝나고 Spring이 시작되었다!첫 개인 과제는 Spring을 이용한 일정관리 앱 api 만들기먼저 API 명세서, ERD를 작성하고 진행한다.참고API 명세서란?API 명세서란 API명, 요청 값(파라미터), 반환 값, 인증/인가 방식, 데이
REST API를 개발할 때, Server는 Client로 HTML을 전달하지 않고, HTTP Message Body에 직접 데이터를 JSON 형식으로 담아 전송한다.정적 HTML이나 View Template도 HTTP Message Body를 통해 전달되지만, 이번
애플리케이션에서 데이터를 영구적으로 저장하고 관리하기 위해 데이터베이스와 같은 저장소와의 상호작용을 단순화하는 소프트웨어 도구이다.간단한 SQL을 실행할 때도 중복된 코드가 많이 필요하다.Connection, PreparedStatement, ResultSet과 같은

연습삼아 만들었던 게시판 api 에 테스트 코드를 적용해보기로 했다.간단하게 posts, comments 두 개의 테이블을 가지고 진행한 작업이고, 각 Service 에 테스트를 했다.게시글생성조회 -> post 를 생성한 후 받아온 id 로 게시글을 조회해 내용의 일

익명 게시판 api 를 구현하던 중 게시글 좋아요 누르기 요청을 처리하게 되었다. post DB 에서 해당 id 레코드를 가져와 기존 likes + 1 로 update 를 진행하는 방법으로 구현을 했다.여기서 다음과 같은 문제가 발생한다postRepository.fin

Spring 을 사용하여 Scheduler API 를 구현하던 중, Service 에서 두개 이상의 repository 메서드 호출이 있을 경우 Transactional 을 사용였고 다음과 같은 피드백을 받았다.읽기 요청 등 디비를 변경하지 않는 요청과 관련된 경우 T

지난 게시글로 게시판 좋아요 기능을 구현하는 과정에서 동시성 문제가 발생할 수 있음을 알아내고 테스트 코드로 실제 문제가 발생하는 것을 확인했다.(링크) Spring 동시성 테스트그래서 오늘은 이를 해결하는 간단한 방법들을 소개한다.쿼리로 직접 레코드에 락을 걸어 하나

좋아요 요청을 구현하는 과정에서 발생하는 동시성 문제를 해결하는 과정에서 synchronized 를 사용할 때 Transactional 에너테이션과 함께 사용하면 동시성 제어가 되지 않는 것을 확인했다.해당 글 링크 : \[Spring] 좋아요 기능 동시성 제어위 글에

Entity는 데이터베이스의 테이블에 매핑되는 클래스이다. 이 클래스는 테이블의 구조와 매핑되는 필드를 가지고 있으며, JPA 또는 Hibernate와 같은 ORM 기술을 통해 직접 데이터베이스와 연동된다. 비즈니스 로직 내에서 데이터의 영속성을 유지하는 핵심 객체이다

📚 객체 지향 설계의 5가지 기본 원칙으로, 소프트웨어 설계에서 유지보수성, 확장성, 유연성을 높이기 위한 지침을 제공한다.SOLID 원칙의 종류단일 책임 원칙 SRP (Single Responsibility Principle)하나의 클래스는 하나의 책임만 가져야 한

Java와 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하여 객체 지향적으로 데이터베이스 작업을 수행할 수 있도록 지원하는 기술이다. Java의 ORM 기술 표준으로, 대표적인 구현체로 Hibernate를 주로 사용한다. ORM(Object-Relationa

Spring Boot 를 사용하여 간단한 TodoList 서버를 구현하던 중, 각 Todo, User, Comment 의 service 에서 findById 메서드가 완전히 일치한다는 것을 발견했다.공통 로직을 묶기 위해 제네릭 기반의 공통 서비스 인터페이스와 추상 클

Spring에서 Filter와 Interceptor는 HTTP 요청을 가로채고 처리하는 데 사용되지만, 그 동작 방식과 적용 범위에서 몇 가지 차이가 있다.Filter는 Servlet API의 일부이며, 요청과 응답을 변환하거나 가로채는 데 사용된다. Spring에서도
여러가지 데이터베이스 연관관계에 대해 공부하던 중, 일대일 연관관계 부분에서 의문이 생겼다.1 : 1 연관관계에서는 상대방의 PK 하나 당 하나의 데이터만 매칭되는데 그냥 그 FK 를 PK 로 사용할 수 없을까?검색을 좀 해보니 이미 존재하는 방식이고 공유 기본 키(S

스프링 컨트롤러를 @WebMvcTest 를 사용하여 테스트를 하는 과정에서 문제가 발생했다.테스트 코드를 작성하는 방법은 다음과 같다.@WebMvcTest 어노테이션을 사용해 Test 클래스를 만들어 준다.MockMvc 를 Autowired 해준다.요청에 들어가는 데이
스프링 통합 테스트 패키지 구성은 테스트의 목적과 범위에 따라 결정되는 것이 좋다. 통합 테스트는 단위 테스트와는 다른 범위를 검증하므로, 코드와 테스트를 체계적으로 관리하기 위해 패키지 구조를 구분하는 것이 적합하다.아래는 통합 테스트를 위한 패키징을 구성하는 방법과
통합 테스트는 일반적으로 애플리케이션의 여러 계층이 함께 동작하는지 확인하기 위한 테스트이다. 따라서 request -> controller -> service -> repository까지 실제로 호출하는 엔드 투 엔드(End-to-End) 테스트가 주된 목적이다. 그

테스트 커버리지 60퍼 이상을 맞추는 과제를 진행하다 오기가 생겨서...100%에 도전해보기로 했다.@Generated 사용은 비밀...주말을 갈아넣어 결국 완성해낸 100%!!Missed Branches 에서 몇개 빠졌다고는 하는데... 내가 봤을 땐 다 검사가 진행

Redis는 Remote Dictionary Server의 약자로, 데이터를 메모리에 저장하는 인메모리 데이터베이스이다. 빠른 성능과 키-밸류(key-value) 데이터 구조에 기반한 다양한 형태의 자료 구조를 제공하며, 캐시, 세션 관리, 실시간 데이터 분석 등 다양
AOP(Aspect-Oriented Programming)와 단순히 공통 메서드를 분리하는 방법은 기능적으로 비슷해 보일 수 있지만, 관점 지향 프로그래밍(AOP)이 제공하는 강력한 이점이 있는 방식이다.AOP는 반복적으로 사용되는 부가 기능(관점, Aspect)을 비
헥사고날 아키텍처(Hexagonal Architecture)는 Alistair Cockburn이 2005년에 제안한 소프트웨어 아키텍처 패턴으로, "포트와 어댑터 아키텍처(Ports and Adapters Architecture)"라고도 불립니다. 이 아키텍처는 애플리