Websocket 이란? 양방향으로 실시간 데이터 를 교환할수 있는 프로토콜 이다. 이를 통해 실시간 정보 업데이트, 실시간 채팅 등을 구현할수 있고 좀 더 나아가 화상채팅도 구현할수 있다. 또한 HTTP 프로트콜에서 WS 프로트콜에 변환해서 연결을 한다. Polling 클라이언트가 n초 간격으로 request를 서버로 계속 날려서 response를 전달받는 방식이다. 단, 이렇게 request 를 날리게 되면 서버에 부담이 된다. 그렇다고 n초를 길게 잡으면 실시간 데이터 통신이 아니니 이상하다. 이를 해결하기 위해 WebSocket이 나온것 같다. Polling의 종류는 대표적으로 Short Polling, Long Polling 있다. Websocket 구현 간단하게 구현을 해보았다. 간단하게 설명..
공식 문서 : https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#introducing-thymeleaf thymeleaf 란? 타임리프란? 뷰 플랫폼 이라고 말하기도 합니다. 뷰 템플릿은 컨트롤러가 전달하는 데이터를 이용하여 HTML 파일을 Client 에게 전달하기도 합니다. 해당 구조는 아래에 그림으로 표현하였습니다. gradle thymeleaf implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' thymeleaf 태그 태그 설명 th:text 요소의 텍스트 내용을 지정합니다. th:if 조건문을 지정하고, 조건이 참일 때 해당 요소를 표시합니다. th:eac..
Rest Repositories 이란? Spring 에서 지원해주는것으로 JPA 저장소로 json 방식으로 제공해주는것이다. 이것을 통해 QueryDSL 같이 사용할 수 있다. gradle import implementation 'org.springframework.boot:spring-boot-starter-data-rest' implementation 'org.springframework.data:spring-data-rest-hal-explorer' 여기서 잠깐 'org.springframework.data:spring-data-rest-hal-explorer' 이라는것은 좀더 편리하게 웹으로 볼수 있도록 한것이므로 배포시에는 제거해주도록 한다. application.yaml spring: data..
DTO, Entity, Response ? DTO와 Entity 와 Response 파일에 대해 알아볼려고 한다. 그에대해 연관관계를 통해 Client 에게 Response 로 데이터를 줄때 어떠한 방식을 사용해야 하는가에 대해 게시글을 작성 할려고 한다. DTO 란? 계층간 데이터 교환을 위해 사용하는 객체이다. 즉, Attribute 에 담을 DTO 라는 객체이다. Entity 란? JPA 에서 쓰는 Entity 즉 DB 의 데이터 교환을 위해 사용하는 객체이다. 즉, DB 에서 데이터를 가져오고 관리하는 객체이다. Response 데이터베이스에서 데이터를 가져와서 Client 에게 준다고 하면, 데이터베이스에서는 Entity 를 이용해서 가져와서 DTO 로 변환시켜 Clinet 에게 줘야 한다. 이..
JUnit5 자바 단위 테스팅 프레임워크. 공식 문서 : https://junit.org/junit5/docs/current/user-guide/#writing-tests 공식문서 : https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/ @Test : 테스트 매서드임을 나타낸다. @DisplayName : 테스트 클래스 또느 매서드의 사용자 지정 이름 아래에 예시 @DisplayName("패스워드 검사기") @Test void validatePasswordTest() { } @ParameterizedTest : 파라미터로 값 가져오기. @ValueSource( strings = {"..
JPA 란? ORM 기술 표즌으로 사용하는 인터페이스 모음 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 인터페이스이기 때문에 Hibernate, OpenJPA 등이 JPA 를 구현을 해야한다. Entity JPA 는 기본적으로 entity 가 존재하고 repository 가 존재한다. 그중 entity 에서의 어노테이션에 대해 알아보자. @Entity : 나 entity 이야 라고 선언한것 @Table : 테이블 이름을 지정할수 있음, 지정 없을때는 클래스명이 테이블명이 됨. @Index : 테이블에서 데이터 검색 작업의 속도를 향상시키는 데이터 구조. @Table(indexes = { @Index(columnList = "content"), @Index(columnLis..
TDD 이란? TDD 이란 테스트 주도 개발 이라고 한다. 프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법으로 쓰고 있고, TFD ( Test First Development ) + 리팩토링 으로 기능 동작을 검증 한다. ( 매소드 단위 ) 테스트 코드를 작성을 왜 할까? 나도 처음에는 테스트 코드 없이 그냥 바로 기능 개발하고 그때 그때 고치는 편이였다. 하지만 TDD 방법을 알게 되었고 그 방법을 통해 개발을 진행해보니 무엇보다 기능 결함이 없고 안전성이 확보 되었다. 그리고 문서화 역할도 테스트 코드에서 할수 있고, 테스트하기 위해 쉬운 코드를 작성하다 보면 더 낮은 결합도를 가진 설계를 얻을 수 있어서 테스트 코드를 작성하는것 같다. 아래에 예제를 통해 확인할 수 있다. - 코드 Pass..