전체 글
-
[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 수준..
-
[AWS] RDS에 TimeZone 설정 방법클라우드/aws 2021. 2. 4. 11:19
이번 시간에는 RDS에 시간 정보를 저장할 때 발생된 이슈에 대해서 알아보도록 하겠습니다. Spring Boot 프로젝트를 Docker Image로 만들어 AWS ECS 서비스로 올려서 테스트를 하던 중에 시간 정보가 맞는 않는 이슈를 발견하였습니다. 해당 서비스는 대한민국에서만 사용되는 서비스라 시간 정보를 저장 시 대한민국 TimeZone인 UTC/GMT +9로 저장되기를 기대했는데 UTC로 저장되고 있었습니다. AWS에서 안내하는 RDS의 TimeZone 정보는 아래와 같습니다. 모든 Amazon RDS DB 인스턴스는 기본적으로 UTC/GMT 시간을 사용하며, 시간대 변경은 선택 사항입니다. 이를 해결하는 방법은 2가지가 있습니다. 첫 번째 방법. Spring Boot 프로젝트에서 datasour..
-
[Quartz] Could't get host name!스프링프레임워크/quartz 2021. 2. 4. 10:56
이번 시간에는 Quartz 클러스터링을 구현하면서 발생한 이슈와 해결 방법에 대해서 알아보도록 하겠습니다. Spring Boot로 프로젝트를 구성하였고 Docker Container 2개를 띄워서 테스트 진행하였습니다. Spring Boot에서 Quartz를 사용하는 방법은 이전 블로그를 참조해주시면 감사하겠습니다. Docker Container를 구동 시킬 때 아래와 같은 에러가 발생하였습니다. Quartz 클러스터링 설정 시 instanceId를 AUTO로 설정하였는데 Quartz의 default ID 생성은 아래의 SimpleInstanceIdGenerator를 사용합니다. SimpleInstanceIdGenerator의 경우 내부적으로 host name을 가져와서 ID를 생성하게 되어 있는데 Do..
-
[UML] 유스케이스 다이어그램자바/기타 2021. 2. 2. 15:12
유튜브 : 전병선 IT 아카데미 - UML 에센스 - 모듈9. 유스케이스 다이어그램 내용 정리 개요 시스템의 행위를 모델링하며 시스템의 요구사항을 표현 시스템의 상위 레벨 기능과 범위를 기술 요소 주제 (subject) 구축해야 할 시스템의 부분 시스템 영역 (system boundary) 시스템을 사용하는 사람/사물, 즉 액터(actor)와 시스템이 액터에게 제공하는 이점 즉, 유스케이스(usecase)로 정의된다. 액터 : 시스템 영역 외부 유스케이스 : 시스템 영역 내부 액터 (actor) 시스템 외부에서 시스템과 상호작용하는 사람이나 시스템 액터는 외부 시스템이나, 조직, 장치 일 수 있다. 시스템을 사용하는 사람인 것만은 아니다. 액터가 사람인 경우 그 사람이 시스템과 상호작용하는 역할(role..
-
[JPA] @ElementCollection을 이용해서 Embeddable 타입의 Collection을 영속화스프링프레임워크/jpa 2021. 1. 29. 15:28
Embeddable 타입의 Collection 엔티티 클래스에서 Embeddable 타입의 Collection은 @ElementCollection을 사용해서 영속화 할 수 있습니다. Collection에 해당하는 클래스에는 @Embeddable 어노테이션을 반드시 붙여야 합니다. 엔티티 클래스와 Embeddable 타입의 클래스는 둘 사이를 매핑하는 새로운 테이블을 생성합니다. 해당 매핑 테이블에는 엔티티 클래스의 primary-key와 연결 된 foreign-key를 가지고 있습니다. 해당 매핑 테이블의 필드는 엔티티 클래스에 대한 foreign-key와 Embeddable 클래스의 필드들로 구성되어집니다. OneToMany와 유사하지만 대상이 Embeddable 클래스란 것이 다르다. 테스트를 위한 ..
-
[Jenkins] Docker로 설치 된 Jenkins에 docker-credential-ecr-login 설치하기관리 배포/jenkins 2021. 1. 27. 23:03
이번 시간에는 Docker로 설치 된 Jenkins container에 docker-credential-ecr-login을 설치하는 방법에 대해서 알아보겠습니다. 1. docker에 root 권한으로 접속합니다. $ docker exec -itu 0 master /bin/bash 2. docker-credential-ecr-login을 다운로드 받습니다. [jenkins-container]$ wget https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/0.4.0/linux-amd64/docker-credential-ecr-login 3. docker-credential-ecr-login을 /usr/local/bin으로 이동시킵..
-
[Quartz] Spring Boot에서 Quartz 클러스터 적용스프링프레임워크/quartz 2021. 1. 26. 12:50
이번 시간에는 Spring Boot 프로젝트에서 Quartz 클러스터를 적용해보겠습니다. 우선 Quartz는 아래와 같은 특징을 제공하는 Job 스케줄링 라이브러리입니다. 모든 Java 어플리케이션에 통합 가능 수십에서 수천 개의 작업도 실행 가능하며 간단한 Interval 형식이나 Cron 표현식으로 복잡합 스케줄링도 지원 Job에서 수행되는 작업들은 직접 프로그래밍 할 수 있음 JTA 트랜잭션 처리나 클러스터링 기능도 지원 Cron Expression 특수문자 * : 모두 포함 ? : 해당 필드 고려 X - : 일련의 범위 2-4는 2, 3, 4를 의미 , : 일련의 값을 나열 2-4는 2,3,4로 표현 가능 / : 초기치를 기준으로 일정하게 증가하는 값을 의미 초를 나타내는 필드에 0/15는 0초를..