본문 바로가기

공부/개념 정리

(6)
[Spring] Entity 연관관계 Entity들은 서로 연관관계를 갖는다. 음식 주문 앱을 만든다고 생각하면서 공부해보자. [DB 연관관계] 고객 id 고객 이름 1 태호 2 용석 음식 id 음식 이름 음식 가격 1 양념치킨 18000 2 후라이드치킨 17000 3 감자피자 17000 4 비싼피자 25000 고객 데이터 베이스와 음식 데이터베이스가 있다. 이떄 고객과 음식은 서로 N대M의 관계를 갖고있다고 할 수 있다. 한명의 고객이 N개의 음식을 주문할 수 있고, 한개의 음식이 N명의 고객으로부터 주문을 당할 수 있기 때문.이를 우리는 N대M의 관계를 갖는다고 표현한다. 그렇다면 이를 DB에 반영하게 되면 어떻게 반영을 해야 할까? 고객인 태호가 후라이드 치킨, 양념 치킨을 주문 한다고 하면 주문 내역은 어디로 들어가면 좋을까? 고객 ..
[Java] Optional을 쓰는 이유 Optional 클래스는 NPE를 방지하기 위해 사용되는 클래스. 지난 과제에서 NPE가 발생해서 결국 잡지 못하고 실패를 했기에 너무 반가운 기능! Optional은 Null일 수 도 있는 개체를 감싸주는 Wrapper 클래스이다. 반환값이 객체인 메서드를 호출하고 받는 반환값이 Null일 경우 NPE(NullPointExcepetion)이 발생하는데 이를 Optional 객체를 감싸서 더욱 쉽게 예외 처리가 가능하다. Optional checkUsername = userRepository.findByUsername(username); if (checkUsername.isPresent()) { throw new IllegalArgumentException("중복된 사용자가 존재합니다."); } 이렇게 ..
[Spring] Filter의 개념 // 혼자 공부하면서 필기식으로 정리한 글입니다. 진행중인 프로젝트의 방향성에 맞게 필터를 적용했습니다. 필터의 이유 DispatcherServlet이 요청을 받고 각 요청에 맞는 Controller로 요청을 분배할 때 공통적으로 모든 요청에 필요한 기능이 있을 때 DispatcherServlet보다 앞에 있는 Filter가 공통 기능을 수행해줌 Filter 인터페이스를 구현함. doFilter(ServletRequest, ServletResponse, FilterChain)을 인자로 받음 doFilter를 기준으로 전에는 요청쪽, 후쪽은 응답쪽 @Order는 필터의 위치를 지정해줄 수 있음 Filter는 DispatcherServlet보다 앞단에 있어서 쿠키값을 가져오는 메서드를 사용 못 함(@Cook..
[Spring] Authentication과 Authorization Authentication과 Authorization에 대해 알아보자. [Authentication] 한국말로 인증이다. 해당 사용자가 우리가 알고있는 사용자인지 확인 하는 것. ex) 로그인, 지문인식 [Authorization] 한국말로 인가. 사용자의 권한에 대한 이야기이다. 관리자인지? 회원인지? 비회원인지?를 가려야 하는 것. 권한에 따라 인가되는 정보가 달라진다. 웹 어플리케이션에서 인증과 인가은 어떻게 이루어질까? [비연결성과 무상태] 웹 서버에서 클라이언트와 서버가 한번 연결 된 후 클라이언트가 연결을 끊기 전까지 둘 사이의 연결은 지속 되지 않는다. 그 이유는 서버에 부담이 많이 가기 때문이다. 실제로 클라이언트와 서버간의 통신은 요청이 들어올 때 응답을 하고 통신을 끊고, 다시 요청이 ..
[Spring] Bean의 쓰임과 수동 등록에 대해 스프링에서 Bean이란 스프링 IoC 컨테이너에서 관리하는 자바 객체를 말한다. [스프링 IoC 컨테이너] 제어의 역전을 하기 위해 DI방식으로 기능을 구현한다. 이때 인자로서 객체를 넣어주기 위해 객체를 생성해야 하는데 Bean으로 등록을 한다면, Spring에서 자체적으로 객체를 생성하고, 관리해서 사용 하는 것. 이때 등록된 Bean들을 모아 놓는 곳이 스프링 IoC 컨테이너이다. 자바에서는 new 키워드를 통해 객체를 생성하지만, Bean을 이용하여 관리한다면 어노테이션을 이용하여 Bean을 등록한다. @Component 키워드를 클래스 구현부에 사용하면 빈으로 등록 할 수 있다. @Component // Bean으로 등록 public class MemoService { ... } Bean을 사용..
Java) Comparable과 Comparator의 차이에 대해 Comparable과 Comparator 모두 두 객체를 "비교"할 때 사용한다. "정렬"을 할 때 사용되는 클래스 이지만 실제 작동 하는방식은 "두 객체를 비교 할 수 있도록 하는것" 이다. 그렇다면 왜 비교연산자를 사용하지 않고 두 클래스를 이용하는 이유는 객체를 단순히 비교할 수없는 상황이 있기 때문이다. 예를 들어 학생 클래스에 "반"과 "점수" 필드가 있다고 생각해보자. 이때 학생클래스 2개의 객체를 비교할 때 "반"을 기준으로 비교할지, 혹은 "점수"를 기준으로 비교할지 사용자가 지정을 해줘야 하기 때문이다. 그렇다면 Comparable과 Comparator의 차이는 무엇일까? 두 클래스는 인터페이스라는 공통점을 가지고 있다. Comparable은 int compareTo(T o) 메소드를 구..