본문 바로가기
카테고리 없음

용어 정리 -2

by zkzk7290 2024. 10. 26.
반응형
<제네릭 -Generic> : 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다.

Ex) JPARosiotry<Type,U> => 추상 메서드->반환타입T(Entity클래스 타입) -> 테이블 , 매개변수(Entity클레스의 @Id-기본값) - Wrapper 타입 

-처음에는 비워놓고 나중에 채워넣는다 

제네릭 장점 

  • 제네릭을 사용하면 타입이 들어올수 있는것을 컴파일 단계 에서 방지 할 수있다 
  • 클래스 외부에서 타입을 지정 해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 
  • 비슷한 기능을 지원하는경우 코드의 재사용성이 높아진다.

 

제네릭의 와이드카드 ? : 변수 타입을 제한하고 싶을때+ 기봊적으로 클래스 타입을 가진다

1,2=필수 , 3,4,5=선택 

response entity 응답에 대한 전체 구조  ==> 상태 코드 ,바디,헤더 (header)로 구성 되어 있다.

바디(Body) -boolean -result ,String  - message , <D> -Data 

 

http요청  => (method/URI)=>controller

POST: 전송하다 데이터 DB에 생성하다 즉 저장하다 -201CREATED

@PathVariable: (PK) 값 전달 =DB에 대한 조회  - '테이블 지정'   - - 레코드를 가지고 오는것 

-ex1) api/v1/테이블명/{PK} , posts/{게시글Id}/comments/{댓글 id}

@RequestParam:키- 값 전달  - 반환값이 대부분 LIST로 반환 

where 조건문은 둘다 가능 ( PathVariable , RequestParam )

 

@Requestbody:POST -body = DB에  온전이 넣어야하기 때문에 (DB에 insert해야 하는 것들), PUT도 똑같음 

 

람다표현식Lamba :

스트림 API -컬랙션 프레임워크 

List타입을 사용하는이유 배열보다 더 기능 이 더 많아서 

-List 배열  -중복 가능 , 순서 있음 

-set : 중복 불가능 

-Map: 키-값을 넣어줘야한다

  public List<BookResponseDTO> getAllBooks(){
        return bookRepository.findAll()
                .stream()
                .map(this::convertToResponseDto)
                .collect(Collectors.toList());
    }
    응답 =List<BookResponseDTO>으로 반환 
    repository-entity, Id

::  =>  -> 를 ::걸로 교체 (매개변수 가 같으면 )

  • this =  인스턴스의 자기자신을 가리킨다. ,인스턴스화 되었을떄 자기 자신의 메모리 주소를 담고있는 키워드 
  •  map(this::convertToResponseDto) :  this::convertToResponseDto는 메서드 레퍼런스를 사용하여 각 요소를 변환하는 작업을 지정
  • collect(Collectors.toList):  변환된 요소들을 새로운 리스트로 수집
public ResponseDto<List<MenuResponseDto>> getAllMenus() {
    List<MenuResponseDto> data = null;

    try {
        List<Menu> menus = menuRepository.findAll();

        data = menus.stream()
         		//(매개변수 ) -> new 생성자(매개변수)
                .map(MenuResponseDto:: new)
                //이러게 변경가능  -매개변수 가  같은 매개변수 이기떄문이다
                //클래스 타입::new~~~~~~(매개변수 )
               
                .collect(Collectors.toList());

    } catch (Exception e) {
        e.printStackTrace();
        return ResponseDto.setFailed(ResponseMessage.DATABASE_ERROR);
    }

    return ResponseDto.setSuccess(ResponseMessage.SUCCESS, data);

}

 

반응형