오늘의 개발

    [Java] 상속(inheritance)

    07 상속 07-1 상속 시작하기 전에 상속은 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다. 부모 클래스 한 번의 수정으로 모든 자식 클래스까지 수정되는 효과가 있어 유지보수 시간이 줄어든다. 클래스 상속 자식 클래스 선언 시 부모 클래스를 선택한다. extends 뒤에 부모 클래스 기술한다. class 자식 클래스 extends 부모 클래스 { // 필드 // 생성자 // 메소드 } 여러 개의 부모를 상속할 수 없다. 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 부모와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한된 필드와 메소드 역시 제외 부모 생성자 호출 자식 객체 생성할 때 부모 객체가 먼저..

    [WIL] 항해99 3주차 회고ㅣ주특기 입문

    이번주 톺아보기 2022.11.28 [TIL] 3주차 주특기 입문ㅣCRUD API 만들기 1편 2022.11.29 [TIL] 3주차 주특기 입문ㅣCRUD API 만들기 2편 2022.11.30 [TIL] 3주차 주특기 입문ㅣCRUD API 만들기 3편 2022.12.01 [TIL] 3주차 주특기 입문ㅣSpring 시험 2022.12.02 [TIL] 3주차 주특기 숙련ㅣ주간 시작 2022.12.03 [TIL] 3주차 주특기 숙련ㅣ컨디션 난조 잘한 점 기술 매니저님께 계속해서 질문하기 저번 주를 회고하며 다음 주 개선사항으로 '좋은 질문을 할 수 있을 만큼 개념뿐만 아니라 원리, 동작 방식 등을 더 디테일하게 공부하기(특히 Spring)'라고 적었다. 나는 고민들이 숙성되어야 좋은 질문이 나온다고 생각해서 ..

    [TIL] 3주차 주특기 숙련ㅣ컨디션 난조

    주특기 숙련 강의 JPA 심화 부분을 지나 이번 강의는 계층 분리의 중요성을 깨닫기 위해 Controller에 모든 로직을 구현해보고, 계층을 나눠 리팩토링하는 방식으로 진행되었다. 전에 JDBC를 공부하면서 PreparedStatement 클래스를 이용하여 쿼리문을 날렸던.. 그런 기억들이 떠올라 아주 잠깐 반가웠다가, DI (의존성 주입), IoC (제어의 역전) 같은 개념들이 나오면서 혼란해졌다. 이럴 땐 다양한 자료를 참고하며 읽어보자. 의존관계 주입(Dependency Injection) 쉽게 이해하기 이번 글에서는 DI(의존성 주입, 의존관계 주입)의 개념을 설명한다. tecoble.techcourse.co.kr DI를 햄버거 가게 요리사에 비유하여 쉽게 설명하고 있다. 정확히 이해하기 위해 ..

    [TIL] 3주차 주특기 숙련ㅣ주간 시작

    주특기 숙련 주간 시작 스프링에 얻어맞았던 입문 주간이 지나고, 더욱 강력해진 숙련 주간이 시작되었다. 어제의 시험과 개인 과제를 기준으로 걷기/달리기 반이 편성되었는데 나는 달리기반으로 숙련 주간을 달리게 되었다. 저번 주간과 마찬가지로 시험과 개인 과제가 있고, 조금 다른 점은 개인 과제가 Lv1과 Lv2로 나뉘어 있다는 점이다. Lv1 만 제출해도 괜찮지만 개인적으로 Lv2까지 마무리하는 게 목표! 또 다른 이번 주간의 개인적인 목표는 '조원들과 코드 리뷰하기'이다. 아무래도 개인과제이다 보니 저번 주간에 리뷰를 할 시간이 많지 않았는데 이번엔 꼭 서로의 코드를 보며 어떻게 설계하고 구현했는지 이야기해볼 수 있으면 좋겠다. 다음은 이번 주간의 세부 일정이다. 12/03 (토) 13:00 ~ 14:0..

    [TIL] 3주차 주특기 입문ㅣSpring 시험

    주특기 입문 Spring 시험 회원 조회 API를 만드는 것이 시험 문제로 나왔다. 문제에는 회원 목록 DB와 API 설계도, 스켈레톤 코드가 적혀 있었다. 처음에 도대체 어디에 뭘 작성하라는건가 감이 안와서 문제를 여러번 읽다가🤣 인텔리제이를 켜고 Entity부터 차근차근 만들기 시작했다. 틀이 주어졌던 GET 요청 외에 POST 요청을 따로 만들어 Postman으로 테스트까지 한 후 제출했다. 사실 개인과제를 스스로 해결했다면 전혀 어려운 문제는 아니었다. 포인트는 1) Entity를 그대로 반환하지 않고 DTO로 변환 후 반환하는 것과, 2) 예외를 발생시키는 부분(NullPointerException)이었을 거라 생각한다. 이후 문제풀이 세션을 듣다 내가 전체 조회 부분에서 throw 처리를 하지..

    [TIL] 3주차 주특기 입문ㅣCRUD API 만들기 3편

    👇 [스프링 부트로 CRUD API 만들기 1편] 보러 가기 👇 부모 클래스 타입(변환 생략 가능) / 부모 클래스 타입 > 자식 클래스 타입(변환 반드시 명시) class Parent { ... } class Child extends Parent { ... } ... Parent pa = new Parent(); // 허용 Child ch = new Child(); // 허용 Parent pc = new Child(); // 허용 Child cp = new Parent(); // 오류 발생 게시글을 업데이트하는 메소드는 2가지의 리턴이 있을 수 있다. 1) 비밀번호가 일치했을 시, 성공 여부와 함께 변경된 객체 리턴 2) 비밀번호가 불일치했을 시, 성공 여부(=실패)만 리턴 그렇다면 Service 클래..

    [Java] 패키지와 접근 제한자

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-6 패키지와 접근 제한자 시작하기 전에 패키지의 물리적인 형태는 파일 시스템의 폴더이다. 프로젝트 개발 시 클래스를 체계적으로 관리하기 위해 패키지를 사용한다. 단순 폴더 기능뿐만 아니라 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 한다. 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스를 인식한다. 클래스의 전체 이름은 패키지+클래스를 사용하여 다음과 같이 표현한다. 상위패키지.하위패키지.클래스 패키지 선언 해당 클래스가 어떤 패키지에 속할 것인지를 선언한다. package 상위패키지.하위패키..

    [TIL] 3주차 주특기 입문ㅣCRUD API 만들기 2편

    👇 [스프링 부트로 CRUD API 만들기 1편] 보러 가기 👇 new IllegalArgumentException("아이디가 존재하지 않습니다.") ); board.update(requestDto); // 엥 이게 끝? return new BoardResponseDto(board); } 어제 기술 매니저님께서 주신 미션 아닌 미션. (CRUD API 만들기 1편의 내용 참고) Service단에서 업데이트쪽 메소드를 보면 별도로 Repository에 접근하지 않더라도 업데이트가 잘 된다. JPA가 수정 메소드를 제공하지 않는다는 건 저번 시간에 알게 되었는데, 트랜잭션과의 관계는 뭘까? 트랜잭션과 업데이트가 무슨 관련이 있는지부터 피부로 느끼기 위해 바로 @Transactional 어노테이션을 지워보았다..