자바
-
[Java] JPA (Java Persistence API)자바/기타 2021. 3. 23. 10:07
ORM (Object-Relation Mapping, 객체-관계 매핑) vs SQL Mapper ORM은 DB 테이블을 자바 객체로 매핑함으로써 객체관의 관계를 바탕으로 SQL을 자동으로 생성하지만, Mapper는 SQL을 명시해주어야 한다. ORM은 RDB의 관계를 Object에 반영하는 것이 목적이라면, Mapper는 단순히 필드를 매핑시키는 것이 목적이라는 점에서 지향점의 차이가 있다. JPA (Java Persistence API) 자바 ORM 기술의 표준 명세로, 스프링에서 제공하는 것이 아닌 JAVA에서 제공하는 API이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 스프링의 PSA(POJO를 사용하면서 특정 기술을 사용)에 의해서 표준 인터페이스를 정해..
-
[JAVA] WebSocket자바/기타 2021. 3. 22. 10:03
WebSocket 웹 브라우저(클라이언트)와 서버간의 full-duplex(양방향), bi-directional(전이중적인), persistent conntection(지속적인 연결)의 특징을 갖는 프로토콜 웹 브라우저 환경에서 TCP 통신처럼 연결 지향 프로토콜이 필요하게 됨에 따라 탄생 WebSocket vs TCP WebSocket은 연결 요청에 대해 http를 통해 switching 및 handshaking이 이루어진다. TCP는 Binary 데이터만 주고 받을 수 있지만, WebSocket은 Binary 데이터뿐만 아니라 Text 데이터를 주고 받을 수 있다. Spring에서 WebSocket 구현 방법 WebSocket 데이터를 직접 처리 웹 소켓 핸들러를 직접 상속받아 low level 수준..
-
[UML] 유스케이스 다이어그램자바/기타 2021. 2. 2. 15:12
유튜브 : 전병선 IT 아카데미 - UML 에센스 - 모듈9. 유스케이스 다이어그램 내용 정리 개요 시스템의 행위를 모델링하며 시스템의 요구사항을 표현 시스템의 상위 레벨 기능과 범위를 기술 요소 주제 (subject) 구축해야 할 시스템의 부분 시스템 영역 (system boundary) 시스템을 사용하는 사람/사물, 즉 액터(actor)와 시스템이 액터에게 제공하는 이점 즉, 유스케이스(usecase)로 정의된다. 액터 : 시스템 영역 외부 유스케이스 : 시스템 영역 내부 액터 (actor) 시스템 외부에서 시스템과 상호작용하는 사람이나 시스템 액터는 외부 시스템이나, 조직, 장치 일 수 있다. 시스템을 사용하는 사람인 것만은 아니다. 액터가 사람인 경우 그 사람이 시스템과 상호작용하는 역할(role..
-
[JAVA] Streams를 이용한 Map Collection 사용 방법자바/자바8 2021. 1. 20. 12:55
이번 시간에는 Streams을 통해서 Map을 제어하는 방법에 대해서 알아보도록 하겠습니다. map 생성 (key는 책이름, value는 재고개수) Map books = new HashMap(); key-value pairs의 set을 구하는 방법 Set entries = books.entrySet(); map의 key set을 구하는 방법 Set keySet = books.keySet(); map의 value collection을 구하는 방법 Collection values = books.values(); 위의 collection들은 Streams을 이용하여 Map을 처리할 수 있는 진입점을 아래와 같이 제공해줍니다. Stream entriesStream = entries.stream(); Stream..
-
[MapStruct] Enum과 Integer 간에 매핑 설정 방법자바/mapstruct 2021. 1. 16. 02:22
이번 시간에는 MapStruct를 이용하여 Mapper 생성 시 Enum과 Integer간에 매핑하는 방법에 대해서 알아보도록 하겠습니다. 우선 다음과 같이 01은 MALE을 뜻하고 02는 FEMAIL을 뜻하는 Enum이 존재합니다. 클라이언트로부터 성별의 값으로 01, 02의 Integer 값을 수신하므로 그 뜻을 좀더 명확하게 표현하기 위해서 Enum을 생성합니다. public enum Gender { MALE(01), FEMALE(02), ; private Integer value; private static Map map = new HashMap(); Gender(Integer value) { this.value = value; } static { for (Gender gender : Gender..
-
[MapStruct] 중첩된 빈 프로퍼티를 현재 타겟에 매핑시키기자바/mapstruct 2020. 12. 1. 14:34
중첩된 소스 객체의 모든 프로퍼티들에 대해서 명시적으로 선언하기를 원하지 않으면, target 파라미터에 "."를 사용할 수 있습니다. "."는 MapStruct로 하여금 소스 객체의 모든 프로퍼티들에 대해서 타겟 객체에 매핑될 수 있게 지원합니다. 해당 기능은 MapStruct 1.4.1에서부터 지원됩니다. @Getter @NoArgsConstructor @JsonInclude(JsonInclude.Include.NON_EMPTY) public class CustomerDto { private Long id; private Record record; private Account account; @Builder public CustomerDto(Long id, Record record, Account a..
-
[MapStruct] 기본 매핑자바/mapstruct 2020. 11. 26. 00:42
간단하게 Mapper를 생성하는 방법은 필요한 매핑 함수를 가진 자바 인터페이스를 정의하고, org.mapstruct.Mapper 어노테이션을 붙이면 됩니다. @Mapper public interface CarMapper { @Mapping(source = "make", target = "manufacturer") @Mapping(source = "numberOfSeats", target = "seatCount") CarDto carToCarDto(Car car); @Mapping(source = "name", target = "fullName") PersonDto personToPersonDto(Person person); } @Mapper 어노테이션은 MapStruct의 code generator를 ..
-
[MapStruct] 여러 개의 소스 파라미터를 가지는 매핑 함수자바/mapstruct 2020. 11. 23. 23:40
MapStruct는 또한 여러 개의 소스 Parameter(person, address)를 가지는 매핑 함수를 제공합니다. 여러 개의 Entity들을 하나의 DTO로 합치는데 유용합니다. @Mapper public interface AddressMapper { @Mapping(source = "person.description", target = "description") @Mapping(source = "address.houseNo", target = "houseNumber") DeliveryAddressDto personAndAddressToDeliveryAddressDto(Person person, Address address); } 보여지는 매핑 함수는 2개의 소스 Parameter(Person,..