본문 바로가기

전체 글

(32)
자바 ORM 표준 JPA 프로그래밍 최근 회사에서 진행하게 된 프로젝트에서 Spring + Mybatis를 대신하여 SpringBoot + JPA를 도입하여 사용하게 되었다. 해당 라이브러리를 회사의 여러 프로젝트 중 우리 팀이 최초로 도입하게 되었기에, 해당 라이브러리와 관련하여 짧게나마 회사에서 학습할 시간을 주어 공부를 할 수 있게 되었다. 기존에 JPA를 얕게나마 알고 있던 내가 JPA 관련 메인 개발자가 되어, 실무에서 사용하기 위해 해당 책을 구매하게 되었다. 결론부터 말하자면 해당 책은 굉장히 친절하게 작성되어있다. DB에 대한 지식을 어느 정도 보유하고 있다면 JPA를 실무에서도 충분히 잘 활용할 수 있게 해 준다. JPA의 동작원리와 그에 따라 애매모호했던 개념을 정리할 수 있었으며 상황에 따라 도입하기 좋은 기술 및 어노..
자바스크립트 스타일 가이드 요약(eslint-airbnb) - 1 2. 변수 선언 변수 선언은 var 대신 const와 let을 사용하라. 2-1. const : 해당 js파일에서 상수 선언 시 사용(prefer-const, no-const-assign) 2-2. let : 변경이 가능해야하는 변수일 경우 사용(no-var) 3. Object 3-1. Object 생성 시 리터럴을 사용하라.(no-new-object) // bad const item = new Object(); // good const item = {}; 3-2. Object에 동적으로 원소명를 정해야 할 경우 function getKey(k) { return `a key named ${k}`; } // bad const obj = { id: 5, name: 'San Francisco', }; obj[..
3년차 개발자의 이직 후기 이직을 하였다. 비록 SI 중소기업에서 IT 중견기업으로 점프한 것에 불과하지만, 시기가 시기인만큼 현재의 나에게는 나름 만족스러운 결과가 되었다. SI 중소기업 -> IT중견기업 대학교를 졸업할 당시에는 마땅히 하고 싶은 것이 없었다. 그저 남들이 다 하는 영어공부와 전공 공부 그리고 약간의 자격증을 취득하며 살았다. 그러다 2017년 4월 대학교를 졸업했음에도 취업이 되지 않았던 난 SI 중소기업에서 개발자로 첫걸음을 내딛게 되었다. 처음 회사에 입사했을 때만 하더라도 회사에서 숙소를 제공하며 내일 채움 공제까지 지원을 해주었기에 금전적으로 여유롭지 않았던 나는 굉장히 회사에 만족하며 일을 하였다. 하지만 그 행복도 얼마 가지 못 했고, 여러 가지 이유로 회사에 대한 나의 신뢰가 깎이기 시작하였다. ..
[디자인 패턴] 팩토리 메소드 패턴(Factory Method Pattern) 1) 개요팩토리 메소드 패턴은 클래스의 인스턴스를 만드는 것을 서브클래스에서 결정하도록 하는 패턴입니다.​- 장점1. 구현 클래스 직접 접근보다 인터페이스 접근을 더 용이하게 해줍니다.2. 클라이언트 클래스로부터 인스턴스 구현을 분리시켜 객체간의 의존성을 낮춰줍니다.​- 단점1. 팩토리 메소드 패턴을 남용할 경우 인스턴스 생성 구조를 파악하기 복잡해집니다. 2) UML3) 예제 123456789public abstract class Product { public abstract String getName(); public abstract int getPrice(); @Override public String toString() { return "product Name : " + getName(); }}C..
1. 생성자 대신 static factory method를 사용해보자 1) 개요 자바에서 인스턴스를 생성할 수 있는 방법은 public(or protected) 생성자를 사용하는 것입니다. 하지만 static factory method로도 인스턴스를 생성할 수 있습니다. 다음의 예제를 살펴보겠습니다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 위 예제를 살펴보면 정적 팩토리 메소드(static factory method)는 생성자 대신에 사용할 수 있는 것을 알 수 있으실 겁니다. 여기서는 생성자를 대신하여 사용할 수 있는 정적 팩토리 메소드를 살펴보겠습니다. static factory method가 가지는 장점이 몇 가지 있습니다. 1. 생성자와 다르게 이름을 ..
[디자인 패턴] 옵저버 패턴(Observer Pattern) 1) 개요옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자 객체를 생성하여 사용하는 디자인 패턴입니다.즉, 객체의 변화가 발생하면 그에 따르는 종속객체들이 자동으로 변화가 통지되어 그에 따른 명령을 수행하도록하는 일대다의 의존성을 정의해줍니다. - 옵저버 패턴을 사용하는 경우1. 분산 이벤트 핸들링 시스템 2. 이벤트 기반 프로그래밍 - 장점1. 객체간의 결합도가 느슨해집니다.2. 실시간으로 효과적으로 데이터를 배분할 수 있습니다. - 단점1. 패턴을 잘못 구현할 경우 데이터 배분에 문제가 발생하여 위험도가 큽니다. 2) UML 3) 예제1234public interface Observer { public void update(int runs, int wickets, float overs);} Color..
[디자인 패턴] 인터프리터 패턴(Interpreter Pattern) 1) 개요문법 규칙을 클래스화 한 구조로, 일련의 규칙으로 정의된 문법적 언어를 해석하는 패턴입니다.(SQL, SHELL...) 인터프리터 패턴은 SQL과 같은 계층적 언어를 해석하기 위해 계층 구조를 표현할 수 있습니다. - 장점1. 문법의 추가 및 수정, 구현이 쉬워집니다. - 단점1. 복잡한 문법의 경우 관리 및 유지가 어려워집니다. 2) UML - AbstractExpression : interpret()를 정의 합니다.- TerminalExpression : interpret()를 구현합니다- NonTerminalExpression : Non-Terminal의 interpret()를 구현합니다.- Context : String 표현식이어야 하며, 인터프리터에 보내는 정보입니다.- Client :..
[디자인 패턴] 전략 패턴(Strategy Pattern) 1) 개요로직을 캡슐화하여 교환하며 상황에 맞는 로직을 사용하는 디자인 패턴입니다. - 장점1. 시스템의 구조 및 Context Class를 변경하지 않고 요청에 맞는 로직을 추가 및 수정할 수 있습니다.2. 같은 인터페이스 양식을 가진 알고리즘을 별도로 캡슐화하여 코드의 가독성이 높아지며, 생산성이 높아집니다.3. 요청에 맞는 로직을 실시간으로 변경할 수 있습니다. - 단점1. 상황에 맞는 적절한 로직을 모두 알고있어야 합니다.2. 관리해야하는 클리스의 수가 늘어납니다. - 패턴 비교 상태 패턴(State Pattern) 공통점 차이점 인터페이스를 사용하여 Concrete Class를 캡슐화합니다. 그에 따라, Concrete와 관계없이 인터페이스를 통하여 기능을 수행합니다. 상태 패턴은 자신의 상태를..