분류 전체보기 552

[자바 ORM 표준 JPA 프로그래밍] 10-4. 객체지향 쿼리 언어: Native SQL

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. Native SQLJPA는 JPQL이 아닌 DB 고유의 SQL 문법을 직접 사용하는 방법을 지원합니다.결과 매핑 어노테이션을 사용하여 응답을 정의할 수 있습니다. 사용 상황상황이유복잡한 조인 / 서브쿼리JPQL로 표현하기 어려운 경우DB 특화 기능 사용예: 윈도우 함수, 특정 DB 함수 등성능 최적화JPQL보다 효율적인 쿼리 필요 시기존 SQL 자산 재사용DB에 이미 작성된 쿼리를 그대로 쓰고 싶을 때 예제) Native SQL더보기@Test@Transactionalvoid native_query_entity() { String sql = "SELECT ID, NAME, NICKNAME, AGE, TEAM_ID ..

[자바 ORM 표준 JPA 프로그래밍] 10-2. 객체지향 쿼리 언어: Criteria

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. CriteriaJPQL을 편하게 작성하도록 도와주는 빌더 클래스 모음컴파일 시점에 오류를 발견할 수 있음동적 쿼리를 작성하기 편함 2. 기초항목설명CriteriaBuilderCriteria 쿼리 생성을 위한 시작점CriteriaQuery쿼리 전체 구조를 담는 객체Root조회의 시작점 (FROM 절)PredicateWHERE 조건 표현OrderORDER BY 정렬 표현 예제더보기CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery query = cb.createQuery(User.class);Root u = query.from(User.class);q..

[자바 ORM 표준 JPA 프로그래밍] 10-1. 객체지향 쿼리 언어: JPQL

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. JPQL객체 지향 쿼리SQL 추상화실행 시점에 SQL 문을 생성하여 요청함 예제) JPQL ➡️ SQL더보기// 쿼리 생성String jpql = "select m from Member as m where m.username = 'kim'";List resultList = em.createQuery(jpql, Member.class).getResultList(); 특징구분설명기본 문법SQL과 유사한 문법 사용 (SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 등)- 엔티티명과 필드 사용, 별칭 필수쿼리 객체 API- TypedQuery: 반환 타입 명확할 때- Query: 반환 타입..

[Spring][Test] 3. Testing Annotations

1. 주요 애너테이션애노테이션목적@BootstrapWith테스트 컨텍스트 부트스트래퍼를 커스터마이징할 때 사용@ContextConfiguration테스트 컨텍스트를 구성할 설정을 지정(XML, 자바 설정 클래스 등)@WebAppConfigurationWebApplicationContext 로딩을 명시하여 웹 환경에서 테스트MockServletContext 기반 설정@ContextHierarchy부모-자식 컨텍스트 계층 구조를 정의@TestPropertySource테스트용 프로퍼티 파일 또는 인라인 프로퍼티 지정@TestBean (Spring 6.1+)기존 빈을 오버라이드하거나 테스트 전용 빈 정의@MockitoBean기존 빈을 Mock 객체로 대체@MockitoSpyBean기존 빈을 Spy 객체로 래핑@..

Spring/Spring Test 2025.04.21

[Spring Boot][Test] 6. Test

1. Test Scope Dependenciesspring-boot-starter-test에 포함된 주요 라이브러리라이브러리설명JUnit 5Java 애플리케이션 단위 테스트의 표준 프레임워크Spring Test & Spring Boot TestSpring Boot 애플리케이션을 위한 테스트 유틸리티 및 통합 테스트 지원AssertJ직관적이고 유창한 API를 제공하는 assertion 라이브러리Hamcrestmatcher 객체(제약조건 또는 조건자)를 제공하는 라이브러리MockitoJava용 목(mock) 객체 생성 프레임워크JSONassertJSON 형식 데이터를 위한 assertion 라이브러리JsonPathJSON 데이터를 위한 XPath 유사 쿼리 언어Awaitility비동기 시스템을 테스트하기 위..

Spring/Spring Boot 2025.04.21

[Spring][Test] 2. Integration Testing

