1. 상속관계 매핑 ORM에서 상속관계 매핑은 부모 클래스에서 Inheritance 어노테이션을 사용합니다. 이 때 관계모델을 구현하는 방법은 아래와 같이 세 가지 방법이 있습니다. (1) 각각의 테이블로 변환 (@Inheritance(stragy = InheritanceType.JOINED) @Inheritance의 전략을 JOINED으로 설정하면 자식 테이블들을 DTYPE으로 구분하여 사용할 수 있습니다. 상속받는 자식 테이블을 각각 만들고, 부모 테이블의 PK를 자식 테이블의 PK이자 FK로 사용합니다. 이를 통해 다른 테이블에서 부모 테이블만 보도록 설계할 수 있습니다. (2) 단일 테이블로 변환 (@Inheritance(stragy = InheritanceType.SINGLE_TABLE) @In..
1. @RequestBody, @ModelAttribute, @RequestParam 클라이언트의 요청 값을 객체로 바인딩하는 데에 사용되는 방식이라는 점에서 공통점이 있지만 서로 차이점이 존재한다. 어노테이션 없이 파라미터로 단순 타입이 들어오는 경우 → @RequestParam이 생략된 것이라고 여김 그 외의 나머지 경우 → @ModelAttribute가 생략된 것이라고 여김 @RequestParam = 한 개의 Http요청 파라미터를 받기위해 사용함. 기본값으로(required = true)이기에 false로 바꿔주지 않는 이상 반드시 파라미터가 존재해야 함 @RequestBody = 클라이언트가 전송한 HttpBody내에 있는 JSON형식의 내용을 객체로 변환시켜주는 역할을 함. @ModelAtt..
1. 어노테이션 @RequestMapping ↔ @GetMapping, @PostMapping 서로 대체가능한 어노테이션이다. 단지 후자를 사용하면 method를 일일이 get, post로 지정해줘야했던 것을 적지 않아도됩니다. ( 사실 두 개 다 열어보면 @RequestMapping(method = RequestMethod.GET)와 같이 RequestMapping)을 사용함) @Enumerated(EnumType.STRING) JPA로 db에 저장할 때 Enum값을 어떤 형태로 저장할지를 결정합니다. (디폴트는 EnumType.ORIGINAL이지만 중간에 enum값을 추가, 삭제할 경우 문제가 발생하므로 사용하지x) @EnableWebSecurity Spring Security설정들을 활성화시켜줌 2..

스프링 공부하며 공부한 내용을 정리합니다 ··· 1. @Controller vs @RestController @Controller는 주로 view를 반환하기 위해 사용하지만 @RestController는 Json(xml 등..) 형태로 객체 데이터를 반환합니다. 즉, RestController는 @Controller의 역할에 @Responsebody가 추가된 것입니다. 2. Mockmvc VS TestRestTemplate 두 개 모두 처음 접해 무슨 역할을 하는지 몰랐지만 정리하자면 아래와 같습니다. MockMvc는 서버 입장에서 구현한 API를 통해 비즈니스 로직이 문제없이 수행되는지 테스트를 할 수 있다면, TestRestTemplate은 클라이언트 입장에서 RestTemplate을 사용하듯이 테스..
[5. IoC, DI, 컨테이너]제어의 역전IoC (Inversion of Control)구현 객체가 프로그램의 제어 흐름을 스스로 조종하는 것이 아닌 외부에서 관리하는 것 (AppConfig가 하는 역할) 프레임 워크 ↔ 라이브러리내가 작성한 코드를 제어하며 대신 실행 → 프레임 워크내가 작성한 코드가 직접 제어의 흐름을 담당 → 라이브러리 의존관계 주입 DI (Dependency Injection)실행 시점에 실제 구현 객체를 생성하고 클라이언트에 전달해 클라이언트와 서버의 실제 의존관계가 연결되는 것 DI를 사용하면 클라이언트 코드(구현 코드)를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있음 IoC, DI 컨테이너AppConfig처럼 객체를 생성하고 관리하며 의존관계를 ..
[4. 회원 도메인 개발 ~ (순수 자바코드로)]Note인터페이스의 구현체가 1개인 경우 관례 상 구현체의 이름을 인터페이스이름 + impl이라고 명명합니다. 순수 자바코드 할인 정책을 변경할 때 문제점 발생 /* in OrderServiceImpl class */ public class OrderServiceImpl implements OrderService{ //private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); }OrderSerivceImpl이 DiscountPolicy 인터페이스에 의존하며 DIP..
[2. 좋은 객체 지향 설계의 5가지 원칙(SOLID)]1. SRP 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야 한다.하나의 책임에 대한 판단의 기준은 ? 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것2. OCP 개방-폐쇄 원칙 확장에는 열려 있으나 변경에는 닫혀 있어야함.문제점 다형성을 사용하기 위해서 구현 객체를 변경하려면 클라이언트 코드를 변경해야함 → 이를 해결하기 위해서 DI, IOC 컨테이너와 같은 것들이 필요3. LSP 리스코프 치환 원칙 하위 클래스의 객체를 상위 클래스의 객체에 넣어도 기능적으로 문제없이 동작되어야함 ❓예시를 찾아보니 정사각형과 직사각형의 관계를 대입해서 생각해보면 단순히 정사각형이 직사각형의 상속을 받는다고 생각할 떄 직사각형의 생성자에서 비롯한 문제에..
1.객체 지향 특징 기본적이지만 추상화, 캡슐화, 상속, 다형성을 가지고 있음.컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법2.역할과 구현을 분리그 장점은 ?클라이언트는 대상의 역할(인터페이스)만 알면 된다. 클라이언트는 구현 대상에 대해서 크게 신경쓰지 않아도 된다.따라서 인터페이스를 안정적으로 잘 설계하는 것이 중요하다 객체 설계시 ?객체 설계시 역할(인터페이스)를 먼저 부여하고, 그 역할을 수행하는 구현 객체 만들기 3. 자바 언어의 다형성오버라이딩을 생각~헷갈리는 오버로딩과 오버라이딩은 전혀 다른개념이다.오버로딩은 같은 이름의 메소드를 매개변수의 타입, 개수에 따라 재정의하는 것오버라이딩은 상위 클래스의 메소드를 하위 클래스의 메소드에서 재정의하는 것
Inflearn lecture 를 공부하며 기록
- Total
- Today
- Yesterday
- 카카오 인턴십
- 게임이론
- 2020 KAKAO BLIND RECRUITMENT
- 누적합
- 백준
- 2021 카카오 블라인드
- 트리
- 시뮬레이션
- 표 편집
- 2022 카카오 블라인드 코딩테스트
- 투포인터
- 카카오 2차코딩테스트
- 프로그래머스 위클리 9주차
- 동적계획법
- 2021 KAKAO BLIND
- 카카오 2021
- DP
- 2022 카카오블라인드
- 구현
- 카카오 2020 인턴십
- Kakaoblind
- BFS
- 이분탐색
- 프로그래머스 월간코드챌린지
- 프로그래머스
- 2022 KAKAO BLIND RECRUITMENT
- 파싱
- 카카오 표 편집
- 유니온파인드
- 위클리 챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |