Spring Boot - JPA 스키마, 데이터 초기화하기 (SQL script -> ddl-auto)
·
Spring
개요이전에 작업했던 프로젝트를 Mybatis에서 JPA, Querydsl로 마이그레이션하는 작업을 하고 있다.기존 초기화를 script(schema.sql(테이블 생성), data.sql(더미데이터 생성)) 파일을 사용하다가 JPA를 사용하게 되면서 ddl-auto를 사용해 Table 생성하기로 했다.DDL이란?DDL(Data Definition Language)은 SQL의 하위 집합으로 데이터베이스의 구조와 테이블, 뷰, 인덱스 프로시저와 같은 개체를 정의하는데 사용된다. DDL문은 데이터 베이스 개체를 생성, 변경 및 삭제 하는데 사용된다. (CREATE, ALTER, DROP, TRUNCATE, RENAME) 데이터 초기화 설정SQL script (기존) 기존에는 script 기반으로 데이터를 초기..
Backend - RESTful하게 API 설계하는 방법
·
Network
본 글은 아래 링크의 포스트를 번역한 내용입니다.https://daily.dev/blog/restful-api-design-best-practices-guide-2024 RESTful API Design Best Practices Guide 2024Guide to RESTful API design best practices in 2024 covering resource-based architecture, stateless communication, client-server separation, URI design, HTTP method usage, security, performance optimization, and more.daily.dev 주요 권장 사항아래 예시를 따르면 사용하기 쉽고 유지보수 및..
Javascript - Kakao SDK 사용 시 사용자 정보 조회 API 응답에서 CI 항목 전달받지 못하는 문제 원인과 해결 방법
·
나의 에러 일지
개요Kakao SDK를 통해 사용자 정보를 조회해오는 API 응답에서 CI 항목이 제외되어서 카카오 회원가입 중 에러가 발생했다. 개발환경Spring 5.xJava 8JSPMybatisOracle 원인프로젝트에서는 Javascript SDK를 사용했다. ( Kakao Javascript SDK 가이드)이전까지는 CI가 잘 조회되고 있었고 관련 코드를 수정한적도 없었다. 그래서 카카오쪽 정책이 바뀌었을까 하고 찾아봤는데, 쉽게 찾을 수 있었다. 카카오 디벨로퍼에 공지로 올라왔던 것. 관련 글을 살펴보니 정보통신망법 개정안에 따른 조치라고 한다.제23조의6(연계정보의 안전조치 의무 등) ① 본인확인기관이 연계정보를 생성ㆍ처리하는 경우 「개인정보 보호법」 제29조에 따른 조치 외에 연계정보 생성ㆍ처리의 안전성..
Java - 생성 패턴 구현
·
Design Pattern
Singleton Pattern클래스의 인스턴스가 한 개만 생성되도록 보장하는 디자인 패턴하나의 인스턴스만 유지하기 때문에 리소스를 절약하고 전역적으로 상태를 공유할 수 있다.전역적으로 사용되기 때문에 예측하지 못한 동작을 일으키는 문제가 발생할 수 있고 테스트가 어렵다.구현 예시public class Singleton { private static Singleton instance; private String data = ""; private Singleton() { // private constructor } public static synchronized Singleton getInstance() { if (instance == null) { ..
Java - 자바 가비지 컬렉션(Garbage Collection)을 알아보자
·
Java
개요GC(Garbage Collection)은 에덴 영역에 생성된 객체의 메모리 할당/해제를 자동으로 관리하는 자바의 핵심 기능이다.GC 덕분에 개발자는 메모리 관리에 대한 걱정 없이 개발에만 집중할 수 있게 됐고, 이러한 장점이 크고 복잡한 애플리케이션을 만들 때 자바를 선택하게 만들었다. 하지만 성능 최적화와 메모리 관련 에러를 방지하기 위해서는 GC의 작동 원리에 대한 이해가 필수적이다. Java의 GC 작동 원리자바에서 모든 객체는 heap 영역에 저장된다. heap은 동적 할당을 위한 메모리 영역(runtime data area) 중 하나다. 객체가 더 이상 참조되지 않으면 GC의 수집 대상이 된다. GC는 heap 영역에서 사용되지 않는 객체를 주기적으로 찾아서 메모리를 해제해준다.이 과정에서..
Spring Data JPA - 외래키(Foreign Key)를 복합 기본키(Composite Primary Key)로 사용하기
·
JPA
개요복합 기본키(Composite Primary Key)란 두 개 이상의 컬럼을 묶어 만든 기본키(Primary Key)를 말한다.복합키는 다대다(N:M) 관계의 테이블의 관계를 풀어주고 공통으로 저장되는 데이터를 다룰 때 사용되는 매핑 테이블에서 사용될 수 있다.예를 들어, 내가 현재 개발중인 업무평가시스템에서 하나의 팀은 다양한 업무를 담당할 수 있고 하나의 업무를 여러 팀이 담당할 수 있다.즉, 팀과 업무 테이블은 다대다 관계를 갖고 있다. 그리고 각 업무에 대한 팀별로 평가를 받을 수 있다. 이 때 매핑 테이블 구조는 다음과 같다. 이제 Spring Data JPA에서 외래키로 복합키를 만드는 방법을 알아보자taskId: 업무 테이블의 외래키(foreign key)teamId: 팀 테이블의 외래..
JPA - Querydsl-sql 사용 시 Table not found 원인과 해결 방법
·
나의 에러 일지
개요프로젝트를 Mybatis -> JPA, QueryDsl로 마이그레이션하고 있다.복잡한 쿼리가 있어서 서브쿼리를 프롬절에서 사용해야 했는데, QueryDsl-jpa에서는 from절 서브쿼리를 지원하지 않아서 QueryDsl-sql을 사용해야 했다. 이 과정에서 발생했던 에러 처리 과정을 남긴다. 해결 방법은 간단했지만 원인을 알기 위해서 Querydsl, JPA, JPQL, NativeSQL을 조금 깊게 파고들 수 있는 계기가 되었다. 문제 발생쿼리를 테스트하는 과정에서 아래와 같은 에러가 발생했다.ORGANIZATIONLEADENTITY 테이블을 찾을 수 없다고 한다. nested exception is org.hibernate.exception.SQLGrammarException: could not..
Cold Bean
'오블완' 태그의 글 목록