본문 바로가기

분류 전체보기

(178)
[Java] JUnit5 JUnit JUnit은 자바 언어에서 사용되는 대표적인 테스트 프레임워크로서 단위 테스트를 위한 도구를 제공합니다. 또한 단위 테스트뿐만 아니라 통합 테스트를 할 수 있는 기능도 제공합니다. JUnit의 가장 큰 특징은 어노테이션 기반의 테스트 방식을 지원한다는 것입니다. 또한 JUnit을 활용하면 assert문을 통해 테스트 케이스의 기댓값이 정상적으로 돌출됐는지 검토할 수 있다는 장점이 있습니다. JUnit의 세부 모듈 JUnit Platform JUnit Platform은 JVM에서 테스트를 시작하기 위한 뼈대 역할을 합니다. 테스트를 발견하고 테스트 계획을 생성하는 테스트 엔진(TestEngine)의 인터페이스를 가지고 있습니다. 테스트 엔진은 테스트를 발견하고 테스트를 수행하며, 그 결과를 보고..
[개발 일기] Primary key 타입은 숫자랑 GUID(UUID)중에 어떤 걸 쓸까요? 설문조사 엔티티의 ID 타입은 숫자 Or GUID(UUID)? 졸업 프로젝트 진행중에 나왔던 대화 주제입니다.설문조사 게시글의 Id 타입을 무엇으로 할지... 사실 그 당시에는 GUID 타입에 대해서도 처음 접해봐서 잘 몰랐는데 지금 다시 떠올라서 GUID에 견해에 대해 써보려합니다. GUID(UUID)? GUID는 'Globally Unique Identifier'의 약자로, '전역적으로 고유한 식별자'라는 뜻입니다. GUID는 128비트의 크기를 가지며, 이는 전 세계 어디에서든 고유하게 생성될 수 있는 값을 의미합니다. GUID는 주로 여러 데이터베이스나 서버 간에 데이터를 고유하게 식별하거나 병합할 필요가 있을 때 사용됩니다. 예를 들어, 여러 서버에 분산되어 있는 데이터베이스에서 각 레코드를 고..
[Database] 1. SELECT를 활용한 데이터 조회하기 SQL SELECT 쿼리문을 사용하여 데이터 조회하는 방법 SQL에서 데이터 조회를 위해 SELECT 키워드를 사용한다. 관심 있는 컬럼들을 SELECT에서 명시하고, 조회할 테이블을 FROM에서 명시한다. 조건이 있는 경우 WHERE 키워드를 사용하여 조건을 명시한다. 조건에 맞는 튜플이 선택되어 결과로 반환된다.위 쿼리는 customers 테이블에서 name, email, phone_number를 조회한다.이 쿼리는 city가 'New York'에 해당하는 모든 tuple들을 가져온다. SELECT * FROM customers WHERE city = 'New York'; SELECT name, email, phone_number FROM customers; 별칭을 사용하여 SQL 문을 간결하게 작성..
[Tip]테스트 코드를 작성하는 이유, Given When Then, FIRST 속성 테스트 코드 테스트 코드는 우리가 작성한 코드나 비즈니스 로직 자체를 테스트하기 위해 작성된 코드를 의미한다. Agile 방법론 중 하나인 TDD(Test Driven Development)도 등장한 만큼, 테스트 코드를 더 잘 작성하고 활용하기 위해 고민해 볼 필요가 있다. 테스트 코드의 중요성 개발 과정에서 문제를 미리 발견할 수 있다. 문제를 미리 발견함으로써 문제 상황을 실제 서비스 배포 이전에 방지할 수 있다. 문제가 발생할 수 있는 여러 상황에 맞춰 테스트 코드를 작성하는 것이 중요하며, 이를 통해 잠재된 문제를 발견하는 것에 도움이 된다. 일부러 오류가 발생할 수 있는 테스트 코드를 작성하여 예외 처리가 잘 작동하는지를 확인하거나, 정확히 의도한 비즈니스 로직에 맞춰 테스트 코드를 작성해서 ..
[Spring] Lombok Lombok (롬복) Lombok은 데이터(모델) 클래스를 생성할 때 반복적으로 사용하는 getter/setter같은 메서드를 어노테이션으로 대체하는 기능을 제공하는 라이브러리이다. 이는 반복되는 코드를 생략하여 가독성을 높여줄 수 있다. 또한 어노테이션 기반으로 코드를 자동 생성해주어 생산성이 높아진다. Lombok 의존성 추가 Gradle compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' build.gradle에 dependencies에 위 코드를 추가 Maven org.projectlombok lombok true pom.xml에 위 코드를 추가 Lombok의 주요 어노테이션 @Getter, @..
[개발 일기] OSIV가 false일 때 LazyInitializationExceptions 이거 때매 거의 이틀을 삽질했다.... 이해가 안되어서.... OSIV=false + getReferenceId - @Transactional = LazyInitializationExceptions 문제의 코드 @Override public Product selectProduct(Long number) { Product selectedProduct = productRepository.getReferenceById(number); return selectedProduct; }다음과 같이 getReferenceById()를 사용한 객체를 리턴하고, @Override public ProductResponseDto getProduct(Long number) { Product product = productDAO..
[Spring] OpenSessionInViewFilter Spring Boot에서의 Session Spring Boot에서 Session 은 서버와 클라이언트 간의 통신 상태를 유지하는 데 사용됩니다. Session은 사용자 정보, 로그인 상태, 장바구니 내용 등과 같은 데이터를 저장하는 데 사용할 수 있습니다. 세션 작동 방식 Spring Boot는 기본적으로 Tomcat 서블릿 컨테이너를 사용하며, Tomcat은 HTTP Session을 사용하여 Session을 관리합니다. HTTP Session은 클라이언트 컴퓨터에 저장되는 쿠키를 사용하여 식별됩니다. 세션 생성: 클라이언트가 서버에 처음 요청을 보내면 서버는 새 HTTP 세션을 생성하고 클라이언트 컴퓨터에 쿠키를 보냅니다. 쿠키에는 세션 ID가 포함되어 있으며, 클라이언트는 이후 요청에 쿠키를 포함하여..
[Spring] Controller와 API 구현하기 Controller 컨트롤러는 비즈니스 로직과 클라이언트의 요청을 연결하는 역할을 한다. 즉 컨트롤러는 클라이언트로부터 받은 요청에 대해 서비스 레이어에 구현된 적절한 메서드를 호출해서 결괏값을 받는다. @Controller와 @RestController @Controller와 @RestController는 Spring Framework에서 웹 컨트롤러를 만들 때 사용되는 어노테이션이다. 두 어노테이션 모두 컨트롤러 역할을 수행하지만 작동 방식과 처리하는 요청 유형에 있어 차이가 있다. * 아래는 Google Gemini 답변입니다. 기능 @Controller @RestController 기능 웹 요청 처리 웹 요청 처리 및 JSON 응답 자동 생성 반환 값 View 객체, ModelAndView, St..