원본 소스 코드 UserService public interface UserService { Profile updateProfile(Long profileId, ProfileRequestDto request); } UserServiceImpl @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final JwtUtil jwtUtil; private final PasswordEncoder passwordEncoder; @Override public Profile updateProfile(Long userId,..
우선 Test의 의미 자체만 생각해보자! 무엇을 테스트해야 하는가? "그 기능에 대한 값을 넣었을 때, 그 기능이 성공적으로 작동하느냐" 를 테스트해봐야지 내가 작성한 updateProfile() 기능을 테스트한다면 무엇을 테스트해봐야 할까. 1. 업데이트가 잘 되는지 확인. - 잘 된다는 건, 정상적인 값이 들어오고, 실제로 데이터베이스의 값이 바뀐다거나 그런 것들을 확인해야 하고, - 업데이트가 안 되는 상황도 확인해야 한다 여기서는 두 가지를 확인해봐야지 1) 사용자가 이미 있어서 업데이트가 완료되었다는 말이 나오거나 2) 사용자가 없어서 예외 메시지가 터진다거나 일단 UserService 인터페이스와 UserServiceImpl 클래스의 테스트 할 내 부분 원본 코드를 가져와보자. UserServ..

JPA는 귀찮은 작업들을 처리해주는 편리한 도구. 예를 들면, 지금 코드에 있는 Product라는 것도 관계형 데이터베이스에 있는 하나의 row인데 쿼리를 직접 짤 필요 없이 객체 단위로 저장을 하거나 조회를 하고, 객체 째로 주면 jpa가 알아서 Insert 쿼리를 날려주고, 조회를 한다고 하면 그 row를 다시 객체로 변환하는 귀찮은 작업들을 도와주는 것도 맞다. "패러다임 불일치" 데이터베이스에서 보는 객체는 하나의 row인데, 객체에서는 하나의 클래스(다름) 이 부분을 자동 변환을 통해 해결해줌. 그런데 이러한 작업을 하려면, 적어도 "데이터베이스에 있는 이 row는 클래스와 어떻게 매핑이 될 거야" 라고 하는 최소한의 정보는 줘야 해. 그게 이제 "매핑 관계 설정" 이 되는 거지. @Entity..
Q1. JPA는 무엇인가? JPA는, SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기입니다.영속성 관리 도구입니다. 단기 작업용이라 휘발되어도 상관없는 데이터들이 있고, 어딘가에 적어둔 다음 두고두고 이용하는 데이터들이 있는데요. 데이터를 적어두고 관리해주는게 데이터베이스이고, 데이터베이스와 소통을 1) 자바를 이용해서 편하게 하고, 2) 작업이 빠르고 견고하게 일어날 수 있도록 도와주는 녀석이 JPA 라고 생각하시면 됩니다. Q2. Restful API란? RESTful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고 합니다. 즉, REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭합니다. Q3. Controller, Se..
1. 내 브랜치 A를 파서 작업한다.2. 작업 -> 커밋 -> 푸시 하면, Github에 Create Pull Request가 등장3. 검토 후 관리자가 Merge Pull Request를 하면, 내 작업물인 브랜치 A는 원격의 main(dev)에 합쳐진다.4. 그럼 이제 내 로컬의 main(dev)에도 반영을 해줘야 하므로, A -> main(dev)로 체크아웃 한 후 pull을 누르면, 내 로컬 main(dev)에도 merge 된 게 반영이 된다.----여기까지 주의사항* 이 상황에서 본인의 작업 내역을 커밋 시키지 않은 채로 pull을 해오면 충돌이 발생할 가능성이 있다. 5. 그럼 로컬의 main(dev)에 당겨온 것을 내 브랜치로 가져와서 작업을 해야하니까,-> 다시 내 브랜치로 체크아웃한다..
람다식 _03_Lambda //Day16 public class _03_Lamda { public static void main(String[] args) { //람다식 : 간결한 형태의 코드 뭉치 // (전달값 1, 전달값 2 -> { 코드 } } // 기본 형태 : 뭔가를 출력하는 함수 /* public void print() { String s = "test"; System.out.println(s); } */ // 이걸 람다식으로 바꾸는 연습 // 1. 람다식은 public과 메서드 명이 필요가 없다(지움) // 2. 람다식에서는 무언가 리턴 타입이 필요한 부분이 있다면 자동으로 지정해주므로 void 삭제 // 3. 전달값과 메서드 바디 사이에 화살표로 연결 필요 // 지금까지 하면 print 메..
후발대수업_16. 람다식(Lambda), 함수형 인터페이스 1. 람다 함수(Lambda Function)란? 람다 함수는 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수라고도 한다.Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고있다. 2. 람다 함수의 특징 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다.즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다. 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다. 3. 람다식 표현 파라미터와 몸체로 구분된다. 파라미터와 몸체 사이에 > 구분을 추가하여 람다식을 완성시킨다. 몸체 부분이 단일 행일 경우 중괄호와 return문을 생략할 수 있다. ( 파..
_08_Iterator public class _08_Iterator { public static void main(String[] args) { // 이터레이터 // 컬렉션 프레임워크의 데이터를 순회하는 거라고 생각하면 쉽다. List list = new ArrayList(); // ctrl하고 클릭해보면 List는 인터페이스이고, ArrayList는 클래스이다. // ArrayList는 List 인터페이스를 상속받는 형태로 구현이 되는 것이에요. // 그래서 이는 다형성 사례라고 할 수 있음. LinkedList 써도 마찬가지 //추가 // 알 수 없는 오류로 잘못 된 더미 값이 들어온다고 쳐보자 list.add("유재석"); list.add("(알 수 없음)"); list.add("김종국"); li..