본문 바로가기

반응형

전체 글

(16)
hibernate Connection Pool(HikariCP) 설정 JDBC Connection Pool 데이터베이스와 애플리케이션을 효율적으로 연결하기 위해, 동시 접속자가 가질 수 있는 Connection을 하나로 모아놓고 관리한다 Pool에 사용할 수 있는 Connection을 생성해놓고 Connection이 필요할 때마다 제공하여, Conneciton 생성/닫기 하는 시간 소비를 줄이고, 계속 재사용이 가능하기 때문에 애플리케이션의 속도 향상을 기대할 수 있으며, 동시 접속자(Connection 요청)도 제어할 수 있어 애플리케이션의 과부하를 막아 쉽게 다운되지 않는다. HikariCP "This is a very lightweight (at roughly 130Kb) and lightning fast JDBC connection pooling framework"..
디자인 패턴 - 싱글톤 패턴 (Singleton pattern) 클래스의 인스턴스가 하나만 만들어지고, 그 인스턴스에 접근하기 위한 패턴 싱글톤 패턴으로 얻을 수 있는 이점 전역으로 사용할 수 있어 인스턴스를 사용하기 용이 최초 생성된 객체를 재활용이 가능하여 메모리 절약 싱글톤 패턴의 중요한 점은 어떤 환경에서든 인스턴스가 하나만 존재해야한다는 것이다. 이번에는 싱글톤 패턴을 구현하는 여러가지 방법에 대해 쌓아 보겠다. 1. 일반적인 싱글톤 패턴 (Lazy initialization) public class Singleton{ private static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance == null){ instance = new Si..
JVM 시간 불일치 실시간으로 서버시간을 가져와 DB에 있는 데이터와 비교하여 특정 동작을 하는 Java로 만든 module 에 대해서 문제가 생겼다. 두 서버 한국표준시(KST)로 자동 timezone을 잡지만 DB에 있는 데이터와 시간비교를 할 때 조금 더 늦게 Java module이 처리되는 상황이 발생했다. Java에서 시간 얻어오는 부분.. DB 시간 처리관련해서 오랜만에 매우 삽질을 하다가 아래와 같은 사실을 발견했다. 일단 서버 환경은 이렇다 OS: HP-UX 32bit JAVA: JRE8 DBMS: Oracle 11g 원인파악과정: Java Module을 기동시에는 문제가 없으나 시간이 지난 후 점점 OS시간과 Module의 print 한 log 시간과 맞지 않는 상황이 발생 Linux server date ..
WSL(Windows Subsystem for Linux) Ubuntu 설정 리눅스용 윈도우 하위 시스템(Windows Subsystem for Linux) 윈도우 10에서 네이티브로 리눅스 실행 파일을 실행하기 위한 호환성 계층 VirtualBox VM으로 ubuntu 설치 후 여러가지 간단한 실습을 해보려는 찰나에, 세상에! 이미 사용중인 윈도우10에 우분투를 간단하게 설치하여 사용가능하다는 얘길듣고 바로 조사해보았다. WSL은 64비트 윈도우 10 환경에서 마이크로소프트가 개발한 리눅스 호환 커널 인터페이스를 제공하며, 그 위에 리눅스 유저랜드(우분투, SUSE, 페도라 등)를 실행시킬 수 있다. 다만, 리눅스 커널 코드가 포함되지 않았기 때문에, Linux kernel system call 이 다 호환되지 않아서 일부 app(nmap 등) 들은 실행되지 않는 등의 단점이 ..
[ORACLE] MERGE INTO 문법 (MYSQL 도.. :D) 이런 코드는 다들 작성해봤지 않은가?.. (필자는 해서) selectResultSize = DB 조회 결과 값; if( selectResultSize > 0 ){ update(); } else { insert(); } 위 같은 코드를 만드는 이유는 1. 두 개의 테이블을 비교해서 insert 또는 update 2. 한 개의 테이블의 특정 컬럼에 값 유무에 따른 insert 또는 update 위처럼 DB 처리가 필요한 상황일때, merge into 문법을 사용하면 편리하게 기능을 구현할 수 있어 간단한 내용으로 정리한다. MERGE INTO 기본 문법 MERGE INTO table_name alias USING (table | view | subquery) alias -- 하나의 테이블만 이용한다면 DUA..
디자인 패턴 - 추상 팩토리 패턴 (Abstract factory pattern) 먼저 유명한 디자인 패턴인 팩토리 패턴 (Factory Pattern) 은 상위 클래스와 여러개의 하위 클래스가 있을 때, 특정 상황에 따라 그에 맞는 하위 클래스 객체를 return 해야 될때 사용하는 디자인 패턴이다. 이번에 기록할 주제인 추상 팩토리 패턴은 이름만 봐서는 팩토리 메서드 패턴과 비슷해보이지만, 명확한 차이점이 있다. 팩토리 메서드 패턴 조건에 따른 객체 생성을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴 추상 팩토리 패턴 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 추상 팩토리 패턴은 어떻게 보면, 팩토리 메서드 패턴을 좀 더 캡슐화한 방식이라고 볼 수 있다. ..
Java custom Annotation 사용하기 Java 언어를 배울때부터 슬그머니 등장하는 @Override 어노테이션이 있지만 정확히 내부적으로 어떤 코드로 되어있는지는 확인하지 않았었다. 개발시에 Custom으로 어노테이션을 제작하여 코드를 깔끔하게 만들기 위해서 공부하려고한다. 이번 기회에 정확히 어노테이션에 대해 알아보고 넘어가보자! Java 어노테이션(Annotation) 이란? JEE5부터 새롭게 추가된 요소로 자바코드에 추가적인 정보를 제공하는 메타데이터이다. 메타-테이터(Meta-Data) : 데이터를 위한 데이터를 의미하며, 풀어 이야기하면 한 데이터에 대한 설명을 의미하는 데이터. (자신의 정보를 담고 있는 데이터) 사전적으로는 "주석"이라는 의미를 가지고 있으며, 의미대로 자바 코드에 주석처럼 달아서 특수한 의미를 부여해준다. 컴..
Spring REST API - Swagger2 연동 기존에 개발했던 Rest API 들은 개발 완료 후 문서화 작업을 통해 API 정의서를 제작했고 신규 유저 연동시에 문서로 spec을 전달했다. 하지만 프로그램 수정이 필요할 때 수정되는 내용에 따라 문서도 수정 후 다시 유저에게 재 공지되는 등 불편한 점이 많았다 테스트 요청시에도 Junit 과 별도로 Postman/curl 을 통해서 각각 항목별 요청을 진행했는데, 로컬, 테스트서버, 운영서버 등 서버 주소가 변경되거나 환경에 따라 Postman 에 미리 세팅해논 request 파일들을 일일이 수정해야되는 경험이 있어 매우 불편했다. 하지만 Swagger라는 문서 자동화 툴을 이번에 접하게되었고 신규 RestAPI 프로젝트가 있어 검토 후 프로젝트에 반영해보려고 한다! 필자처럼 Swagger가 처음이..