[Effective Java] 생성자 대신 Static Factory Method를 고려하라
개발/Java
/ 2024. 11. 8.
Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라정적 팩터리 메서드(Static Factory Method)는 클래스에 정적 메서드를 정의하고, 생성자 대신 객체를 생성할 수 있게 만드는 기법입니다. 간단하게 정리하면 Method 호출 방식으로 객체를 생성하는 것입니다.대표적인 예로 Java의 Wrapper 클래스에서 사용되는 것을 확인할 수 있습니다. 그 중 하나인 Boolean은 다음과 같은 API를 제공합니다.public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;} public static void main(String args[]) { Boolean bool1 = new Boolean(tru..
[SQL] ORACLE MERGE INTO 사용
개발/DB&SQL
/ 2024. 11. 7.
오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있습니다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있습니다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있습니다. 1. 동일한 테이블 구조를 가지고 있는 테이블로부터 데이터를 옮기는 쿼리MERGE INTO TABLE1 T1 USING TABLE2 T2 ON (T1.COLUMN1 = T2.COLUMN1 AND T1.COLUMN2 = T2.COLUMN2) WHEN MATCHED THEN UPDATE SET T1.COLUMN3 = T2.COLUMN3 WHEN NOT MATCHED THEN INSERT (T1.CO..
[Firebase] 데이터베이스 비교 (Realtime vs Cloud Firestore)
개발/DB&SQL
/ 2024. 10. 4.
최근에 Flutter 기반 1인 앱을 개발하면서 서버리스(Serverless)에 대해 알아보게 되었습니다. 보통은 서버를 직접 개발했기 때문에, 관련 플랫폼인 Firebase나 Supabase 등은 저의 관심 밖이었습니다. 하지만 혼자 개발을 하다보니 전체 영역을 다루는 것은 쉽지 않았습니다. 특히 Flutter의 빠른 개발을 특징으로, 프로토타입 단계를 목표할 때에는 서버를 직접 개발하는 것이 전략상 맞지 않음을 느꼈습니다.뿐만 아니라 Firebase의 다양한 서비스(Analysis, 보안, Database 등)를 실습해보니, 놀랍고 편리한 기능이 정말 많았습니다. 오늘은 Firebase에서 제공하는 2가지의 데이터베이스 솔루션에 대해서 알아보겠습니다.[Realtime Database(실시간 데이터베..
[Flutter] Android-Cannot fit requested classes in a single dex file 해결 방법 및 원인 분석
개발/Dart&Flutter
/ 2024. 9. 26.
1) Error:Cannot fit requested classes in a single dex fileAndroid Studio 에서 Flutter 개발중 위와 같은 에러가 발생했습니다. Multidex 지원 문제로, 많은 패키지를 추가하다 보면 발생한다고 합니다. 2) 해결방법경로 : android/app/build.gradledefaultConfig 내부에 multiDexEnabled true 를 추가합니다. 해당 방법으로 Multidex 지원을 활성화합니다. 또는,프로젝트 폴더 터미널에서 아래와 같이 설정합니다.project folder > flutter run --debug(... 생략 ...)Do you want to continue with adding multidex support for ..
[SQL] 여러 개 데이터를 1개의 행(Row)으로 출력하기 (Oracle, Mysql, PostgreSQL)
개발/DB&SQL
/ 2024. 6. 29.
오늘은 여러 개의 데이터를 1개 행(Row)으로 출력하는 방법을 알아보겠습니다.최근 데이터를 집계 결과를 화면으로 뿌려주는 작업을 진행했는데요. 해당 화면에는 집계 대상 데이터의 시퀀스도 함께 노출해야 하는 요구사항이 있었습니다.따라서 요구사항은 위 예시처럼 A라는 컬럼을 기준으로 Group 하고, SEQ를 List 형태로 출력해야 하는 것이죠. 하지만 GROUP BY 절은 집계(합계, 평균, 연산 등) 외에는 공통된 기준이 아니면 값을 출력할 수 없습니다. 다시 말하면, 서로 다른 여러 개의 값을 한 행으로 나타낼 수 없습니다.하지만 다수의 데이터가 하나의 값이면 어떨까요? 위 예시에서 seq_a와 seq_b가 문자열로 묶인 "seq_a, seq_b" 형태로 나오는 것입니다. 이와 같은 기능을 수행하는..
[CI/CD] Github Action, AWS로 Java 자동 빌드/배포하기
개발/Programming
/ 2024. 1. 15.
오늘은 Java로 개발한 프로젝트를 Github Action과 AWS의 서비스를 활용하여 빌드/배포 자동화를 해보도록 하겠습니다. CI/CD를 구축하는 방법은 다양하게 있습니다. 저는 그중 Github Action과 AWS의 CodeDeploy를 많이 활용하는데요. 구축 방법도 쉬울뿐더러, 한번 구축해 두면 프로젝트를 깃헙에 Push(merge)만 하여도 테스트와 배포를 자동으로 진행하는 덕분에 필수로 애정하며 도입하는 기술입니다. 현재 프로젝트를 함께 진행중인 세바개 팀에서도 Github Action과 AWS를 활용한 CI/CD를 도입하였습니다. 그래서 이번 게시글에서 위 기술을 활용한 CI/CD 구축 방법을 정리해보려고 합니다. 사용 기술 Java 17, Spring boot, Gradle Git, ..