SayBridge 프로젝트를 진행하면서, 강좌별로 “내가 이미 리뷰를 작성했는가?”를 확인하여 리뷰 작성 버튼을 활성화하거나 비활성화하는 기능이 필요했다. 처음에는 로직을 처리하는 부분이라 서버에서 해당 코스에 리뷰가 있는 지를 확인하여 각 코스마다 리뷰 여부를 확인 요청을 보내려했는데 그럴 경우 요청이 코스 수만큼 늘어나 데이터가 많아지면 서버 부하가 심해질 것 같았다. 기존 MyPage 로드 시 유저가 수강중인 강좌, 작성한 리뷰를 불러오는데, 이때 저장한 강좌 및 리뷰 정보를 이용하여 프론트에서 해당 기능을 구현하기로 했다. 처음에는 단순하게 .some()를 사용해 각 코스마다 리뷰를 찾는 방식으로 구현하였다.const hasReview = reviews.some(review => review..
SayBridge 프로젝트 구현 중 신규 강좌 알림 구독 서비스 신청 시 신규 강좌가 등록되면 해당 강좌 정보를 구독한 사용자들에게 이메일로 전송해는 기능을 구현하였다.1. 기능 개요 처음 구현 시 수강생에게 메일을 보내려면 강좌를 생성하는 CourseService 안에서 메일 전송 로직을 넣으려고 하다가 “메일 전송”이라는 기능은 다른 서비스나 기능에서 응용할 수 있을 것 같다는 생각을 해서 MailService 코드를 따로 생성 하였다. MailService 코드@Servicepublic class EmailService { @Autowired private JavaMailSender mailSender; @Autowired private SubscriberRepository ..
Spring Data JPA에서는 객체와 데이터베이스 간의 관계를 매핑하기 위해 다양한 애노테이션을 제공한다. 이 애노테이션은 테이블 간의 관계(1:1, 1:N, N:1, N:N)를 엔티티 클래스를 통해 정의할 수 있도록 돕는다. 각각의 애노테이션과 함께 자주 사용되는 @GeneratedValue, @JoinColumn 등의 애노테이션도 설명한다.1. @ManyToOne @ManyToOne은 여러 엔티티가 하나의 엔티티와 연결될 때 사용한다. 예를 들어, 여러 개의 주문(Order)이 하나의 사용자(User)와 연결되는 경우이다. 데이터베이스에서는 외래 키(Foreign Key)를 통해 관계를 설정한다. 예시: 사용자와 주문@Entitypublic class Order { @Id @Genera..
Querydsl은 Java 기반의 타입 안전한 동적 쿼리 생성 도구로, SQL, JPA, MongoDB 등 다양한 데이터베이스와 연동할 수 있다. 특히 JPA와 함께 사용하면 JPA의 동적 쿼리 작성이 더욱 간단하고 효율적으로 바뀐다. JPQL(Java Persistence Query Language)의 단점을 극복하기 위해 등장한 Querydsl은 컴파일 타임에 오류를 감지할 수 있는 타입 안전성을 제공하며, 동적 쿼리를 작성하는 데 뛰어난 가독성과 간결함을 제공한다. build.gradle 설정dependencies { implementation 'com.querydsl:querydsl-jpa:5.0.0' annotationProcessor 'com.querydsl:querydsl-apt:..
Spring Data JPA는 데이터베이스와 객체 간의 매핑을 단순화하고, 데이터베이스 작업을 효율적으로 처리할 수 있도록 설계된 모듈이다. MySQL과 함께 사용하여 데이터베이스를 구성하려면 JPA의 핵심 개념과 자주 사용하는 애노테이션에 대해 깊이 이해하는 것이 중요하다. 먼저, JPA와 Spring Data JPA가 등장하기 전의 데이터베이스 접근 기술과 그 한계, 이를 해결하기 위해 등장한 ORM(Object-Relational Mapping)의 발전 과정을 알아보자. 1. JDBC (Java Database Connectivity) JDBC는 Java의 표준 데이터베이스 접근 API로, SQL을 직접 작성하고 데이터베이스와의 통신을 수동으로 관리한다. 초기에는 대부분의 애플리케이션이 이 방식을 ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.