사용법
실습용 Member Entity
// Member Entity
package study.demo.Entity;
import jakarta.persistence.*;
import lombok.*;
@Entity
@Setter @Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id","username","age"})
public class Member {
@Id @GeneratedValue
@Column(name = "member_id")
private Long id;
private String username;
private int age;
@ManyToOne
@JoinColumn(name = "team_id")
private Team team;
public Member(String username){
this.username = username;
}
public void changeTeam(Team team){
this.team = team;
team.getMembers().add(this);
}
}
Member Repository
- interface를 만들어준 뒤 JpaRepository를 extends 해준다.
- 제네릭엔 클래스와 Entity의 Id 타입을 넣어주면 됨.
- 메서드 이름으로 쿼리 생성
// Repository
package study.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import study.demo.Entity.Member;
import java.util.List;
public interface MemberRepository extends JpaRepository<Member,Long> {
List<Member> findAll();
}
- 쿼리를 이용할 수도 있음.
- @Param("age") => 파라미터 바인딩
- :age 에 값을 넣어주는 작업임.
@Query("select m from Member m where m.username =:username and m.age =:age")
List<Member> findUser(@Param("username") String username, @Param("age") int age);
// List를 파라미터 값으로 넣을 수도 있다.
@Query("select m from Member m where m.username in :names)
List<Member> findByNames(@Param("names") List<String> names);
// 기존 방식
@Repository
public class MemberJpaRepository {
@PersistenceContext
private EntityManager em;
public Member find(Long id){
return em.find(Member.class,id);
}
}
@Query 값, DTO 조회하기
MemberDto
package study.demo.dto;
public class MemberDto {
private Long id;
private String username;
private String teamname;
}
Member Repository
- Jpa에서 쓰던 방식과 거의 비슷하다.
@Query("select new study.demo.dto.MemberDto(m.id, m.username, t.name) from Member m join m.team t")
List<MemberDto> findMemberDto();
'JPA' 카테고리의 다른 글
[Data JPA] 확장 기능 (0) | 2024.01.31 |
---|---|
[Data JPA] 벌크, @EntityGraph, Hint (1) | 2024.01.30 |
[JPA API] 컬렉션 조회 최적화 (0) | 2024.01.25 |
[JPA API] 주문, 배송정보, 회원 조회 API (0) | 2024.01.24 |
[JPA API] 간단한 회원 등록, 수정, 조회 API (1) | 2024.01.23 |