JPA 프로젝트 생성 이 강의에서는 H2 데이터베이스와 메이븐을 사용해 JPA를 실습한다. 라이브러리 추가 - pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 17 17 UTF-8 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 javax.xml.bind jaxb-api 2.3.1 주의 사항 1. 자바 버전 11 이후부터는 org.hibernate와 com.h2 database가 기본으로 안 들어있다. 그래서 javax.xml.bind를 dependency 해줘야 한다. 2. com2.h2databse의 버전은 내가 다운로드한 버전과 일치해야 한다. 3. 하이버네이트의 버전은 내가 사용..
전체 글
저번 강의에서 왜 JPA를 공부해야 하는지 배웠다. 이번 강의에서는 JPA가 무엇인지 배웠다. JPA란? Java Persistence API로 자바 진영의 ORM 기술 표준이다. ORM이란? Object-relational mapping(객체 관계 매핑)이라는 뜻으로 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다는 뜻이다. ORM프레임워크가 중간에서 매핑을 해준다. 대중적인 언어에는 대부분 ORM 기술이 존재한다. JPA 동작 저장 위 그림은 강의 시간에 배운 JPA를 사용하여 저장할 때 JPA가 처리하는 과정을 보여준다. JPA가 SQL로 구현해야 할 부분을 모두 처리해주는 것을 알 수 있다. 조회 위 그림은 조회를 하는 부분인데 저번 시간에 배운 SQL구문을 사용하지..
지금 시대는 객체를 관계형 DB에 저장해 관리하는 것을 매우 중요하게 여기고 있다. 이것을 관리하기 위해 전통적으로 계속 쓰였던 것이 SQL이다. 하지만 SQL 중심으로 개발을 하면 여러 가지 문제점에 직면하게 된다. SQL 중심적인 개발의 문제점 1. 무한 반복, 지루한 코드 이번에 학교에서 jdctemplete을 공부하면서 느꼈다. 코드가 무한 반복이고 너무 길어 노가다라는 느낌을 많이 받았다. 2. SQL에 의존적인 개발을 피하기 어렵다. 객체를 영구 보관하는 다양한 저장소 중 제일 많이 사용하는 것은 관계형 데이터베이스이다. 관계형 데이터베이스를 사용하게 되면 객체에서 SQL변환 후 SQL이 관계형 데이터베이스에 들어가야 하는 많은 절차를 따르게 된다. 이렇게 되면 SQL을 잘 사용하고 SQL에 ..
레스토랑을 조회하는 부분이다. 하지만 유저를 조회하는 부분과는 약간의 차이가 있다. 인스타그램과 배달의 민족 앱을 생각해보면 밑으로 내리면 새로운 부분이 계속 나온다. 이렇게 밑으로 내리면서 새로운 가계가 계속 나오게 조회하기 위해 페이징 처리를 해보았다. 레스토랑 조회(Paging 처리) Model package com.example.delivery.src.restaurant.model; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @Getter @Setter @AllArgsConstructor public class GetRestaurantRes { private int restaurantIdx; priva..
배달의 민족 앱에서 유저 등록 만큼 중요한 것이 바로 레스토랑 등록이다. 레스토랑은 가계주인이 등록 할 것이므로 일반 유저가 사용하는 부분이 아니다. 레스토랑은 유저관리 보다 필요한 정보가 많으므로 생각할게 좀더 많은 것 같다. 레스토랑 등록 Model package PostRestaurantReq package com.example.delivery.src.restaurant.model; import lombok.*; @Getter @Setter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PostRestaurantReq { private String name; private String delive..
유저를 관리하다보면 유저의 요청으로 회원 정보를 변경하거나 회원 정보를 조회 할 일이 생긴다. 이 부분을 구현해볼려고 한다. 회원 정보 변경 유저가 로그인해서 자신의 페이지에 들어가 자신의 정보를 변경 할 때 서버에 보내야 하는 요청 메시지와 응답 메시지를 구현해 볼려고 한다. Model 패키지 PatchUserReq : 요청 메시지에 들어가야 할 정보, 여기서는 유저의 번호와 이름을 알 때 유저의 정보를 바꿀수 있게 만들었다. package com.example.delivery.src.user.moedl; import lombok.*; @Getter @Setter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public ..
시작하며 이번에는 로그인을 하는 과정을 구현해 볼려고 한다. 로그인을 하는 방법은 다양하다. 요즘 Oauth2.0이 가장 유행한다고 한다. 앱개발을 하게되면 Oauth2.0을 통해 구현해볼려고 한다. 이번에는 JWT를 통해 구현해보았다. ㅂ저번에 회원 가입을 할 때, 회원가입한 비밀번호를 JWT로 암호해서 저장하였다. 이제 로그인 할 때 JWT를 통해 비밀번호를 decrypt한 다음에 해석해서 회원가입 테이블에 있으면 로그인을 시켜주는 형식으로 구현해보았다. Model 패키지 PostLoginReq : 로그인할 때 요청할 요소들의 집합이다. email가 비밀번호르 통해 로그인 할려고 한다. package com.example.delivery.src.user.moedl; import lombok.*; @G..
회원 가입 API 이메일, 아이디, 비밀번호, 이름, 핸드폰 번호, 생일을 입력 받아 비밀번호를 암호화 한 뒤 데이터베이스에 넣어 회원가이입을 성공 시킨다. model 패키지 DB에 받아야 할 내용들을 대해 객체를 만든다. PostUserReq : 유저 내용 저장 package com.example.delivery.src.user.moedl; import lombok.*; @Getter @Setter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class PostUserReq { private String email; private String password; private String name; privat..