전체 글
25년 1월 ~ 2월 헤이밥 알고리즘 과외 후기
요약: 헤이밥 과외로 브론즈 문제만 많이 풀다가 16주 강의 듣고 골드 3 까지는 도전할만하게 됨- 시작할 때스터디를 하며 브론즈~실버 문제를 많이 풀었지만 스스로 풀지 못하고 있었다그래서 실력이 늘지 못하고 골드 문제에 도전을 하지 못하고 있었다또 주변에 코딩테스트 준비하는 사람도 없다보니물어볼 사람도 없고, 어떻게 체계적으로 공부해야할 지를 몰랐었다개발 회사에 다녀서 개발은 하지만, 알고리즘에 대한 공부는 체계적으로 한 적이 없는 상황이었다- 선택한 이유헤이밥 인프런 강의를 들어봤는데 문제 접근법이나 수학 내용 등을 세밀하게 알려주고 있었다특히 Big-O를 어떻게 계산하는지 내용을 보고 좋다고 생각했다로그 계산 내용을 알려주고 각 문제마다 계산 복잡도를 강의하는 것을 보고 과외를 받아도 좋겠다고 생각..

Dto to Entity, Entity to Dto 변환
# 1. Dto to Entity or Entity to Dto 싸비스에서 변환처리 ## 싸비스에서 변환한 이유 우선 Spring Data JPA를 사용하게 되면 Entity를 받아 오므로 싸비스에서 변환해주는게 좋다. 비즈니스 처리, 로직 처리 등은 서비스에서 하는게 좋지 않을까 해서 서비스에서 함. # 2. 사용한 변환 방법 포켓 몬스터 너로 정했다 !!! : Builder 패턴 생성자나 대신에 Builder 패턴을 사용한 이유는 유연성, 가독성, 불변성 1. 생성자는 파라미터가 많을 경우 가독성이 좋지 않고, 순서를 정해줘야한다. 2. 값 설정 순서가 상관이 없다. 생성자는 순서가 중요하다 3. 생성자는 그때 그때 파라미터 수에 맞게 생성자를 만들어줘야 함 Setter를 사용하지 않은 이유 여기저기..
@ResponseBody 와 JPA의 엔티티는 기본생성자가 필수
# 1. Spring RequestBody와 JPA 엔티티에 기본 생성자가 필요한 이유 Reflection을 사용하기 때문이다. Reflection은 구체적인 타입은 알지 못하더라도, 내부 변수와 메소드에 접근할 수 있는 방법이다. 만약 생성자가 여러 개 있다면, Reflection은 이 중 어떤 생성자를 호출해야 할지 알 수가 없다. 따라서 Reflection은 기본 생성자를 통해 객체를 생성한 후 값을 넣어준다. 출처: https://medium.com/sjk5766/%EC%99%9C-responsebody%EB%8A%94-%EA%B8%B0%EB%B3%B8-%EC%83%9D%EC%84%B1%EC%9E%90%EA%B0%80-%ED%95%84%EC%9A%94-%ED%96%88%EC%9D%84%EA%B9%..
DDD 설계 vs SQL중심 설계
# 1. DDD(Domain Driven Design) 설계 (1) DDD란? 도메인이란 ? 소프트웨어로 해결하고자 하는 문제 영역 온라인 쇼핑몰의 도메인은 전자상거래 이커머스 도메인, 상품 도메인 이런 도메인을 중심으로 설계해 나가는 방법을 DDD 라고 함. # 2. SQL 중심 설계 데이터베이스 구조와 데이터의 흐름을 중심으로 시스템을 개발하는 것
@GeneratedValue 의 default는?
# 1. @GeneratedValue 란? 기본키 (PK) 값에 대한 생성 전략을 제공 엔티티의 기본키 생성전략의 기본값은 AUTO AUTO - JPA 구현체가 자동으로 생성 전략을 결정한다.
Entity vs DTO vs VO
# 1. Entity : DB 테이블과 매핑하는 객체 @Getter @NoArgsConstructor @Table(name = "member") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id = null; @Column(unique = true, nullable = false, length = 20) private String userId; @Column(nullable = false, length = 20) private String password; @Column(nullable = false, length = 20) private String name; private ..
HTTP method 종류
1. GET: 리소스 조회 2. POST: 요청 데이터 처리, 주로 등록에 사용 3. PUT: 리소스를 대체, 해당 리소스가 없으면 생성 4. PATCH: 리소스 부분 변경 5. DELETE: 리소스 삭제 기타 메서드 : HEAD, OPTIONS, CONNECT, TRACE

Controller - Service - Repository 구조
아주 간단한 Controller - Service - Repository 3 계층 구조를 만들어보자 # 1. Controller # 2. Service ★ @Component 찾았다! # 3. Repository ★ @Component 찾았다! # 4. 설명 @Autowired 는 스프링 컨테이너에 등록한 빈에게 의존관계 주입이 필요할 때 DI(의존성 주입)을 도와주는 어노테이션이다. 그렇다면 TestService, TestRepository는 스프링 컨테이너에 등록되어 있어야 @Autowired 어노테이션을 달고 있는 곳에 빈을 주입해준다. TestService, TestRepository 클래스 위에 있는 @Service, @Repository 어노테이션은 @Component 어노테이션을 메타 어노테..

스프링 Controller 간단 구현
# 1. 스프링 Controller 간단 구현 스프링부트 프로젝트 시작은 https://start.spring.io/ 를 이용하거나 인텔리제이를 사용한다면 Spirng Initializer에서 시작 controller 클래스 생성 # 2. 어노테이션 설명 @Controller: . 해당 어노테이션이 적용된 클래스는 "Controller"임을 나타나고, bean으로 등록되며 해당 클래스가 Controller로 사용됨을 Spring Framework에 알립니다. @ResponseBody: 메소드에서 리턴되는 값은 View 를 통해서 출력되지 않고 HTTP Response Body 에 직접 쓰여지게 됩니다. 이때 쓰여지기 전에 리턴되는 데이터 타입에 따라 MessageConverter 에서 변환이 이뤄진 후 ..
핸들러(handler) 개념
#1 스프링에서 핸들러란? Request로 인해 호출되는 Controller의 "메소드"를 뜻함. @GetMapping("/hello") public String hello(){ return "hello"; } 참조: https://songacoding.tistory.com/3 # 2. 정리 요청에 의해 호출되는 메소드라고 생각하자. 스프링 학습 하다보면 핸들러 매핑이라는 말이 자주 나오는데 그때 핸들러를 찾는다 할때 이 메소드를 찾는 거였음