본문 바로가기

개발공부

(19)
[ 인생퍼즐 ] TypeORM Transaction 사용 Transaction 사용 이유 프로젝트 중 일부 로직에서 DB에 정보 저장은 관련 파일이 서버에 정상적으로 전송되었을 때 이루어져야 했다. 하지만 서버에 저장되어야 하는 파일 경로에 DB 정보 저장할 때 생기는 고유키가 필요했다. DB 정보 임시 저장 후 고유키로 완성된 파일 경로로 전송해야 했다. 전송이 성공했을 때 DB 정보를 저장 완료를 해야 했다. 그래서 성공 시 DB Commit, 실패 시 DB Rollback 할 수 있는 Transaction을 사용했다. Transaction 구현 1. EntityManager 사용 방식 async saveUser(){ await connection.getRepository(User).manager.transaction(async (manager) => { ..
객체 지향 설계 - SOLID(2) 3. LSP(리스코프 치환 원칙) LSP는 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다는 원리이다. 위반할 경우 사용자가 의도되지 않는 기능을 불러다가 사용할 수 있다. 1) 위배되는 코드 - 하위 클래스의 인스턴스가 정확성을 깨뜨리는 경우 - 타조는 날수 없는 새이기 때문에 상위 인터페이스 Bird의 fly를 수행 하지 못함 (정확성 깨짐) static void Main { Bird bird = new Ostrich(); bird.fly(); } public interface Bird{ public void fly(); } public class Pigeon implement Bird{ public void fly(){ 구현 } } public cl..
객체 지향 설계 - SOLID(1) SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 앞글자만 따서 소개한 것이다. SRP, OCP, LSP, ISP, DIP를 포함하고 있다. 1. SRP(단일 책임 원칙) SRP는 한 클래스가 하나의 책임만을 가져야 한다는 원칙이다. Clean Code 책을 참고했을 때 하나의 책임이란 클래스를 수정해야 할 이유가 한 가지일 때라고 한다. 1) SRP 위배되는 코드 - 클래스를 수정해야 할 경우가 2가지 이상 - Component 관리에 대한 정보를 변경할 때 수정 - Version 정보에 대해 변경할 때 수정 public class SuperDashboard{ // Component 관리 public Component getLas..