성남FC
388
2020-04-06 04:49:07
4
494

아침 4:50분.. 살려주십쇼 선배님들..


안녕하세요, 선배님들 ! 열심히 과제중인 초보입니다!

예전에도 제네릭과 콜렉션 클래스에 대해서 질문 드린적 있는데 이번엔 좀 심화된 질문입니다..ㅎㅎ

아래처럼 List의 타입이 PaymentDto일 때 list.get(index)를 하면 클래스 주소값이 호출됩니다.

어떻게 해야 DB에서 불러온 값에 직접 접근을 할 수 있을까요? 

List<PaymentDto> list = paymentRepository.findAll();
그리고 아래 new Hashmap<>()과 null로 선언 했을때 차이가 있을까요??
HashMap<String, Object> map = new HashMap<>();     &      HashMap<String, Object> map = null;
선배님들의 도움이 필요합니다! 감사합니다!
0
0
  • 답변 4

  • Yuu2
    933
    2020-04-06 05:16:31 작성 2020-04-06 05:17:58 수정됨

    아침일찍부터 고생많으십니다.
    php 개발자지만 ... 답변달아봅니다.

    1. findAll 할 경우 객체를  List로 받아 오고 있기에 해당 List 안에는 PaymentDto 객체의 주소값이 당연히 저장되어 있습니다. 일반적인 DTO 기술 방식이라면 list.getXXX로 구체적인 필드의 getter를 호출 하거나 전체 값을 로그로 알기 위해서 toString() 메소드를 오버라이딩하여 알고 싶은 필드값을 기술 해야 합니다. 

    2. null 과 new XXX의 차이는 변수 저장공간 할당 여부의 차이입니다. 이는 프로그래밍의 아주 기초적인 개념입니다. 요약하자면 null 값을 선언한다면 해당 객체는 메모리 점유 면에서 빈 공간과 다를 바 없습니다. 반면에, new HashMap을 선언 할 경우 "새로운 HashMap 객체의 주소"가 할당 되는 것이지요.

    원시타입(primitive type)과 참조타입(reference type)의 개념이 아직 정립되지 않아 보입니다.

    굳이 서적을 구입하지 않으셔도 되지만 이것이 자바다 라는 책을 한번 읽어보시면 도움이 되리라 생각합니다.



    1
  • fender
    17k
    2020-04-06 07:57:46

    자바 같은 언어를 다룰 때 개념이 잡히지 않은 상태에서 메모리 주소값 같은 걸 고민하는 것은 권장하지 않습니다. 보통 그런 접근은 불필요한 혼동을 일으켜서 핵심 개념을 이해하는데 방해가 됩니다.

    클래스나 객체 등 자바 시스템 내부의 개념으로 질문을 바꾸어 표현해보시는 걸 추천드립니다.

    0
  • 퉷퉷퉷
    18
    2020-04-06 10:11:28
    1.
    
    PaymentDto list = paymentRepository.findById(1000);
    혹은
    List<PaymentDto> list = paymentRepository.findAll();
    PaymentDto target = list.get(0);
    target.getName();
    2.
    HashMap<String, Object> map = new HashMap<>();     &      HashMap<String, Object> map = null;
    
    null은 아무 의미가 없어요. 결국 언젠가 저 맵을 쓰려는건데 초기화는 어디선가 해야합니다.
    미리 할당해두는게 가독성이 좋습니다.
    어느상황에서는 null로 해두고 어느상황에서는 instantiation 을 나중에 하는 형태의 코드라면,
    코드자체가 문제가 있는지 검토해볼 필요가 있습니다.
    0
  • 성남FC
    388
    2020-04-06 13:00:58

    Yuu2 오 말씀해주신대로 toString 메소드를 오버라이딩 해서 사용 해보겠습니다. 그리고 말씀해주신 부분 꼭 더 알아보며 기초를 확실히 다지겠습니다. 매번 인지는 해도 나태한 마음에 인강만 대충 듣고 넘어갔더니 이런 부끄러운 일이 생기네요 ㅠㅠㅠ 정말 감사합니다 !!


    fender 말씀하신게 100번 맞다고 생각합니다..스스로 기초가 부족하다고 느끼지만 노력조차 하지 않았던 제 자신이 너무 부끄럽습니다. 이번일을 계기로 더 노력해야겠습니다 ! 감사합니다 !


    퉷퉷퉷 오 말씀하신부분 정말 감사합니다 !! 초기화를 위해 미리 선언을 하겠습니다 !



    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.