본문 바로가기

전체 글14

Gradle vs Maven 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇‍♂️ Gradle과 Maven은 모두 빌드 관리 도구이다. 빌드 관리 도구란? 우리가 작성한 Java 코드와 프로젝트 내에 필요한 각종 설정 파일(xml, properties, jar, yml etc...)들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 도구를 말한다. 빌드는 코드를 사용 or 실행 가능한 형태로 컴파일링, 링킹, 패키징 하는 것을 포함하며 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이라 할 수 있다. 애플리케이션을 개발하면서 개발에 필요한 외부 라이브러리들을 다운로드하고, 또한 모든 라이브러리들을 번거롭게 모두 다운로드 받을 필요 없이, 빌드 도구 설정 파일에 필요한 라이브러리 종류와 버전들, .. 2022. 3. 31.
Spring 트랜잭션 관리 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇‍♂️ 트랜잭션? 트랜잭션이란 쪼갤 수 없는 업무 처리의 최소 단위를 말합니다. 트랜잭션 종류에는 데이터베이스 트랜잭션, 메시지 큐 트랜잭션 등등이 있습니다. 트랜잭션의 성질 원자성 (Atomicity) : 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 즉, 모두 성공 또는 모두 실패 일관성 (Consistency) : 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 격리성(독립성) (Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야 한다. 영속성(지속성) (Durability) : 트랜잭션이 성공적으로 처리되면 결과는 항상 저장되어야 한다. Spring에서 트랜잭션을 관리하는 방법은 크게.. 2022. 3. 28.
SpringBoot에서 Ehcache 사용해보기 이 글은 2021년 12월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇‍♂️ 모든 코드는 Github에서 관리중입니다. 필요할 시 확인하시면 될 것 같습니다. 😊 일단 Cache를 사용하여 데이터를 가져오는 이유를 모르는 사람들을 위해 간략하게 설명해 보겠다. 우리가 기본적으로 cache를 사용하여 데이터를 가져오는 이유는 데이터베이스의 과부하를 줄임과 동시에 짧은 데이터 조회시간을 통해 쾌적한 서비스를 제공함에 있다. 그러나 무분별하게 사용할 경우 원치 않는 데이터가 보여 신뢰성을 떨어트릴 수 있다. 사용하게 된다면 신중하게 사용하도록 하자 Gradle 의존성 implementation 'org.springframework.bo.. 2022. 3. 25.
Java 동시성 문제와 ThreadLocal 이 글은 2021년 12월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇‍♂️ ThreadLocal 그게 뭐야 ? 간단히 말하자면 스레드 단위로 로컬 변수를 할당하는 기능이다. ThreadLocal의 필요성을 느끼기 위해선 먼저 동시성 문제를 느끼고 알아야 한다. 동시성 문제, 그건 또 뭐야? 스프링 빈은 싱글톤이 보장된다. 이 객체의 인스턴스가 애플리케이션에 딱 1개만 존재한다는 뜻이다. 이렇게 하나만 있는 인스턴스의 필드를 여러 스레드가 동시에 접근하기 때문에 동시성 문제가 발생한다. 예를 들어 회원을 저장하고 1초 쉰 뒤 조회하는 코드가 있다고 가정해보자 private String nameStore; public String logi.. 2022. 3. 25.
JPA N+1 문제와 해결 이 글은 2021년 11월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 제 글에 문제가 있다면 댓글로 알려주시면 감사하겠습니다! 🙇‍♂️ 저는 JPA를 이용하며 프로젝트를 하며 N+1 문제를 만나보진 않았습니다. 하지만 JPA를 사용하면 자주 만나게 되는 것이 N+1 문제입니다. JPA를 공부 할 때에 예시 상황을 만들고 공부를 했었지만 공부한 지 시간이 좀 지났기 때문에 프로젝트 중 N+1 문제가 생기더라도 당황하지 않고 빠르게 해결하기 위해, 다시 공부하기 위해 이 글을 작성합니다. 이동욱 님의이동욱 님의 글을 참고하여 Java8 -> Java11, SpringBoot 1.5.X -> 2.5.X, Junit4 -> Junit5로 버전을 업그레이드하여 코드를 작성하였고, 이 글을 작성하였습니다 .. 2022. 3. 25.
JPA 값타입 이 글은 2021년 5월에 작성되었으며 블로그를 이전하며 옮기게 되었습니다. 시작하기 앞서 저의 글에 대한 피드백이나 지적은 언제나 환영입니다 😊 JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 임베디드 타입(embedded type, 복합 값 타입.. 2022. 3. 25.