Mockito

단위 테스트 진행에 필요한 모의 객체(@Mock)를 관리해주는 자바의 오픈소스 프레임워크이다.모의 객체는 실제 객체와 비슷하지만, 개발자가 테스트 시나리오에 따라 제어할 수 있는 가짜 객체이다.가짜 객체를 생성하고, 메서드간 상호작용을 검증한다.외부 작업의 호출 여부를

2일 전
·
0개의 댓글
·

계층별 검증 책임

클라이언트가 API명세에 맞게 요청했는지 검증한다.주로 @Valid를 통한다.올바른 입력값도 비즈니스 규칙에 어긋난 수 있다.예를 들어 이메일의 중복검사이다.Email의 경우는 @Email를 통해 검사하는게 보편적이지만 특정 필드의 형식이 지정되어 있다면 정규식 검사를

2일 전
·
0개의 댓글
·

영속성 컨텍스트 1차 캐시에 대한 실험

외부API로부터 모든(171개) 레코드를 갱신받는 코드를 작성해야 했다.for를 통해 update를 진행하면 171번의 find sql쿼리가 진행된다.for문 전에 findAll을 진행하면 171번이 find가 1차 캐시를 검색하고, sql쿼리가 1번으로 감소하리라 예

2026년 10월 22일
·
0개의 댓글
·
post-thumbnail

팀 프로젝트 findex 리포트

프로젝트 개요 > 공공데이터포털의 지수시세정보 api로부터 지수들의 정보를 받아오고, 차트 분석을 보여준다. 담당 작업, 성과 1.JPA 엔티티 맵핑 > 함께 제작한 ERD를 바탕으로 모든 엔티티에 대한 JPA 어노테이션 작업을 진행하고, 이후 초안에서 DB구조가

2026년 10월 22일
·
0개의 댓글
·

페이징 (page,slice), (오프셋, 커서) 작성중

오프셋 페이지오프셋은 몇개의 데이터를 건너뛸지 정하고, 데이터를 조회한다.size가 10인 페이지의 n번째 페이지를 조회한다면 limit n offset (10 \* (n-1)) 쿼리가 적용된다.장점 : 특정 페이지를 바로 불러올 수 있다.단점 : 페이지 검색 사이에

2026년 10월 18일
·
0개의 댓글
·

트랜잭션의 격리수준

Isolation Leve은 여러 트랜잭션이 동시에 실행될 때, 서로의 변경 사항을 어느 정도까지 허용할 것인지 결정하는 기준이다.격리 수준이 낮으면 동시성이 높아지고, 격리 수준이 높으면 일관성이 높아지는 Trade-off이다.READ UNCOMMITTED: 커밋되지

2026년 10월 11일
·
0개의 댓글
·

JPA의 N+1 문제

처음 실행한 SQL 외에 연관 데이터를 가져오기 위해 추가 SQL이 실행되는 문제이다.예를 들어 게시글 100개를 조회하고, 각 게시글의 작성자를 확인한다고 가정하자.게시글 조회: SQL 1회각 게시글의 작성자 조회: 최대 SQL 100회총 SQL 실행 횟수: 최대 1

2026년 10월 9일
·
0개의 댓글
·

정규화

데이터의 중복을 최소화하고, 무결성을 유지하기 위해 테이블을 분해하는 방법이다. 하지만 정규화 단계가 올라갈수록 JOIN연산이 증가하고 조회가 복잡해져 대부분의 경우 3NF까지만 진행하고 필요할 경우 BCNF를 고려한다.원자값으로 구성 : 모든 칼럼이 더 이상 분해할

2026년 10월 5일
·
0개의 댓글
·

SQL

테이블, 뷰같은 데이터를 정의한다.(ex : 제약조건)CREATE : 새로운 DB 객체를 생성한다.ALTER : 기존 DB 객체의 구조를 변경한다.DROP : DB 객체를 삭제한다.TRUNCATE : 테이블의 모든 정보를 삭제하고 초기상태로 되돌린다.view는 데이터

2026년 10월 2일
·
0개의 댓글
·
post-thumbnail

왜 SOAP환경에서 REST로 발전하였을까?

SOAP은 XML을 기반으로 메시지를 교환하는 프로토콜로, 기업 간 시스템 통합이나 복잡한 분산 시스템에서 널리 사용되었다.DTD를 지원하긴 하지만 스키마(XSD)의 사용을 강력하게 권장했다.SOAP의 단점 중 많은 부분은 스키마의 단점에서 왔다.강제된 스키마 : 명확

