본문 바로가기

분류 전체보기10

[Spring] TaskExecutor와 TaskScheduler 도입이번 프로젝트에서 스프링의 TaskExecutor와 TaskScheduler를 이용해서 비동기 스케줄링을 구현하였다. 예약한 시간에 비동기 방식으로 푸시 알림을 보내는 걸 구현해야 했는데 그때 이 두 인터페이스의 구현체를 이용하였다. 구글링을 하면서 사용법 위주로 익혀서 구현했지만, 이 둘에 대해서 잘 알고 있지 못하는 것 같아 이 글을 작성하면서 공부해보려고 한다. 이 글의 대부분은 스프링 공식 문서를 참고하여 작성했으며, 일부 보충이 필요한 내용은 기타 자료를 참고하여 작성했다. 자세한 참고 자료는 글 맨 마지막에 적어 놓겠다. TaskExecutor & TaskScheduler스프링 프레임워크는 TaskExecutor 인터페이스와 TaskScheduler 인터페이스를 제공한다. TaskExecu.. 2024. 10. 13.
JWT 1편 - JWT 이해하기 배경다른 사람들이 개발한 프로젝트를 보거나, 내가 직접 프로젝트를 개발할 때 로그인 인증/인가 부분을 보면 JWT라는 개념이 자주 나온다. 주로 로그인 성공 시 서버에서 클라이언트에게 JWT 토큰을 발급해 주고, 클라이언트는 요청을 보낼 때 발급받은 JWT 토큰을 함께 전송하여 인증과 인가를 받는 식이다. JWT를 자주 접하기는 했지만 제대로 알고 있지는 않다. 이번에 글을 작성하면서 JWT에 대한 이해를 높이려고 한다.JWT란?JWT는 'JSON Web Token'의 약자이다. 말 그대로 JSON 웹 토큰이다.공식 문서에서는 JWT를 어떻게 정의하는지 살펴보자.JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and s.. 2024. 10. 6.
[JPA] 7. 고급 매핑 상속 관계 매핑객체의 상속 관계를 데이터베이스 매핑하는 방법@MappedSuperclass여러 엔티티에서 공통으로 사용하는 매핑 정보만 상속받고 싶을 때 이 기능 사용복합 키와 식별 관계 매핑데이터베이스의 식별자가 하나 이상일 때 매핑하는 방법데이터베이스 설계에서 이야기하는 식별 관계와 비식별 관계조인 테이블연관 관계를 관리하는 연결 테이블을 매핑하는 방법엔티티 하나에 여러 테이블 매핑하기엔티티 하나에 여러 테이블을 매핑하는 방법 상속 관계 매핑관계형 데이터베이스에는 객체지향에서 다루는 상속이라는 개념이 없다. 대신 슈퍼타입 서브타입 관계(Super-Type Sub-Type Relationship)라는 모델링 기법이 객체의 상속과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와.. 2024. 7. 10.
[JPA] 6. 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때는 다음 3가지를 고려해야 한다.다중성단방향, 양방향연관관계의 주인다중성보통 다대일과 일대다 관계를 많이 사용하고 다대다 관계는 실무에서 거의 사용하지 않는다. 다중성과 단방향, 양방향을 고려한 가능한 모든 연관관계를 하나씩 알아보자.다중성은 왼쪽을 연관관계의 주인으로 가정하자. 다대일다대일 단방향 [N:1]@Entitypublic class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; .. 2024. 7. 10.
[JPA] 5. 연관관계 매핑 기초 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 객체는 참조를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전 다른 특징을 가진다. ORM에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다. 이 장에서는 객체의 참조와 테이블의 외래 키를 매핑하는 방법을 살펴보자. 연관관계 매핑을 이해하기 위한 핵심 키워드를 알아보자.방향(direction)단방향, 양방향이 있다.방향은 객체 관계에만 존재하고 테이블 관계는 항상 양방향이다.다중성(multiplicity)다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 다중성이 있다.연관관계의 주인(owner)객체를 양방향 연관관계로 만들면 연관관계의 주인을 정해야 한다. 단방향 연관관계객체.. 2024. 7. 3.
[JPA] 4. 엔티티 매핑 JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원한다. 크게 4가지로 나눌 수 있다.객체와 테이블 매핑: @Entity, @Table기본 키 매핑: @Id필드와 컬럼 매핑: @Column연관관계 매핑: @ManyToOne, @JoinColumn매핑 정보는 XML이나 어노테이션 중 선택해서 기술하면 된다. 여기서는 어노테이션만 언급한다. 각각 장단점이 있다. 어노테이션을 사용하는 쪽이 조금 더 쉽고 직관적이다. @EntityJPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 부른다. @Entity 적용 시 주의사항은 다음과 같다... 2024. 7. 2.