분류 전체보기 썸네일형 리스트형 [Spring][Hamcrest] Hamcrest는 JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework이다. Hamcrest는 다음과 같은 이유로 JUnit에 지원하는 Assertion 메서드 보다 더 많이 사용된다. Assertion을 위한 매쳐(Matcher)가 자연스러운 문장으로 이어지므로 가독성이 향상 된다. 테스트 실패 메시지를 이해하기 쉽다. 다양한 Matcher를 제공한다. Hamcrest 만으로 던져진(thrown) 예외를 테스트 하기 위해서는 Custom Matcher를 직접 구현해서 사용할 수 있다. 더보기 [Spring MVC][Testing] 학습 목표 테스트를 왜 해야 하는지 이해할 수 있다. 테스트 대상이 무엇이 되었든 간에 테스트를 제대로 잘 거쳐서 테스트 대상이 검증 과정에 잘 통과하게 만들어 최대한 더 나은 결과를 얻기 위해서(모든 테스트가 100퍼센트 완벽하게 이루어질 수 없기 때문) 단위 테스트가 무엇인지 이해할 수 있다. 매번 수작업으로 애플리케이션을 실행시키고, Postman을 열어서 HTTP요청을 보내는 것은 아무래도 비효율적이다 그리고 애플리케이션 전체가 아니라 API계층, 서비스 계층, 데이터 액세스 계층 중에서 하나의 계층만 테스트하고 싶은 경우가 있는데 그러지 못한다 또한 비즈니스 로직에서 구현한 특정 메서드만 테스트하고 싶을때 전체가 아니라 계층별로 테스트 기 할 수 있는 기법을 Spring에서 지원해준다. 그중에 .. 더보기 [Spring][JPA][EntityMapping][JPA 연관 관계] JPA에서 가장 중요한 것은 "객체와 관계형 데이터베이스 테이블이 어떻게 매핑되는지 이해하는 것"이다 엔티티 클래스 간의 관계를 만들어주는 것이 바로 연관 관계 매핑이다. 엔티티 간에 참조할 수 있는 객체의 수에 따라 일대다, 다대일, 다대다, 일대일의 연관 관계로 나눌 수 있다. 연관 관계 정의 규칙 3가지 방향 : 단방향, 양방향 (객체 참조) 연관 관계의 주인 : 양방향, 연관 관계에서 관리 주체 다중성 : 일대다, 다대일, 다대다,일대일 단방향 연관 관계 Member 클래스가 Order 객체를 원소로 포함하고 있는 List 객체를 가지고 있으므로 Order를 참조할 수 있다. 따라서 Member는 Order의 정보를 알 수 있다. 하지만 Order 클래스는 member클래스에 대한 참조 값이 없으.. 더보기 [Spring MVC][Transaction] 학습 목표 트랜잭션(Transaction)이 무엇인지 이해할 수 있다. 두 개의 작업들이 마치 하나의 그룹처럼 묶여서 처리되는 중에 둘 중 하나라도 처리에 실패할 경우 애플리케이션의 신뢰성이 깨지는 상황이 발생한다. 이처럼 트랜잭션은 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위인데, 무조건 여러 개의 작업을 그룹으로 묶는다고 해서 트랜잭션이라고 부를 수 있는 게 아니라 물리적으로는 여러 개의 작업이지만 논리적으로는 마치 하나의 작업으로 인식해서 전부 성공하든지 전부 실패하든지 둘 중 하나로만 처리되어야 트랜잭션의 의미를 가진다. 이러한 All or Nothing이라는 트랜잭션 처리 방식은 애플리케이션에서 사용하는 데이터의 무결성을 보장하는 핵심적인 역할을 한다. ACID원칙 트랜잭션의 .. 더보기 [Spring MVC][DTO] DTO(Data Transfer Object)란? DTO는 주로 클라이언트에서 서버 쪽으로 전송하는 요청 데이터를 전달 받을 때, 서버에서 클라이언트 쪽으로 전송하는 응답 데이터를 전송하기 위한 용도로 사용된다. DTO가 필요한 이유 클라이언트의 Request Body를 하나의 객체로 모두 전달 받을 수 있기때문에 코드 자체가 간결해진다. Request Body의 데이터 유효성(Validation) 검증이 단순해진다. JSON 형식의 Request Body를 전달 받기 위해서는 DTO 객체에 @RequestBody 애너테이션을 붙여야 한다. Response Body를 JSON 형식으로 전달하기 위해서는 @ResponseBody 애너테이션을 메서드 앞에 붙여 주어야하지만 ResponseEntity 객체를 .. 더보기 [Java][Interface] API란 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어에서 제공하는 기능을 제어할 수 있게 하는 인터페이스이다 인터페이스란 사람과사람 , 사람과 사물 또는 기기를 연결하는 것 애플리케이션 간에 지정된 형식으로 요청과 응답을 할 수 있도록 연결하는 것 GUI는 Grapchic User Interface의 약자로 컴퓨터를 사용할 때 입출력 등을 좀 더 효율적이고 쉽게 조작할 수 있도록 아이콘 등으로 시각화한 사용자 인터페이스이다. 예> sourcetree 인터페이스의 기본 구조 인터페이스를 작성하는 것은 기본적으로 클래스를 작성하는 것과 유사하지만, class 키워드 대신 interface키워드를 사용한다는 점에서 차이가 있다. 또한 일반 클래스와 다르게 내부의 모든 필드가 public st.. 더보기 [Spring][JPA][EntityMapping] 학습 목표 JPA 엔티티에 대한 매핑을 할 수 있다. JPA를 이용해서 데이터베이스의 테이블과 상호작용(저장, 수정, 조회, 삭제) 하기 위해 제일 먼저 해야 되는 작업은 바로 데이터베이스의 테이블과 엔티티 클래스 간의 매핑 작업이다. 엔티티 매핑 작업은 크게 객체와 테이블 간의 매핑, 기본키 매핑, 필드와 컬럼 간의 매핑, 엔티티 간의 연관관계 매핑 등으로 나뉜다. 엔티티와 테이블 간의 매핑 @Entitiy 매핑 애너테이션을 이용해 엔티티 클래스와 테이블을 매핑하는것으로 JPA관리 대상 엔티티가 된다. @Table 애너테이션은 테이블의 이름을 설정할 수 있고, 기본값은 클래스 이름을 테이블 이름으로 사용한다, 주로 테이블 이름이 클래스 이름과 달라야할 경우 추가한다. @Table 애너테이션은 옵션이지만.. 더보기 [Spring][JPA][Persistence Context] 학습 목표 JPA가 무엇인지 이해할 수 있다. JPA(Java Peristence API)란 Java에서 사용하는 ORM(Object-Relational Mapping) 기술의 표준 명세 이다. 표준 명세라는 의미는 Java의 인터페이스로 사양이 정의되어 있기 때문에 JPA라는 표준 사양을 구현한 구현체는 따로 있다는 것을 의미한다. Hibernate ORM JPA 표준 사양을 구현한 구현체로는 Hibernate ORM, EclipseLink, DataNucleus 등이 있다. Hibernate ORM은 JPA에서 정의해둔 인터페이스를 구현한 구현체로써 JPA에서 지원하는 기능 이외에 Hibernate자체적으로 사용할 수 잇는 API역시 지원하고있다. 데이터 액세스 계층에서의 JPA 위치 데이터 저장, .. 더보기 이전 1 2 3 4 5 6 7 ··· 12 다음