TIL(Today Ingwang Learned)
TIL)2022-12-01(spring,test)
김코식
2022. 12. 2. 03:03
Spring
Spring 1주차 Test
1. MemberRepository
package com.example.springtest1.repository;
import com.example.springtest1.dto.MemberResponseDto;
import com.example.springtest1.entitiy.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findAllByOrderByModifiedAtDesc();
}
@Repository
JpaRepository를 extends 하여 Member (Entity)에서 데이터 받아오기
2.Member
package com.example.springtest1.entitiy;
import com.example.springtest1.dto.MemberResponseDto;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Getter
@Entity
@NoArgsConstructor
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String email;
@Column(nullable = false)
private Long pw;
public Member(MemberResponseDto memberResponseDto){
this.name = memberResponseDto.getName();
this.id = memberResponseDto.getId();
this.pw = memberResponseDto.getPw();
this.email = memberResponseDto.getEmail();
}
}
@Entity > 데이터베이스 테이블과 1대1매칭
@noArgsConstructor > 파라미터가 없는 기본 생성자 생성
@Getter > 모든 필드에 Getter메소드 생성
@GeneratedValue > 기본키에 저장된 속성 지정
entity에 생성자 생성
3. MemberResponseDto
package com.example.springtest1.dto;
import com.example.springtest1.entitiy.Member;
import lombok.Getter;
@Getter
public class MemberResponseDto {
private Long id;
private String name;
private String email;
private Long pw;
public MemberResponseDto(Member member){
this.id =member.getId();
this.pw = member.getPw();
this.email = member.getEmail();
this.name = member.getName();
}
}
@Getter > 모든 필드에 Getter메소드 생성
4. MemberController
package com.example.springtest1.controller;
import com.example.springtest1.dto.MemberResponseDto;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class MemberController {
private final com.example.springtest1.service.MemberService memberService;
/**
* 한 회원의 userId가 주었을때 회원 정보를 조회하는 API
* @param id
*/
@GetMapping("/member/{id}")
public MemberResponseDto getMemberInfo(@RequestParam Long id) {
return memberService.findMember(id);
}
/**
* 회원의 전체 목록을 조회하는 API
*/
@GetMapping("/member")
public List<MemberResponseDto> getMemberList() {
return memberService.findAllMember();
}
}
5.MemberService
package com.example.springtest1.service;
import com.example.springtest1.dto.MemberResponseDto;
import com.example.springtest1.entitiy.Member;
import com.example.springtest1.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository;
public MemberResponseDto findMember(Long id){
Member member = getMember(id,"존재하지 않습니다");
MemberResponseDto memberResponseDto = new MemberResponseDto(member);
return memberResponseDto;
}
public List<MemberResponseDto> findAllMember() {
List<Member> memo = memberRepository.findAllByOrderByModifiedAtDesc();
return memo.stream().map(memo1 ->new MemberResponseDto(memo1)).collect(Collectors.toList());
}
private Member getMember(Long id, String 존재하지_않습니다) {
Member member=memberRepository.findById(id).orElseThrow(
() -> new NullPointerException()
);
return member;
}
}
데이터 값을 DTO로 감싸서 리턴
Spring 이론
Entity 와 DTO
https://ik0501.tistory.com/entry/Spring-Entity%EC%99%80-DTO-VO
Spring) Entity와 DTO ,VO
Entity 실제 DB 테이블과 매핑되는 핵심 클래스로 데이터베이스 테이블에 존재하는 컬럼을 필드로 가지는 객체 데이터베이스 영속성(persistent)의 목적으로 사용되는 객체 영속성 컨텍스트란 영속
ik0501.tistory.com
새로 알게된 내용
DTO와 Entity의 차이
DTO - Entity 변환