본문 바로가기
반응형

전체 글183

Spring Batch 적용기 intro현재 진행 중인 프로젝트 로직 중 매일 자정마다 통계 테이블을 갱신해야 하는 로직이 있다. 해당 로직을 구현하기 위해 Spring Batch를 이용해보려고 한다. Spring Batch를 선택한 이유는, 대용량 데이터를 처리하기 위함과, 현재 사용 중인 프레임워크가 Spring Boot이기 때문이다. (그냥 한번 공부해서 사용해보고 싶은 이유도 있다ㅎㅎ) 그리고 해당 로직이 실행되며 예외가 발생할 경우, 어떠한 단위 기준(chunk)으로 재시도하거나 예외를 처리할 수 있다고 들었다. 또한 해당 단위(chunk)의 로직이 실패할 경우 다음 단위(chunk)의 로직으로 넘어가게 할 수도 있다고 한다. 이러한 이유들로 Spring Batch를 선택했고, 공부하여 프로젝트에 적용해보고자 한다! Spri.. 2024. 8. 26.
[북스터디] 자바 ORM 표준 JPA 프로그래밍 : 연관 관계 매핑 기초 Intro객체 참조화 테이블의 외래 키를 매핑한는 것이 이 장의 목표! 방향(Direction) 단방향 : 회원 → 팀 양방향 : 회원 ↔ 팀 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관 관계의 주인 : 객체를 양방향 연관 관계로 만들면 연관 관계의 주인을 정해야함 단방향 연관관계회원과 팀이 있다고 가정회원은 하나의 팀에만 소속될 수 있음회원과 팀은 다대일 관계임 객체 연관 관계회원 객체는 Member.team 필드(멤버변수)로 팀 객체와 연관관계를 맺는다.회원 객체와 팀 객체는 단방향 관계이다. (회원객체를 통해 팀을 알 수 있지만 팀 객체로는 회원을 알 수 없음 테이블 연관관계회원 테이블을 TEAM_ID 외래 키로 팀 테이블과 연관관계.. 2024. 6. 16.
JaCoCo 적용기 Intro 현재 리팩토링을 진행하며 test 코드를 열심히 짜고 있는 중이다. 그런데 현재 테스트코드를 잘 짜고 있는지가 궁금해졌다. 그래서 코드 커버리지 측정도구인 Jacoco를 이용해 현재 나의 test 코드를 평가해보려 한다. 오늘은 Jacoco가 무엇인지, 동작 방식, 적용 방법에 대해서 설명하겠다. JaCoCo란?JaCoCo (Java Code Coverage)는 자바 프로그램의 코드 커버리지를 측정하기 위한 도구이다. 코드 커버리지는 테스트 코드가 애플리케이션 코드의 몇 퍼센트를 실행했는지 나타내는 지표로, 소프트웨어 테스트의 품질을 평가하는 데 중요한 역할을 한다. 주요 특징라인 커버리지(Line Coverage): 각 코드 라인이 실행된 횟수를 측정분기 커버리지(Branch Coverage.. 2024. 6. 13.
[북스터디] 자바 ORM 표준 JPA 프로그래밍 : 엔티티 매핑 Intro이번 장에서는 객체와 테이블 매핑, 기본 키 매핑, 필드와 컬럼 매핑에 대해 알아보겠다. @EntityJPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다.JPA가 엔티티 객체를 생성할 때 기본생성자를 사용하므로 기본 생성자가 필수(파라미터가 없는 public 또는 protected 생성자)final 클래스, enum, interface, inner 클래스에는 사용할 수 없다.저장할 필드에 final을 사용하면 안 된다. name 속성JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다.다른 패키지에 이름이 같은 엔티티가 클래스가 있다면 이름을 지정하여 충돌하지 않도록 해야 한다.기본값 : 클래스 이름 @Table@Table 어노테이.. 2024. 6. 2.
Spring Boot 프로젝트 local 환경에서 https 적용하기 Intro현재 진행중인 프로젝트의 https 개발환경을 목적으로 자체 서명된 인증서로 https를 적용해 보았다. https란 무엇이며, https 연결 설정 과정과 로컬 프로젝트에 https를 적용하는 방법에 대해서 설명하겠다.   https란?HTTPS(HyperText Transfer Protocol Secure)는 HTTP 프로토콜을 기반으로 한 웹 통신 프로토콜이다. HTTPS는 데이터를 암호화하여 보안을 강화하며, 이를 위해 SSL(Secure Sockets Layer) 또는 최신 버전의 TLS(Transport Layer Security) 프로토콜을 사용한다.    https 연결 설정 과정TLS Handshake 시작클라이언트가 HTTPS로 접속하려는 서버에 연결을 시도서버는 클라이언트의 .. 2024. 5. 31.
[북스터디] 자바 ORM 표준 JPA 프로그래밍 : 영속성 관리 엔티티 매니저엔티티 관리자. 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 개발자 입장에서는 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다.    엔티티 매니저 팩토리와 엔티티 매니저데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다.엔티티 매니저 팩토리는 생성 비용이 크기 때문에 한 개만 만들어서 애플리케이션 전체에서 공유 하도록 설계되어있다.반면 엔티티 매니저는 생성 비용이 거의 들지 않는다.엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간.. 2024. 5. 26.
[북스터디] 자바 ORM 표준 JPA 프로그래밍 : JPA 시작 JPA가 제공하는 매핑 어노테이션@Entity클래스의 위에 붙여 사용한다. 해당 클래스를 테이블과 매핑한다고 JPA에게 알려주는 역할을 한다. @Entity 어노테이션이 사용된 클래스를 엔티티 클래스라고 한다. @Table엔티티 클래스에 매핑할 테이블 정보를 알려준다. name 속성을 이용하여 해당 이름을 가지고 있는 테이블과 매핑한다. @Table 어노테이션을 생략하면 클래스 이름을 테이블 이름으로 매핑한다. @Id엔티티 클래스의 해당 어노테이션이 붙은 필드를 기본키에 매핑한다. @Id 어노테이션이 사용된 필드를 식별자 필드라고 한다.@Column필드를 컬럼에 매핑한다. 해당 어노테이션이 생략된 경우 컬럼명과 같은 네임의 필드를 매핑한다.    데이터베이스 방언 SQL 표준을 지키지 않거나 특정 데이터.. 2024. 5. 19.
Mapstruct 적용기 IntroDto와 Entity를 쉽게 매핑하기 위해 MapStruct를 이용해 보았다. Mapping 라이브러리를 사용하지 않다 보니 Entity 내부에 toDto() 메서드를 만들어야 하거나, Dto 내부에 toEntity() 메서드를 만들어야 하는 일이 발생했다. 단일 책임의 원칙에 위배된다는 생각이 들어 이번에는 MapStruct를 이용하여 매핑 과정을 Dto와 Entity에서 분리할 생각이다. MapStruct란?MapStruct는 Java bean 유형 간의 매핑 구현을 단순화하는 코드 생성기이다. MapStruct의 장점 컴파일 시점에 코드를 생성 컴파일 시점에 코드가 생성되기 때문에 컴파일러가 코드를 검증하고 타입을 확인한다. 그렇기 때문에 런타임 오류를 방지할 수 있다. 그러므로 안정성을 .. 2024. 5. 16.
[북스터디] 자바 ORM 표준 JPA 프로그래밍 : JPA 소개 IntroJPA 사용 방법에 대해서는 잘 알고 있지만, 정확한 핵심 원리 개념이 부족한 것 같아서 이제부터 주말마다 김영한 저자의 책 '자바 ORM 표준 JPA 프로그래밍'에 대해서 읽고 정리한 것을 블로그에 남길 예정이다. 오늘은 그 시작인 '제1장 : JPA 소개'에 대한 글을 써보겠다. SQL을 직접 다룰 때 발생하는 문제점반복적인 CRUD SQL & JAVA 코드어떠한 서비스를 만들었다고 가정할 경우, 그 값을 데이터베이스에 저장할 때를 생각해 보자. 서비스에 해당하는 SQL작성, 객체의 값을 꺼내서 해당 SQL에 전달, JDBC API를 사용해서 SQL을 실행 과정들을 거칠 것이다. 그리고 서비스가 여러 개 생성될 경우 위의 과정을 계속해서 반복해야 한다. 만약 데이터베이스가 아닌 컬렉션에 보관.. 2024. 5. 12.
반응형