본문 바로가기

Spring16

Spring boot 환경 logback 날짜별 디렉토리 분리 안녕하세요. 지난 포스팅에서 Spring boot 환경의 logback 설정에 대해서 간단하게 포스팅을 했었습니다.이번에는 제가 회사에서 클라이언트의 요청에 따라 로그를 날짜별로 저장을 하는 방식에 대해서 작성하려고 합니다.어쩌면 너무 간단하고 단순한 설정이지만 매번 써오던 설정이 아니여서 그런지 실수를 했던 부분에 대해서 잊지 않으려고 제가 어떤 문제에 직면 했었고 어떻게 해결했는지에 대해서 작성하고자 합니다.  클라이언트 요청 사항 기존에 제가 사용했던 logback 설정은 '어플리케이션 실행 경로/logs/' 의 경로에서 'application.log - 현재 쌓이고 있는 로그 파일'과application-2023-05-31.log' 등 하나의 로그 디렉토리에서 날짜별로 로그를 저장하는 설정으로 사.. 2024. 6. 1.
Spring boot 환경 logback 설정 및 날짜별 로그 저장 안녕하세요.이번 포스팅은 spring boot에서 log를 남길 수 있는 logback 설정에 대해서 작성을 해보려고 합니다.제가 회사에서 클라이언트의 요청에 따라 로그의 위치와 디렉토리 구조를 알맞게 설정을 해야하는 업무가 있었는데요.해당 업무를 하면서 매번 써오던 logback 설정에 대해서 놓쳤었던 부분을 잊지 않고자 포스팅을 하게 되었습니다.사실 해당 포스팅은 개념적인 내용을 담기보다는 실제로 제가 프로젝트를 진행하다 삽질했던 부분에 대해서 작성을 하려고 했기 때문에개념 정리가 좀 부족할 수 있습니다. 😂 log란프로그램에서 log란 개발자 혹은 어플리케이션 관리자 등에게 있어서 매우 중요한 운영 기록이라고 할 수 있습니다.어플리케이션을 개발할 때 혹은 운영중에 예기치 못한 장애가 발생했을 때 .. 2024. 5. 31.
Spring JPA / 즉시 로딩과 지연 로딩 (with N+1 문제, 프록시 객체) 안녕하세요. 이번 포스팅에서는 JPA의 다양한 연관관계에서 데이터를 가져오는 두가지 방법인 지연 로딩과 즉시 로딩에 대한 개념을 작성을 하도록 하겠습니다. 프로젝트를 진행을 하다보면 두 테이블 또는 여러 테이블들을 조인하는 구조가 발생을 하게 되며 JPA로 구현을 할 때 앞서 포스팅한 여러 연관관계를 사용하여 데이터를 가져와야하는 경우가 많이 생기게 됩니다. 이렇게 연관관계에 있는 엔티티들을 조회할 때 두 테이블을 조인해서 한번에 데이터를 모두 가져오는 방법과 연관관계에 있는 엔티티에 접근을 할 때 조회를 하는 방법 두가지 옵션이 있습니다. 예를 들어 A라는 부모 개념인 엔티티와 B라는 자식 개념의 엔티티가 존재한다고 했을 때 A 엔티티의 특정 시퀀스로 데이터를 조회할 때 연관관계에 있는 B 엔티티의 데.. 2023. 7. 31.
Spring JPA / @MappedSuperclass 안녕하세요. 이번 포스팅에서는 JPA에서 사용하는 @MappedSuperclass 어노테이션에 대해서 작성을 해보려고 합니다. 먼저 JPA에서는 3가지의 상속관계 매핑이 존재하며 @MappedSuperclass 어노테이션은 상속관계 매핑과는 전혀 무관합니다. 상속관계 매핑과는 무관하다고 하면서 JPA에 3가지 상속관계 매핑이 존재한다고 얘기를 했냐면 DB에서의 상속 관계와는 무관하지만 객체 지향 관점에서 중복되는 컬럼을 하나의 클래스로 정의를 하고 해당 클래스를 상속을 받기 때문입니다. JPA의 상속관계에 대해 잘 모르시는 분들은 이 말이 이해가 잘 안가실 수 있습니다. 위에 얘기가 잘 이해가 안가시는 분들은 일단 머리속에서 JPA의 3가지 상속관계 매핑이라는 개념을 지우고 @MappedSuperclas.. 2023. 7. 12.
Spring JPA / org.hibernate.LazyInitializationException: could not initialize proxy 장애 극복기 안녕하세요. 이번 포스팅은 제가 회사에서 JPA로 개발을 하다가 발생한 이슈에 대해 작성을 하려고 합니다. 생각보다 너무 간단하게 해결을 했었지만 다시 한번 JPA의 동작 방식에 대해서 생각하게 해주는 이슈라서 잊지 않기 위해 작성을 하기로 결심 했습니다. 이슈 발생 프로젝트를 진행 하던 중 연관관계가 있는 엔티티에서 연관관계 참조형 필드를 조회 후 해당 데이터를 뽑아오는 과정에서 org.hibernate.LazyInitializationException: could not initialize proxy 에러 메세지가 출력이 되면서 이슈가 발생이 되었습니다. 문제의 코드 회사 코드를 직접적으로 사용을 할 수가 없어서 기존 포스팅에 사용했던 예제 코드들로 재현을 하고자 합니다. @Entity public .. 2023. 6. 29.
Spring JPA / 양방향 연관관계 주의사항 안녕하세요. 지난 포스팅에서는 JPA Entity의 연관관계에 대해서 작성을 했었는데요. 포스팅 마지막 부분에서 양방향 연관관계의 주인을 설정하는 방법까지 작성을 했었습니다. 이번 포스팅에서는 양방향 연관관계에서의 주의사항을 이어서 작성을 하도록 하겠습니다. 양방향 연관관계 사용 시 주의 사항 1. 객체 지향적 코드를 생각을 했을 때는 양방향 객체 참조 필드 모두 값을 넣어주는게 좋다. public class TestService { public void entityTest(){ // 엔티티 매니저 객체 생성 EntityManager em = emf.createEntityManager(); // 트랜잭션 시작 em.getTransaction().begin(); Team team = new Team(); .. 2023. 6. 27.