본문 바로가기

전체 글82

[spring] dto클래스에 Getter가 필요한 이유 📌DTO 클래스에 Getter가 필요한 이유 ◾DTO란 DTO(Data Transfer Object)란 데이터를 이동(Transfer)시키기 위한 객체이다. Client가 Controller에 요청을 보낼 때 RequestDto의 형식으로 데이터를 객체로 받고, controller가 Client에게 응답을 보낼 때도 ResponseDto의 형태로 데이터를 보내게 된다. 또 controller ↔ service ↔ repository 계층간에 데이터를 교환하는 것도 이 DTO의 형태로 이동하게 된다. 응답에 있어 본다면 앞서 말했든 controller가 요청을 받고, 응답을 하는 것이 DTO의 형태이므로 service에서 repository를 이용해 데이터베이스에 있는 데이터를 찾아 DTO형태로 만들어 반.. 2024. 2. 29.
[error/jpa] SQL에러 Unknown Column in field list ◾에러 파악하기 ✔️Background 기존에는 Jdbc를 이용하여 API개발을 진행하다가, Spring Data JPA를 사용하기 위한 코드로 리팩토링하였다. 리팩토링은 엔터티 한 개에 `@Entity`를 붙여 테이블과 매핑을 하는 것인데, 컴파일 상 오류는 없었고 서버는 정상적으로 동작했다. ⚠️Error 에러는 아래와 같다. Unknown column '테이블명_필드명' in field list 라는 오류이다. 상황 문제는 db상의 테이블과 객체의 매핑에 있었다. `LocalDate warehousingDate` 필드 때문이었다. POST API나 PUT API를 할 시 위와 같은 에러가 터지며 POSTMAN에서는 500에러를보냈다. db상에는 warehousingDate라는 이름의 테이블이 있으나.. 2024. 2. 28.
[인프런 워밍업 클럽 0기] 일곱 번째 과제 - JPA 실습 강의 Spring Data JPA를 사용한 데이터베이스 조작 문자열 SQL의 한계점, 예를 들면 반복작업이 많다는 것 등의 SQL을 직접 작성할 시 문제점들에 대해 알아보았다. 그러며 보다 편리한 JPA가 등장하게 되었고 이와 관련된 영속성, Hibernate 등의 이론적인 내용에 대해 학습할 수 있었다. 기존에는 Jdbc를 이용하여 SQL문을 직접 작성하였지만, JPA를 이용하여 편리하게 쿼리가 자동으로 작성되도록 기존 코드를 리팩토링하였다. Spring Data JPA를 이용하여 데이터를 Create, Read, Update, Delete 하는 것을 실습하였다. 과제 ◾문제1 ◾풀이 🔻entity 기존 Fruit클래스에서 @Entity , ID필드 + @Id,@GeneratedValue, 기본생성자를.. 2024. 2. 27.
[인프런 워밍업 클럽 0기] 여섯 번째 과제 - API 역할 분리(Controller, Service, Repository) 강의 스프링 컨테이너의 의미와 사용 방법 Controller를 인스턴스화하지 않고도 메서드를 호출할 수 있었던 이유, JdbcTemplate설정을 해주지 않아도 사용할 수 있었던 이유에 대해 학습하였다. `@RestController` 이 어노테이션 때문이었다. 이것이 UserController를 API의 진입 지점으로 만들어 줄 뿐만 아니라, 이 클래스를 스프링 빈으로 등록시킨다. 서버가 시작할 때 스프링 컨테이너를 만들고 이 컨테이너에 스프링 빈을 넣으며 이때 인스턴스화도 함께 이뤄진다는 것에 대해 배울 수 있었다. 과제 진도표 6일차와 연결됩니다 우리는 스프링 컨테이너의 개념을 배우고, 기존에 작성했던 Controller 코드를 3단 분리해보았습니다. 앞으로 API를 개발할 때는 이 계층에 맞게 각.. 2024. 2. 25.
[인프런 워밍업 클럽 0기] 다섯 번째 과제 - Clean Code(클린코드) 강의 클린코드의 개념과 첫 리팩토링 클린코드의 개념과 필요성에 대해 학습하고, 또 기존에 Controller에서 모든 역할을 수행 했던 것을 Service, Repository를 생성하여 이를 3개의 역할로 분리하는 과정에 대하여 배우고 리팩토링을 진행하였다. 과제 진도표 5일차와 연결됩니다 우리는 라는 개념을 배웠습니다. 에 대한 감각을 익히기 위해서는 어떤 코드가 좋은 코드이고, 어떤 코드가 좋지 않은 코드인지 이론적인 배경을 학습하는 것도 중요할 뿐 아니라, 다양한 코드를 읽어 보며 어떤 부분이 읽기 쉬웠는지, 어떤 부분이 읽기 어려웠는지, 읽기 어려운 부분은 어떻게 고치면 좋을지 경험해보는 과정이 필요합니다. 이번 과제는 제시된 코드를 읽어보며, 코드를 더 좋은 코드로 고쳐나가는 과정입니다. 구글.. 2024. 2. 23.
[java/sql] 쿼리 작성 시 테이블명이 빨간 색일 때 해결법 테이블이 빨간색으로 표기되는 현상 에러는 아닌 듯 하지만 자바 코드 안에서 JdbcTemplate을 이용하여 mysql과 연동하여 사용하기 위해 쿼리를 작성하던 중 아래와 같이 테이블명에 빨간색이 들어올 수 있다. 마치 잘못된 코드를 작성한 것 같은 기분이 든다. 데이터베이스 테이블이 없어서 그런 것일까? 그렇지 않다. 아래처럼 데이터베이스를 확인해보면 `fruit`이라는 이름의 테이블이 멀쩡히 존재한다. 이유는 어떤 데이터베이스 즉 지금 인텔리에서 어떤 스키마를 선택해야할지 모르기 때문이다. fruit테이블이 존재하지만 이테이블이 library라는 스키마에 있을 수도, 또 product라는 스키마에 있을 수도 있다. 그러므로 아래와 같이 스키마를 선택해주기만하면 된다. 해결법 1. fruit위를 마우스.. 2024. 2. 23.

/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */