전체 글

새로운  할인 정책 개발이번에는 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가해보자. RateDiscountPolicy 추가 package hello.core.discount;import hello.core.member.Grade;import hello.core.member.Member;public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; //10% 할인 @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { ret..
연관관계 매핑시 고려할 점 3가지다중성다대일 : @ManyToOne일대다 : @OneToMany일대일 : @OneToOne다대다 : @ManyToMany => 다대다는 실무에서 사용하면 안된다. 단방향, 양방향- 테이블외래키 하나로 양쪽 Join이 가능하다. 사실상 방향이라는 개념이 없다. - 객체참조용 필드가 있는 쪽에서 참조 대상으로만 참조가 가능하다.한 쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향이다. 연관관계의 주인테이블은 외래 키(FK) 하나로 두 테이블의 연관관계를 맺고 있다.하지만, 객체의 양방향 관계는 A->B, B->A 처럼 참조가 2군데에서 필요하다. => 둘중 테이블의 FK를 관리할 곳이 필요하다. 연관관계의 주인 : 외래 키를 관리하는 참조주인의 반대편 : 외래 키에 영향을 ..
· 🌐WEB
인터넷을 이용하면서 접속하게 되는 웹 페이지는 크게 두 가지로 나뉜다.저장된 파일을 그대로 보는 정적 웹 페이지(Static Web Page)와 다른 변수들에 의해 변경되어 보이는 동적 웹 페이지(Dynamic Web Page)다. 각각의 특징들을 살펴보고자 한다. 정적 웹 페이지 (Static Web Page)웹 서버에 이미 저장된 파일 (HTML 파일, 이미지, JavaScript 파일 등)을 클라이언트에게 전송하는 웹 페이지다.사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정된 웹 페이지를 계속 보게 된다.따라서 모든 사용자는 같은 결과의 웹 페이지를 서버에 요청하고 응답 받게 된다.장점다른 처리 없이 요청에 대한 파일만 전송하기 때문에 빠르다.단순한 문서로 웹 서버를 구축하므로 호스팅 서버에..
· 🌐WEB
반응형 웹 (Responsive Web)반응형 웹은 미디어 쿼리를 사용해 기기 화면의 크기를 확인하고 유연한 이미지와 그리드를 활용해 화면 크기 변화에 따라 페이지의 크기 및 레이아웃을 조절하는 기술  적응형 웹 (Adaptive Web) 서버나 클라이언트에서 웹에 접근한 기기를 체크해 그 기기에 맞는 템플릿을 제공하는 개념 기존에 이미 데스크톱용 템플릿을 작성했다면, 바닥부터 재구축할 필요 없이 다른 기기용 템플릿만 따로 만들면 되어 편리하다. 또, 사용자의 기기에 맞는 템플릿 및 CSS만 다운로드 하므로 데이터 낭비가 적고 로딩 속도가 빠르다.다만, 각 기기별로 별로의 템플릿을 작성해야 하므로 개발이 복잡해진다.  하나의 템플릿만을 사용해 다양한 사용자와 기기에 대응할 수 있어 개발이 간편하다는 장점..
비즈니스 요구사항과 설계회원- 회원을 가입하고 조회할 수 있다.- 회원은 일반과 VIP 두 가지 등급이 있다.- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책- 회원은 상품을 주문할 수 있다.- 회원 등급에 따라 할인 정책을 적용할 수 있다.- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루 고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정)  회원 도메인 설계  회원 도메인 개발회원 등급package hello.core.member;public enum Gr..
스프링이란?스프링은 '특정한 하나'로 볼 수 있지만, 여러 기술들의 모음으로 볼 수 있다. 그러한 기술들에는 다음과 같은 종류가 있다. 스프링 프레임워크스프링 부트 (스프링 프레임 워크의 모든 기술들을 편리하게 사용할 수 있도록 도와줌)스프링 데이터 (CRUD를 편리하게 사용할 수 있도록 도와줌)스프링 시큐리티 (보안 관련 기능을 편리하게 사용할 수 있도록 도와줌)스프링 세션 (세션 기능을 편리하게 사용할 수 있도록 도와줌)스프링 Rest Docs (api문서를 편리하게 사용할 수 있도록 도와줌)스프링 배치 (배치처리에 특화)스프링 클라우드 (클라우드 기술에 특화)  스프링 프레임워크• 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타• 웹 기술: 스프링 MVC, 스프링 WebFlux• 데이터 ..
먼저 빈(Bean)에 대해 알아보자. 빈(Bean) 스프링(Spring) 컨테이너가 관리하는 자바 객체를 빈(Bean)이라 한다. 스프링의 특징에는 제어의 역전(IoC)가 있다. 지금까지 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했지만 제어의 역전이 적용 된 경우에는 객체의 생성과 사용자의 제어권을 스프링에게 넘긴다. 사용자는 직접 new를 이용해 생성한 객체를 사용하지 않고, 스프링에 의하여 관리당하는 자바 객체를 사용한다. 이 객체를 '빈(bean)' 이라 한다.   @Controllerpublic class MemberController { private final MemberService memberService; @Autowired public MemberControl..
테스트 코드 작성시 자주 사용되는 Given-When-Then 에 대해 알아보자. given-when-then은 곧 - [준비 - 실행 - 검증] 이다. given테스트를 위해 준비를 하는 과정이다.  테스트에 사용하는 변수, 입력 값 등을 정의하거나, Mock 객체를 정의하는 구문도 given에 포함된다. 예시로 회원가입 테스트에 대해 알아보자.//Given Member member = new Member(); member.setName("hello");멤버 객체를 정의하고 멤버의 이름을 hello라고 저장하였다.  when실제로 액션을 하는 테스트를 실행하는 과정이다. //When Long saveId = memberService.join(member);saveI..
웹 개발에는 세가지 방식이 있다. 정적 컨텐츠MVC와 템플릿 엔진API 정적 컨텐츠는 파일을 그대로 웹브라우저에 전달해주는 방식 MVC와 템플릿 엔진은 서버에서 변형해서 html로 바꿔서 전달해주는 방식 API는 JSON이라는 데이터 포맷으로 클라이언트한테 데이터를 전달해주는 방식    정적 컨텐츠 스프링 부트는 정적 컨텐츠를 기본으로 제공해줌. resources 파일에정적 컨텐츠 입니다.static-hello.html 파일을 생성하고 실행하면 다음과 같이 바로 웹이 실행된다. 정적 컨텐츠의 실행방식은 간단하게처럼 표현될 수 있다. 웹 에서 hello-static.html을 내장 톰캣 서버에 넘기고 controller 쪽에서 hello-static을 찾고 없다면 내부에 있는 resources에 stati..
연관관계의 주인테이블은 외래 키 하나로 두 테이블의 연관관계를 관리한다. 그러나 객체는 양방향으로 사용시 각 개체가 서로를 참조해야 한다. 즉, 참조가 두번 필요하다. 객체를 테이블에 매핑할 때에 두 객체중 어떤 객체로 외래 키를 관리해야 하는지에 대한 고민이 생긴다. 여기서 외래 키를 관리하게 되는 객체를 연관관계의 주인이라 부른다.   연관관계의 주인을 정하는 법연관관계의 주인을 정할 때는, 테이블의 외래 키가 있는 곳으로 정해야 합니다.그리고 데이터베이스 테이블의 다대 일, 일대 다 관계에서는 항상 다 쪽이 외래 키를 가집니다.데이터베이스는 컬렉션을 담을 수 없기에, 일 쪽에서 외래 키를 가지는 것이 불가능합니다.  양방향 매핑 시 주의할 점양방향 매핑 시 연관관계의 주인을 지정해주어야 합니다. 지..
말동말동현
동현s토리