2026년 9월 27일
·
0개의 댓글
·

Spring에서 AOP가 필요한 이유

Aspect Oriented Programming, 관점 지향 프로그래밍여러 클래스나 메서드가 공통적으로 필요하는 기능을 핵심 비즈니스 로직과 분리하는 방식이다.AOP를 사용하지 않으면 여러 메서드에 동일한 코드가 반복될 수 있다.특정 기능을 필요로 하는 클래스 10개

2026년 9월 20일
·
0개의 댓글
·

Spring MVC, @Controller와 @RestController의 차이

클라이언트 → 디스패처서블릿(DispatcherServlet) → Controller → Service → Repository → Controller → 디스패처서블릿(DispatcherServlet) → 클라이언트클라이언트가 HTTP 요청을 보낸다.Dispatcher

2026년 9월 20일
·
0개의 댓글
·
post-thumbnail

미션4 포스트맨

유저 생성전체 유저 조회유저 수정온라인 상태 업데이트유저 삭제

2026년 9월 19일
·
0개의 댓글
·

Spring Bean

@Component는 Spring이 해당 클래스를 Bean으로 등록하도록 지정하는 annotation입니다.Spring Boot의 컴포넌트 스캔 대상 패키지에 포함되어 있다면 애플리케이션 시작 시 Bean으로 등록됩니다.@Service, @Repository, @Con

2026년 9월 13일
·
0개의 댓글
·

웹 서버(Web Server)와 WAS(Web Application Server)의 차이

웹 서버(Web Server)와 WAS(Web Application Server)의 차이 1.웹 서버 >웹 서버(Web Server)는 클라이언트의 HTTP 요청을 받아 정적 리소스를 제공하고, 필요한 경우 애플리케이션 서버로 요청을 전달하는 역할을 합니다. 정적 리소

2026년 9월 13일
·
0개의 댓글
·

Stream API (map, flatMap)

Stream의 요소를 1대1로 변환하는 연산이다. 아래 코드는 1~10으로 구성된 list 제곱을 구해 list2에 반환하는 코드이다.JCF의 차원을 한단계 낮추어, 자료구조를 단순화한다. 아래 코드에서는 map(학과, map<이름,번호>) 구조에서 map&l

2026년 9월 13일
·
0개의 댓글
·

SRP, OCP

클래스는 하나의 책임, 하나의 변경 사유만 가져야 한다.아래의 장점들이 모여서 테스트 & 검증이 쉬워지며, 유지보수 난이도도 감소함\-가독성 증가 : 클래스 하나의 행동 범위가 작아지므로 읽고 이해하기 쉬워짐\-결합도 감소 : 하나의 클래스 변경이 다른 코드에 미치는

2026년 9월 13일
·
0개의 댓글
·
post-thumbnail

Spring Framework의 탄생, 프레임워크와 라이브러리의 차이

Spring이 등장하기 전에는 EJB(Enterprise JavaBeans)를 통해 엔터프라이즈 어플리케이션을 개발하였다.EJB의 등장 배경은 아래와 같다.트랜잭션 처리를 일관되게 관리하고 싶다.분산 시스템 간의 통신을 쉽게 처리하고 싶다.인증 및 권한 제어를 코드 외

2026년 9월 4일
·
0개의 댓글
·

HashSet이 빠른 이유, O(n)과 O(log n)차이는 무엇인가?

해시함수를 사용해 저장할 위치를 정한다새로 들어온 값의 해시값을 계산하고, 그 해시값을 바탕으로 해당 버킷을 찾아 기존 데이터와 비교한다.그렇기 때문에 List처럼 모든 index를 순회하며 비교할 필요가 없다.해시값이 같으면 같은 데이터인가?항상 같은 데이터가 아닐

2026년 8월 30일
·
0개의 댓글
·

Git & Git Hub

🇶 git rebase와 git merge의 차이점을 설명하고, 각각 어떤 상황에서 사용하는 것이 적절한지 설명해주세요. 1. git rebase > 브랜치의 base를 옮긴다. 커밋 히스토리를 선형화하여 그래프를 단순화할 수 있지만, 기존의 브랜치 분기 및 병합

2026년 8월 17일
·
0개의 댓글
·