Framework(19)
-
TypeORM QueryRunner vs @Transactional
최근 사내에서 도입한 NestJS 프레임워크의 ORM인 TypeORM을 사용하며, 트랜잭션 관리에 대한 솔직한 피드백을 공유하고자 합니다.TypeORM을 선택한 이유TypeORM의 트랜잭션 관리에 대한 이야기를 하기 전에 간단히 현 개발 조직에서 다른 ORM을 두고 TypeORM을 선택하게 된 이유에 대해 주관적인 생각을 정리해보려고 합니다. 현재 개발조직에서 Prisma와 같은 다른 ORM이 있음에도 TypeORM을 선택한 이유는 TypeORM이 좀 더 SQL 친화적(?)일기 때문이라고 생각합니다. Prisma의 경우 아래 예시 처럼 간단 한 CRUD 작업을 하는 것에는 문제가 없지만, 복잡한 쿼리가 필요한 경우는 raw query기능을 사용해야하는것 말고는 좋은 대안이 없다는게 결론이 었습니다. c..
2025.01.05 -
Web Push Notification With Laravel
이번 포스팅에서는 Web Push 기술을 통해 웹 알림 발송 기능을 구현하는 과정에 대해 학습한 내용과 그 내용을 공유 하기 위해 글을 작성해보려고 합니다. 현재 사내에서는 진행중인 [결제 개편 프로젝트] 에서는 크게 두 가지 이유로 웹 알림이 필요했습니다. 주문 수집 제한 기준에 따른 [경고] 알림결제 완료 및 버전 변경에 따른 [안내] 알림Web Push Notification(웹 푸시 알림) 이란? 웹 푸시 알림이란 짜증나는(?) 크롬의 광고를 경험해보셨으면 이미 다들 알고 있는 기술입니다. 화면의 오른쪽 하단에 광고서 알림을 본적이 있으시다면 그게 웹 푸시 알림이라고 할 수 있습니다. 슬랙을 써보신 분이 계시다면 pc에서 슬랙을 사용하고 있을 때 크롬이나 기타 브라우저를 통해서 웹 알림을 받은 ..
2024.12.15 -
QueryDSL 바로 알기
0. 목차 왜 ORM인가? Spring ORM 기술QueryDsl 잘. 쓰기정리 1. 왜 ORM인가? ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스 간의 설정을 의미합니다. ORM은 서버에서 반드시 필요한 데이터베이스 작업 요청의 인터페이스 역할을 담당합니다. 예를 들어 사용자(User)를 조회하는 DB작업이 필요하다면 네이티브 쿼리를 사용하는 경우는 다음 코드를 작성할 것이라고 예상할 수 있습니다. SELECT * FROM users WHERE username = [username] ORM이 등장하기 이전에는 코드에 DB 종속적인 sql 쿼리가 작성되는 것이 일반적이었고 Spring의 경우도 Mybatis를 써서 코드를 설계하는 경우가 많았습니다. 그럼 만약 ..
2024.03.31 -
[Spring] spring에 mybatis 적용하기
이번 글은 spring에 mybatis를 적용하는 방법에 대해 정리해보려고 합니다. 먼저 mybatis는 무엇이고 어떤 역할을 하는지 알아보겠습니다. Mybatis란?Mybatis는 자바에서 JDBC를 통해 DB에 접근하여 SQL 쿼리를 수행할 수 있도록 지원하는 개발 프레임워크입니다. 제가 JDBC를 위해 자바에서 사용할 수 있는 JPA보다 Mybatis를 좋아하는 이유는 Mybatis장점 때문입니다. Mybatis의 장점복잡한 SQL 쿼리를 수행하는데 유리하다.자바와 SQL 쿼리를 분리할 수 있다. 제가 강조하고 싶은 장점은 첫 번째 복잡한 SQL 쿼리를 수행하는데 장점이 있다는 점입니다. 이렇게 복잡한 쿼리가 있다고 했을 때 JPA로 작성하는 것은 힘든 작업 일 수 있습니다. (왜 힘든지에 대해서..
2022.11.26 -
[Spring] PSA(Portable Service Abstraction)
이번 글에서는 스프링의 핵심 기술 IoC/DI, AOP와 더불어 PSA에 대해 정리해보려고 합니다. (본 글은 토비의 스프링 3.1의 내용을 제가 이해한 방식으로 정리한 글입니다.)PSA란 Portable Service Abstraction의 약자로 서비스 추상화라고 부릅니다. 추상화라는 단어에 대해 좀 더 깊이 들어가 보겠습니다. 자바에서는 표준 스펙, 사용 제품, 오픈 소스를 통틀어서 사용 방법과 형식은 다르지만 기능과 목적이 유사한 기술이 존재합니다. 예를 들어 DB에 접근하기 위해 Jdbc, Hibernate, Mybatis, JPA 등 DB Connection을 생성하고 SQL문을 실행하고 결괏값을 받는 등 DB와 관련된 로직을 처리한다는 점에서 기능과 목적은 동일하지만 사용하기 위한 방법은 다..
2022.11.05 -
[Spring] 예외를 처리하는 방법
이번 글에서는 예외를 처리하는 방법에 대해 정리해 보려고 합니다. (본 글은 "토비의 스프링 3.1" 책을 읽고 책의 내용과 제 생각을 더해서 쓴 글입니다) 예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보해야 합니다. 앞으로는 이 두 가지의 핵심 원칙을 지켜 자바에서 예외처리를 하기 위한 효과적인 방법에 대해 정리해보려고 합니다. 1. 자바에서 throw를 통해 발생시킬 수 있는 예외2. 예외를 처리하는 일반적인 방법과 효과적인 방법3. 일괄된 예외처리 전략 1. 자바에서 throw를 통해 발생시킬 수 있는 예외 자바에서 throw 키워드는 만약 어떤 연산을 하다가 예상치 못한 일이 발생했을 때 Excepti..
2022.11.01