본문 바로가기

전체 글290

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.
2022. 11. 02. § 학습 전(계획) ▶ 학습 목표는 무엇인가? Spring MVC - JPA 기반 데이터 액세스 계층 JPA 엔티티 간의 연관 관계 매핑 및 실습 ▶ 이미 알고 있는 내용은 무엇인가? 어제까지는 기본적인 엔티티 매핑에 대해서 학습했고, 오늘은 연관 관계에 대해 매핑하는 걸 학습한다. 쉽지 않은 내용이라고 지작하고 있고, 집중해서 학습해야겠다 화이팅 ! § 학습 후(점검 및 평가) ▶ 새롭게 배운 내용은 무엇인가? 일대다, 다대일, 일대일, 다대다, 양방향, 단방향 관계의 매핑을 어떻게 하는지 새롭게 알게 되었다. ▶ 다른 사람에게 설명할 수 있는가? 두 테이블의 연관 관계는 어떻고, 외래키는 어떤 것이여야 하는지 설명할 수 있다. ▶ 아직 이해되지 않은 내용은 무엇인가? 아직, 단방향 양방향의 내용이 혼.. 2022. 11. 2.
JPA(Java Persistence API)와 엔티티 매핑(Entity Mapping) JPA는 Java 진영에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 사양(또는 명세, Specification) JPA라는 인터페이스로 정의되어 있는 구현체는 따로 있고, 우리는 그 구현체를 학습하는 것이다. JPA는 Java Persistence API의 약자이지만, 현재는 Jakarta Persistence라고도 불린다. Hibernate ORM JPA에서 정의해둔 인터페이스를 구현한 구현체로써, JPA에서 지원하는 기능 이외에 Hibernate 자체적으로 사용할 수 있는 API 역시 지원하고 있다. 위 그림과 같이, JPA는 데이터 액세스 계층의 상단에 위치한다. JPA의 Persistence는 영속성, 지속성을 뜻한다. 즉, 무언가를 금방 사라지지 않고 오래 지.. 2022. 11. 1.