[Controller] DB 입출력 함수 만들기

Halo·2025년 5월 11일
0

JAVA/Spring

목록 보기
5/15
post-thumbnail

🛠️ 환경

항목Env Info
🖥️ 서버Tomcat
🍭 프레임워크Spring Boot
📀 데이터베이스MySQL with Azure
🙈 외부 라이브러리lombok, Hibernate
📏 디자인 패턴MVC

🗒️ 설명

가. DB 테이블을 프로젝트에 클래스로 만들기

  • ItemRepository.interface
public interface ItemRepository extends JpaRepository<Item,Long> {

}

나. 컨트롤러에 테이블 등록

@Controller
@RequiredArgsConstructor
public class ItemController {

    private final ItemRepository itemRepository;
    
    ...
    }

@RequiredArgsConstructor 이란?

  • required : 필수의
  • args : 파라미터
  • contructor : 생성자

필수 요소 파라미터들만 생성자를 작성안해도 이거만 쓰면 자동으로 해준다.


다. 컨트롤러에서 테이블 입출력함수 사용하여 테이블 값 가져오기

List<Item> result= itemRepository.findAll();

System.out.println(result.get(0).price);
System.out.println(result.get(0).price);
System.out.println(result.get(0).title);

>>
1
7000
셔츠
  • List.findAll() : List 타입 오브젝트의 모든 값을 가져온다.
  • List.get(index) : List 타입 오브젝트의 index 번째 값을 가져온다.

❗트러블 슈팅

가. ItemRepository가 Null 값을 가짐.

Error Message :
Cannot invoke "com.apple.shop.ItemRepository.findAll()" because "this.itemRepository" is null

@RequiredArgsConstructor 어노테이션이 final이 붙은 오브젝트 선언에만 적용되는데 필자는 final을 사용하지 않고 오브젝트를 선언하여 위와 같은 에러가 발생하였다.

기존코드수정된 코드
ItemRepository itemRepository;private final ItemRepository itemRepository;

👀 기타

가. JPA(Java Persistence API)란?

  • Persistence : 영속성

DB의 입출력을 자바 코드로 하게 해주는 친구이다.


나. MVC(Model, view 그리고 Controller)란?
Model(데이터)를 view(클라이언트 화면)에게 전송해줘야 하는데 중간에 거치는 컨트롤타워 같은 녀석을 하는 Controller가 있는 소프트웨어 디자인 패턴이다.


😏 느낀점

자바랑 친해지고 있는 중이다.

profile
새끼 고양이 키우고 싶다

0개의 댓글