1. spring-test 모듈외부 시스템과 연결하지 않고도 통합테스트를 하도록 지원함다양한 테스트 프레임워크와 연동됨 (JUnit, TestNG 등) 2. 테스트 클래스에 의존성 주입TestContext테스트 실행 중의 상태와 메타데이터를 캡슐화한 객체입니다.전체 테스트 컨텍스트의 흐름을 관리기능설명🔁 ApplicationContext 관리테스트 시 사용할 스프링 컨텍스트(ApplicationContext)를 생성하고, 재사용을 위해 캐싱함💉 의존성 주입 지원@Autowired, @Value, @MockBean 등을 통해 테스트 클래스에도 빈 주입 가능🔄 트랜잭션 관리@Transactional을 테스트에 적용해 자동 롤백 같은 트랜잭션 기능 제공🔧 테스트 라이프사이클 관리@BeforeEach, ..

Spring/Spring Test 2025.04.21

[Spring][Test] 1. Unit Testing

1. 단위 테스트 테스트 시에는 코드를 독립적으로 테스트할 수 있어야 해요. (Spring 없이도 테스트가 가능해야 함)Spring의 Dependency Injection 덕분에, J2EE 전통 방식보다 컨테이너에 덜 의존적인 코드 작성이 가능POJO(Plain Old Java Object) 중심의 구조를 만들 수 있음순수한 자바 코드로 작성된 객체로 설계 가능 (특별한 인터페이스나 어노테이션 등에 의존 ❌)객체를 직접 생성하여 테스트할 수 있음을 의미함 장점항목설명Spring IoC와의 연관성⚡ 빠른 실행 속도DB나 서버 등 외부 시스템 없이 실행 가능IoC로 객체를 외부에서 주입하므로, 테스트 시 Mock/Stubs로 대체 가능🛠️ 테스트 주도 개발(TDD)에 유리빠르고 반복적인 테스트 작성 가능P..

Spring/Spring Test 2025.04.19

[더 자바, 애플리케이션을 테스트하는 다양한 방법] 2. Mockito

백기선 님의 인프런 강의 "더 자바, 애플리케이션을 테스트하는 다양한 방법"를 정리한 글입니다. 1. 소개Java 계열에서 가장 많이 사용되는 Mock 프레임워크 (50%+) 구성 요소 Mock: 실제 객체처럼 동작하지만, 프로그래머가 행동을 제어할 수 있는 객체Mockito: Mock 객체를 쉽게 만들고, 조작하고, 검증할 수 있는 프레임워크 대체제EasyMockJMock 2. Mockito 시작하기Gradledependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0' testImplementation 'org.mockito:mockito-core:5.12.0' testImplementation 'org.mocki..

Code/Test 2025.04.19

[더 자바, 애플리케이션을 테스트하는 다양한 방법] 1. JUnit 5

백기선 님의 인프런 강의 "더 자바, 애플리케이션을 테스트하는 다양한 방법"를 정리한 글입니다. 1. JUnit 5자바 개발자들이 가장 많이 사용하는 테스트 프레임워크. (93%의 자바 개발자가 JUnit 사용) 구조구성 요소설명Platform테스트 실행을 위한 런처 및 TestEngine API 제공JupiterJUnit 5의 주요 TestEngine 구현체VintageJUnit 4 및 3을 지원하는 TestEngine 구현체 시작하기plugins { id 'java'}group 'com.example'version '1.0-SNAPSHOT'sourceCompatibility = '1.8'repositories { mavenCentral()}dependencies { testImplem..

Code/Test 2025.04.19

[Tomcat] 1. Introduction

1. Context하나의 웹 애플리케이션을 의미합니다. 2. 주요 디렉토리환경 변수항목CATALINA_HOMECATALINA_BASE정의Tomcat이 설치된 기본 루트 디렉토리특정 Tomcat 인스턴스의 런타임 설정 디렉토리역할공통된 바이너리(.jar) 및 실행 파일 제공인스턴스별 실행 환경 구성 (설정, 로그, 웹앱 배포 등)포함 내용- bin/, lib/, conf/, etc.- conf/, logs/, webapps/, temp/, work/ 등다중 인스턴스 운영 여부하나만 존재 (공유)인스턴스 수만큼 각각 존재 가능공통 설정 공유O (예: setenv.sh, jar 파일 등)X업그레이드 영향업그레이드 시 모든 인스턴스에 즉시 반영 가능변경 없음 (인스턴스별로 유지됨)설정 파일 누락 시 동작해당 디..

Spring/Spring MVC 2025.04.14