
| 항목 | Env Info |
|---|---|
| 🖥️ 서버 | Tomcat |
| 🍭 프레임워크 | Spring Boot |
| 📀 데이터베이스 | MySQL with Azure |
| 🙈 외부 라이브러리 | lombok, Hibernate |
| 📏 디자인 패턴 | MVC |
가. DB 테이블을 프로젝트에 클래스로 만들기
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가 있는 소프트웨어 디자인 패턴이다.
자바랑 친해지고 있는 중이다.