JPQL
·
Spring/QueryDSL, JPQL
JPQL (Java Persistence Query Language)은 JPA(Java Persistence API)에서 엔티티 객체를 기반으로 데이터베이스 쿼리를 작성하기 위해 사용되는 쿼리 언어입니다. JPQL은 SQL과 유사하지만, 데이터베이스 테이블이 아닌 엔티티 클래스와 필드를 대상으로 쿼리를 작성한다는 점에서 차이가 있습니다. JPQL의 특징 및 개념 객체 지향 쿼리 언어JPQL은 엔티티 객체를 대상으로 쿼리를 작성합니다. 즉, SQL처럼 테이블을 대상으로 하는 것이 아니라, 클래스와 객체를 대상으로 합니다.SQL에서는 SELECT * FROM users와 같이 테이블을 조회하지만, JPQL에서는 SELECT u FROM User u와 같이 엔티티 객체 User를 대상으로 쿼리를 작성합니다.S..
단위테스트, 통합테스트
·
Spring
단위 테스트 (Unit Test) 정의 단위 테스트는 소프트웨어의 가장 작은 단위(클래스, 함수, 메서드 등)를 개별적으로 테스트하여, 이들이 예상대로 동작하는지 확인하는 테스트입니다. 특징  • 테스트 범위: 각 개별 함수, 메서드, 또는 클래스와 같은 작은 코드 조각을 테스트합니다. • 목적: 코드의 각 단위가 올바르게 동작하는지 확인하여, 버그를 초기에 발견하고 수정하기 위함입니다. • 독립성: 단위 테스트는 외부 종속성(예: 데이터베이스, 파일 시스템, 네트워크 등)을 가정하지 않고 독립적으로 실행됩니다. 외부 종속성을 모의 객체(Mock)나 스텁(Stub)으로 대체하여 테스트를 수행할 수 있습니다. • 빠른 실행: 단위 테스트는 빠르게 실행되며, 대개 전체 테스트의 실행 속도가 빠릅니다. • 테..
Fetch Type:LazyLoading vs EagerLoading
·
Spring
FetchType은 JPA (Java Persistence API)에서 엔티티와 연관된 데이터들을 어떻게 로딩할지를 결정하는 전략을 정의하는 옵션입니다. JPA에서는 연관된 엔티티를 로딩할 때 두 가지 전략, EAGER 로딩과 LAZY 로딩을 제공합니다. 이 두 가지 전략은 연관 관계의 데이터를 언제 가져올지를 결정하는데, 성능 최적화와 메모리 사용량에 중요한 영향을 미칩니다. 각각의 동작 방식과 장단점을 이해하는 것이 효과적인 JPA 활용의 핵심입니다. Eager 로딩 (즉시 로딩)Eager 로딩은 연관된 엔티티를 즉시 로딩하는 방식입니다. 즉, 연관된 엔티티가 EAGER로 설정되어 있으면, 해당 엔티티가 조회될 때 관련된 모든 엔티티가 함께 조회됩니다.  • 예를 들어, User와 Profile이라는..
미니 프로젝트- 배달 어플리케이션(매우 간단한 구현)
·
Spring/미니 프로젝트(배달)
5일동안 진행한 아웃소싱 프로젝트가 끝났습니다. 프로젝트에서 어디까지 진행되었고, 트러블 슈팅, 우리팀이 보여줄 만한 코드가 무엇이었는지 소개해드리겠습니다. https://github.com/leetaegeon1/Spring26 GitHub - leetaegeon1/Spring26Contribute to leetaegeon1/Spring26 development by creating an account on GitHub.github.com-해당 프로젝트 Git Hub 주소-프로젝트 개요  • 프로젝트 이름: 배달 어플 아웃소싱 • 주요 기능: 가게 관리, 주문 처리, 리뷰 작성, 메뉴 및 카테고리 관리 • 사용 기술 스택: • Backend: Java, Spring Boot, Spring Security..
미니 프로젝트(배달 어플 아웃소싱)
·
Spring/미니 프로젝트(배달)
일단 아웃소싱이란?기업이나 조직이 특정 업무나 프로젝트를 외부 전문 업체나 프리랜서에게 위탁해 수행하는 방식으로, 내부에서 처리하기 어려운 작업을 외부 리소스로 해결하는 것입니다. 처음에는 회원가입. 가게, 주문, 리뷰, 메뉴 정도로 기능 구현을 할려고 합니다. 회원가입사용자 아이디사용자 아이디는 이메일 형식이어야 합니다.비밀번호Bcrypt로 인코딩합니다.암호화를 위한 PasswordEncoder를 직접 만들어 사용합니다.build.gradle의 bcrypt 의존성implementation 'at.favre.lib:bcrypt:0.10.2'해당 conifg패키지 안에 패스워드 인코더 클래스를 추가하여야 한다.import at.favre.lib.crypto.bcrypt.BCrypt;import org.sp..
Error 메시지(enum 활용)
·
Spring
자바 스프링에서 에러 메시지를 효과적으로 관리하는 방법은 여러 가지가 있다. 에러 메세지를 사용자에게 제공할 때 일관성을 유지하고, 명확한 피드백을 주며, 보안 및 디버깅을 고려해야 한다. 다음은 자바 스프링에서 에러 메세지를 관리하는 대표적인 방법이다.  1.  Custom Exception 클래스 작성일단, 특정 에러 상황을 처리하기 위한 사용자 정의 예외 클래스를 작성할 수 있다. 예외마다 구체적인 메세지를 포함하여 상황에 맞는 메세지를 제공이 가능하다. 사용자 정의 예외 클래스 ex)public class InvalidRequestException extends RuntimeException { private String message; public InvalidRequestExcept..
Service 테스트 코드, controller 테스트 코드
·
Spring
자바 스프링에서 서비스 테스트와 컨트롤러 테스트는 각각 비즈니스 로직과 웹 계층을 독립적으로 검증하는 중요한 과정이다. 두 테스트는 구조와 목적에 차이가 있지만, 둘 다 애플리케이션의 안정성을 보장하는 데 중요한 역할을 한다. 서비스 테스트(Service Test)서비스 레이어는 비즈니스 로직을 처리하는 계층으로, 데이터베이스와 상호작용하거나 외부 API를 호출하는 등의 중요한 역할을 한다. 이 레이어를 테스트하는 것은 비즈니스 로직이 예상대로 동작하는지 검증하는 데 목적이 있다. 테스트 대상 : 주로 비즈니스 로직, 레포지토리와의 상호작용, 외부 API 통신 등을 담당하는 서비스 클래스. 주요 사용하는 방법에는 단위 테스트(Unit Test)에서 서비스 메서드를 작은 단위로 테스트하며, 주로 의존성을 ..
AOP(Aspect-Oriented Programming)
·
Spring
Aspect-Oriented-Programing(AOP)는 프로그램의 관심가를 분리하여 코드의 모듈성을 높이고, 유지보수를 용이하게 하는 프로그래밍 패러다임이다. 주로 로그, 보안, 트렌잭션 관리 등 공통적인 관심사(cross-cutting concerns)를 처리할 때 사용된다. AOP의 주요 개념주요 개념Aspect:Aspect는 특정 관심사 또는 기능을 모듈화한 것이다. 예를 들어, 로그 기록, 보안 검사, 트랜잭션 관리 등이 Aspect로 정의될 수 있다.Aspect는 일반적으로 @Aspect 어노테이션을 통해 정의된다.Join Point:Join Point는 Aspect가 적용될 수 있는 프로그램의 특정 지점을 말한다.예를 들어, 메소드 호출, 메소드 실행 후, 객체 생성 시점 등이 Join P..
단위 테스트(Unit Testing), JUnit5
·
Spring
단위 테스트(Unit Testing)소프트웨어 개발에서 개별 코드 단위(예: 함수, 메서드, 클래스 등)가 예상대로 작동하는지 검증하는 테스트 방법이다. 이를 통해 개발자는 코드가 작은 단위에서부터 올바르게 작동하는지 확인할 수 있으며, 전체적인 품질을 향상시킨다. 단위 테스트의 주요 특징작은 코드 단위 테스트: 함수나 메서드와 같은 작은 코드 조각을 테스트한다.독립적: 단위 테스트는 다른 코드나 테스트에 의존하지 않아야 하며, 서로 간섭 없이 실행할 수 있어야 한다.빠른 실행: 작은 단위의 코드만을 테스트하므로 빠르게 실행된다.자동화 기능: 대부분의 단위 테스트는 자동화 도구를 사용하여 지속적으로 실행이 가능해야 한다.반복 가능: 테스트는 여러 번 반복적으로 실행할 수 있어야 하며, 동일한 입력에 대해..
KPT 회고록+뉴스피드 프로젝트 정리본
·
Spring/미니 프로젝트(뉴스피드)
프로젝트 핵심 코드이번 뉴스피드 프로젝트에서 사용했던 핵심 기능과 그에 따른 장점, 단점,그리고 핵심 코드에 대해 설명해보고 합니다. 크게 JWT 인증, 필터, 커스텀 어노테이션, 파사드 패턴 4가지로 정리할 수 있습니다. 해당 코드를 자세하게 보고 싶다면 해당 깃허브 레포지토리로 오시면 됩니다!https://github.com/TeamSparta19/minsutagram GitHub - TeamSparta19/minsutagram: A code repository designed to show the best GitHub has to offer.A code repository designed to show the best GitHub has to offer. - TeamSparta19/minsutagr..