[TIL] JPA 주요 애너테이션, CompletableFuture
in TIL on Til, Java Last modified at:
2025-04-08 TIL
📝 TIL (Today I Learned)
🔗 원본 이슈: #38
📅 작성일: 2025-04-08
🔄 최종 수정: 2025년 04월 09일
🍀 새롭게 배운 것
- JPA 주요 애너테이션 10개
CompletableFuture
- 비트코인 대시보드 개발 중 비동기 처리를 위해 공부했다.
1. JPA에서 자주 쓰는 애너테이션 10선
범주 | 대표 애너테이션 | 기능 |
---|---|---|
엔티티 지정 | @Entity , @Table | 클래스 → 테이블로 매핑 |
필드 매핑 | @Id , @GeneratedValue , @Column | 변수 → 컬럼으로 매핑 |
관계 매핑 | @OneToOne , @OneToMany , @ManyToOne , @ManyToMany | 엔티티 간 관계 지정 |
기타 | @Embedded , @Embeddable , @Transient 등 | 부가 설정 |
🧠 요약 정리표
애너테이션 | 설명 | 예시 |
---|---|---|
@Entity | 테이블 매핑 객체 | 클래스 위에 |
@Table | 테이블 이름 지정 | @Table(name="members") |
@Id | PK 설정 | 필드 위에 |
@GeneratedValue | 자동 생성 PK 전략 | IDENTITY , AUTO 등 |
@Column | 컬럼 설정 | 이름, 길이, null 여부 등 |
@Transient | DB에 저장 안 됨 | 계산용 필드 등 |
@ManyToOne 등 | 관계 설정 | 외래키 매핑 |
@JoinColumn | 외래키 이름 설정 | member_id 등 |
@Embedded | VO 포함 | Address 같은 값 객체 |
@Enumerated | Enum 타입 저장 방식 | STRING 권장 |
2. CompletableFuture
: JAVA 비동기 프로그래밍 도구
- Spring에서
@Async
와 함께 씀- 백그라운드에서 비동기 처리하고, 나중에 결과 받기 최적
- 백그라운드 작업, 병렬처리, API응답 지연 없는 작업에 유용하게 활용됨
기본적인 사용 예제
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { // 백그라운드에서 실행될 코드 return "Hello, Sungwoo!"; }); future.thenAccept(result -> { System.out.println("결과: " + result); });
supplyAsync()
: 비동기 작업 시작thenAccept()
: 결과가 오면 처리
🍎 오늘의 문제 상황
- 비트코인 대시보드의 첫 페이지 로딩이 너무 느려서 render배포에 실패했다.
- 복잡한 API 호출이 문제가 된 것 같다.
CompletableFuture
를 사용해서 병렬처리를 할까 했지만 DB에 API 응답들을 저장하여 API호출을 줄이는 방법을 선택했다.
🦄 느낀 점
- API를 연결하는게 문제가 아니라, 어떤 로직으로 어떻게 데이터를 처리할 것인지가 중요한 것 같다.