본문 바로가기

전체 글292

2022. 11. 09. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - Testing Hamcrest를 사용한 Assertion 슬라이스 테스트(Slice Test) ▶ 이미 알고 있는 내용은 무엇인가? 모두 처음 배우는 내용들이다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? HamCrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. 다음과 같은 이유들로 JUnit에 지원하는 Assertion 메서드보다 더 많이 사용된다. Assertion을 위한 Matcher가 자연스러운 문장으로 이어지므로, 가독성이 향상된다. 테스트 실패 메시지를 이해하기 쉽다. 다양한 Matcher를 제공한다. Hamcrest만으로 던져진 예외를 테스트하기 위.. 2022. 11. 9.
Spring MVC - Testing(2) Hamcrest JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. Assertion을 위한 Matcher가 이해하기 쉬운 문장이므로, 가독성이 좋다. 다양한 Matcher를 제공한다. 테스트 실패 메시지를 이해하기 쉽다. JUnit의 Assertion 메서드를 사용한 클래스를 Hamcrest의 Matcher를 이용한 클래스로 변환 Hamcrest의 Matcher를 이용한 코드 줄을 보면, 'assert that actual is equal to expected'라고 이어 읽을 수 있다. '결과 값이 기대 값과 같다는 것을 검증한다'라고 해석할 수 있고, 이것이 가독성이 좋다는 것이다. (Custom Matcher를 직접 구현해서 사용할 수도 있다) Ref) Ham.. 2022. 11. 9.
2022. 11. 08. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - 테스팅(Testing) 단위 테스트(Unit Test) Junit을 사용한 단위 테스트 ▶ 이미 알고 있는 내용은 무엇인가? 테스트가 굉장히 중요하다는 것을 안다. 이번 학습은 너무 중요하기에, 풀집중해서 학습해야겠다. 화이팅 :) § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? 단위 테스트란 무엇인지, 순수한 Java 코드로 테스트는 어떻게 하고 그걸 JUnit을 이용하면 어떻게 구현할 수 있는지 알게 되었다. ▶ 다른 사람에게 설명할 수 있는가? 설명할 수 있다. ▶ 아직 이해되지 않은 내용은 무엇인가? 이해되지 않은 내용은 없다. 다만, JUnit을 이용한 테스트에서 몇 가지의 Assertions 메서드 밖에 써.. 2022. 11. 8.
Spring MVC - Testing(1) 애플리케이션을 구현만 하면 끝일까? 우리는 클라이언트가 아무런 이상 없이 사용할 수 있게끔 잘 만들어야 한다. 즉, 개발자 입장에서는 에러를 최소화하여 애플리케이션을 만들어내야 한다. 에러를 최소화할 수 있는 방법이 바로 'Testing'이다. 단위 테스트란? 단위 테스트를 Unit Test라고 부른다. 우선, 각각의 테스트들에 대해 간략하게 알아보자. 기능 테스트 애플리케이션을 사용하는 클라이언트의 입장에서 애플리케이션의 기능들이 정상적으로 동작하는지를 테스트하는 것 (외부의 서비스와 연동될 수 있기 때문에 단위 테스트라고 보기는 어렵다) 통합 테스트 여러 계층이 얽힌 동작을 테스트하는 것으로, 애플리케이션을 만든 개발자가 테스트의 주체가 된다. (여러 계층이 묶여 있는 테스트여서 독립적인 테스트라고 .. 2022. 11. 8.
2022. 11. 07. § 학습 전(계획) § ▶ 학습 목표는 무엇인가? Spring MVC - 트랜잭션 선언형 방식의 트랜잭션 적용 JTA를 이용한 분산 트랜잭션 적용 트랜잭션 적용 실습 ▶ 이미 알고 있는 내용은 무엇인가? 선언형 방식의 트랜잭션에 대해 학습하던 중이었다. 확실히 학습해서 실습에 지장이 없도록 해야겠다. 이번 한 주도 화이팅해보자😄 § 학습 후(점검 및 평가) § ▶ 새롭게 배운 내용은 무엇인가? Spring에서 트랜잭션 적용 방식에는 @Transactional과 AOP 방식이 있다. 트랜잭션 전파란 트랜잭션의 경계에서 진행 중인 트랜잭션이 존재할 때 또는 존재하지 않을 때, 어떻게 동작할 것인지 결정하는 방식을 의미한다. @Transactional 애너테이션의 isolation 애트리뷰트를 통해 트랜잭션 .. 2022. 11. 7.
ArrayList vs HashMap 알고리즘을 풀면서, 특정 값을 찾아 처리하려고 할 때 둘의 효율성 차이가 존재한다는 것을 알 수 있었다. 우선, 둘을 비교해보자. ArrayList와 HashMap 모두 Java의 컬렉션 프레임워크의 클래스들을 사용하지만, 자료를 저장하고 처리하는 방법이 다르다. ArrayList는 배열을 이용한 index 기반의 자료 구조인 반면에, HashMap은 해싱을 통해 저장된 값들을 찾아오는 자료 구조이다. 해싱이란 산술적인 연산을 이용하여, 키가 있는 위치를 계산해서 찾아가는 검색 방식이다. 둘 다 저장된 객체들을 이용한다지만, 구현하고 사용하는 과정이 좀 다르다고 할 수 있다. 다음 표를 통해, 차이점을 알아보자. ArrayList HashMap List 인터페이스를 구현 Map 인터페이스를 구현 요소의 .. 2022. 11. 5.
유클리드 호제법을 이용한 최소공배수, 최대공약수 최대공약수 // 방법 1 public int getGCD(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; } // 방법 2 public int getGCD(int a, int b) { if (b == 0) return a; return getGCD(b, a % b); } 최소공배수 public int getLCM(int a, int b) { return (a * b) / getGCD(a, b); } 2022. 11. 5.
2022. 11. 04. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - 트랜잭션(Transaction) 트랜잭션이란? 선언형 방식의 트랜잭션 적용 ▶ 이미 알고 있는 내용은 무엇인가? 네트워크에 관해 학습하면서, 트랜잭션이라는 용어를 들어봤다. Spring에서 트랜잭션이란 용어가 다시 나오는 걸 보니, 어떻게 적용하는지에 대해 학습할 것 같다. 오늘도 화이팅하자 ! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? 트랜잭션은 물리적으로 다른 여러 작업들을 논리적으로 하나의 작업으로 묶어 처리하는 단위를 의미 트랜잭션의 ACID 원칙 (Atomicity, Consistency, Isolation, Durability) 커밋과 롤백 커밋의 내부 동작 과정 ▶ 다른 사람에게 설명할 수 있는가? 오늘.. 2022. 11. 4.
2022. 11. 03. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring Data JPA Spring Data JPA를 통한 데이터 액세스 계층 구현 및 실습 ▶ 이미 알고 있는 내용은 무엇인가? 새롭게 Spring Data JPA를 학습한다. 오늘 또한 난이도가 있을 거로 예상되므로, 잘 집중해야겠다. § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? JpaRepository를 상속하면 CrudRepository 기능을 포함한 JPA에 특화된 확장 기능들을 사용할 수 있다. JPQL은 JPA에서 지원하는 객체 지향 쿼리로써, 데이터베이스의 테이블을 대상으로 조회 작업을 진행하는 것이 아니라 엔티티 클래스의 객체를 대상으로 객체를 조회한다. ▶ 다른 사람에게 설명할 수 있는가? JPA가 무엇인지 설명할 수.. 2022. 11. 3.