java 배우기/TIL

Spring 익숙해 지기

checkuu 2024. 8. 20. 21:21

Spring을 패턴화해서 일단 익히기 (멤버 등록/조회하기)

 

  • controller
  • dto
  • entity
  • repository
  • service

패키지 만들어서 구분하기

멤버 등록 및 조회를 위한 entity

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@NoArgsConstructor
public class Member {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    public Member(String name){
        this.name = name;
    }
}

 

controller

import lombok.RequiredArgsConstructor;
import org.example.springprac4.dto.MemberSaveRequestDto;
import org.example.springprac4.dto.MemberSaveResponseDto;
import org.example.springprac4.dto.MemberSimpleResponseDto;
import org.example.springprac4.service.MemberServics;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequiredArgsConstructor
public class MemberController {

    private final MemberServics memberService;

    @PostMapping("/members") //멤버 저장하는 메서드
    public ResponseEntity<MemberSaveResponseDto> saveMember(@RequestBody MemberSaveRequestDto requestDto){
        return ResponseEntity.ok(memberService.saveMember(requestDto));
    }


    @GetMapping("/members") //멤버 조회하는 메서드
    public ResponseEntity<List<MemberSimpleResponseDto>> getMembers() {
        return ResponseEntity.ok(memberService.getMembers());
    }
}

 

service

import lombok.RequiredArgsConstructor;
import org.example.springprac4.dto.MemberSaveRequestDto;
import org.example.springprac4.dto.MemberSaveResponseDto;
import org.example.springprac4.dto.MemberSimpleResponseDto;
import org.example.springprac4.entity.Member;
import org.example.springprac4.repository.MemberRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
@RequiredArgsConstructor
public class MemberServics {

    private final MemberRepository memberRepository;

    @Transactional
    public MemberSaveResponseDto saveMember(MemberSaveRequestDto memberSaveRequestDto) {
        // 멤버 저장하는 service
        Member newMember = new Member(memberSaveRequestDto.getName());
        Member savedMember = memberRepository.save(newMember);

        return new MemberSaveResponseDto(savedMember.getName());
    }

    public List<MemberSimpleResponseDto> getMembers() {
        //멤버 조회하는 Service
        List<Member> members = memberRepository.findAll();

        List<MemberSimpleResponseDto> memberSimpleresponseDtos = new ArrayList<>();
        // 조회는 id와 이름만 나올수 있게 따로 클래스 만듬
        for(Member member : members) {
            memberSimpleresponseDtos.add(new MemberSimpleResponseDto(member.getId(),member.getName()));
        }
        return memberSimpleresponseDtos;
    }
}

 

repository

import org.example.springprac4.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository<Member,Long> {
}
// repository 는 interface 생성

 

dto

import lombok.Getter;

@Getter
public class MemberSaveRequestDto {
    private String name;
}


@Getter
public class MemberSaveResponseDto {
    private final String name;

    public MemberSaveResponseDto(String name){
        this.name = name;
    }
}


@Getter
public class MemberSimpleResponseDto {
    private final Long id;
    private final String name;

    public MemberSimpleResponseDto(Long id, String name){
        this.id = id;
        this.name = name;
    }
}

 

자꾸 쳐보면서 익숙해 지기

'java 배우기 > TIL' 카테고리의 다른 글

JPA , Entity  (0) 2024.08.23
Spring Boot 서버 포트 변경하기  (0) 2024.08.21
local database 확인하기  (0) 2024.08.19
HTTP Method  (0) 2024.08.16
상태 코드 status code  (0) 2024.08.13