π μ€λμ νμ΅ ν€μλ
- SpringData JPA - Projection
π Projectionμ΄λ?
Spring Data JPA νλ‘μ μ λ°μ΄ν°λ² μ΄μ€μμ νμν νλλ§μ μ νμ μΌλ‘ μ‘°ννμ¬ μΏΌλ¦¬ μ±λ₯μ μ΅μ ννκ³ , νμν λ°μ΄ν°λ§μ λ°νν¨μΌλ‘μ¨ λΆνμν μμ λλΉλ₯Ό λ°©μ§ν μ μλ€. μν°ν°μ μΌλΆ μμ±λ§μ μ νμ μΌλ‘ μ‘°νν μ μμΌλ©°, μ΄λ μν°ν°μ νΉμ νλλ μ°μ° κ²°κ³Όλ₯Ό μ§μ μ‘°ννμ¬ μ¬μ©νλ λ±μ μν©μμ μ μ©νκ² μ°μΈλ€. νλ‘μ μ μ λ€μν λ°©λ²μΌλ‘ ꡬνν μ μλ€.
1. μΈν°νμ΄μ€ κΈ°λ° νλ‘μ μ
: μΈν°νμ΄μ€λ₯Ό μ μνκ³ ν΄λΉ μΈν°νμ΄μ€μ λ©μλμ μ‘°νν νλλ₯Ό μ μΈνμ¬ μ¬μ©νλ€.
public interface UserNameProjection {
String getUsername();
}
List<UserNameProjection> findByAge(int age);
2. ν΄λμ€ κΈ°λ° νλ‘μ μ
: ν΄λμ€λ₯Ό μ μνκ³ ν΄λΉ ν΄λμ€μ μμ±μμ μ‘°νν νλλ₯Ό λ§€ννμ¬ μ¬μ©νλ€.
public class UserNameProjection {
private String username;
public UserNameProjection(String username) {
this.username = username;
}
// Getter λ± νμν λ©μλ ꡬν
}
List<UserNameProjection> findByAge(int age);
3. λμ νλ‘μ μ
: λ°ν νμ μ 'Object'λ₯Ό μ¬μ©νκ³ μ€μ 쿼리 μ€ν νμ νμν ννλ‘ λ°μ΄ν°λ₯Ό κ°κ³΅νλ€.
List<Object> findByAge(int age);
4. DTO κΈ°λ° νλ‘μ μ
: DTO ν΄λμ€λ₯Ό μ μνκ³ ν΄λΉ ν΄λμ€μ μμ±μμ μ‘°νν νλλ₯Ό λ§€ννμ¬ μ¬μ©νλ€.
public class UserDto {
private String username;
public UserDto(String username) {
this.username = username;
}
// Getter λ± νμν λ©μλ ꡬν
}
List<UserDto> findByAge(int age);