[Spring Boot] Spring 시작
·
Back-End/Spring Boot
Spring 시작 Spring에 관심이 생겨서 공부를 시작하게 되었다. 원래 C#을 사용했던 나는 Java가 불편하고 께름칙했었다. C#이 Java를 따라 만들어졌다고는 하지만 나에게는 C#이 더 친숙하고 편했어서 백엔드 프레임워크를 처음 공부하려고 마음먹었을 때 .NET Core로 공부를 시작 할 생각이었다. 하지만 레퍼런스가 스프링에 비해 턱없이 부족하기도 하고, 한국에서는 스프링이 더 거대한 진영이기에 과감하게 포기하고 스프링을 공부하기로 했다. 인프런에있는 김영한님의 스프링 기본편을 들으면서 공부를 시작했는데, 강의를 들으며 제일 어려웠던 부분은 스프링 그 자체보다 다른 이유에서 있었다.(물론 아직 깊게 공부하지 않아서 그런걸수도) IDE가 익숙하지 않다 여태 VS로만 개발을 하다보니 손에 익은 ..
[JPA] 3. Entity Mapping
·
Back-End/JPA
Entity JPA에게 관리를 맡길 객체. @Entity로 객체를 수식해준다 @Entity class Member { public Member() { } } 이때 주의해야할 점은 해당 객체는 파라미터가 없는 기본 생성자가 있어야 한다는 것이다. JPA는 리플렉션 기능을 이용해 인스턴스를 동적으로 생성하기 때문에 필요하다는데 리플렉션이 C#에만 있는줄 알았는데 Java에도 있어서 신기했다 Java Annotation에는 속성을 줄 수 있는데 Entity Annotation에서 사용하는 속성은 아래와 같다. name : JPA에서 사용할 Entity name, 이름이 같은 클래스를 사용해야 하는 문제를 해결하기 위함 Table : Entity와 매핑할 Table 지정 name : Table 이름 unique..
[JPA] 2. Persistent에 대한 이해
·
Back-End/JPA
Persistent JPA는 이름에서 알 수 있듯이 'Persistent' 라는 개념위에서 동작하게 된다. 위의 그림을 보면 애플리케이션에 유일하게 존재하는 Entity Manager Factory에서 Request들을 처리하기 위해 Entity Manager를 내어준다. 각 Request들은 DB를 사용하게 되는데, 이때 Entity Manager가 갖고 있는 Persistent를 통해 사용하게 된다 EntityManager.persist(member); // DB에 Member Entity 저장 예시 주석으로 DB에 저장한다고 써놓았지만, 사실 DB에 바로 저장이 되는것이 아닌 Entity Manager가 관리하는 Persistent에 저장된다. Entity의 생명주기 Persistent에 저장되는 ..
[JPA] 1. JPA에 대한 이해
·
Back-End/JPA
JPA(Java Persistent API) JPA에 대해서는 이름만 들어보다가 이번에 학회에서 같이 스터디를 하게 되어 공부를 시작했다. JPA는 Java진영의 표준 ORM(Object-Relational-Mapping)기술로써, 별도의 쿼리 및 테이블 설계 없이 오직 자바 코드로만 RDB를 자유자재로 이용할 수 있게 해주는 기술이다. 근데 ORM이 뭐지? ORM(Object-Relational-Mapping) 이름에서 알 수 있듯이, Object와 Relational을 Mapping 해주는 기술이다. 여기서 Object란 OOP(Java, C#, Python) 언어이고 Relational은 RDB(MySQL, Postgresql, MariaDB)등을 말한다. 즉, RDB의 기본 쿼리와 테이블 설계를 ..
[HTTP 기본] 4. HTTP 상태 코드와 HTTP 헤더
·
Back-End/HTTP 기본
HTTP 상태 코드 Client가 보낸 Request의 처리 상태를 Response에서 알려주기 위함 1XX : 처리중 잘 사용하지 않음 2XX : 성공 200 : OK 201 : Request 성공 해서 새로운 리소스가 생성됨 생성된 리소스는 Response의 Location 헤더에 담아 보낸다 204 : No content Response Payload에 싣어 보낼 데이터가 없음 ex) 세이브 버튼 3XX : Request를 완료하려면 추가 행동 필요(리다이렉션) 4XX : Client 오류 400 : GET 파라미터 오류, API 스펙에 맞지 않음 401 : UnAuthorized, Response에 WWW-Authenticate 헤더와 함께 인증 방법을 설명 403 : 권한 거부 404 : 요청 ..
[HTTP 기본] 3. API와 HTTP 메서드
·
Back-End/HTTP 기본
API(Application Programming Interface) Client와 Server가 통신하기 위해 필요한 API. URI를 통해 서로 요청을 식별하는데, 올바론 API URI 설계는 무엇일까? 리소스 식별에 집중하자 CRUD 기능을 구현하는 회원 가입, 회원 조회, 회원 정보 변경, 회원 탈퇴 기능들을 만든다고 생각해보자. 회원 가입 : /create-members/{id} 회원 조회 : /read-members/{id} 회원 변경 : /update-members/{id} 회원 탈퇴 : /delete-members/{id} 이때 집중해야 할 것은 CRUD가 아닌 '회원'이라는 리소스이다. 따라서 리소스만 URI에 매핑하는것이 제일 좋다 회원 가입 : /members/{id} 회원 조회 : ..
[HTTP 기본] 2. HTTP 통신 흐름과 Stateless
·
Back-End/HTTP 기본
URI(Uniform Resource Identifier) URI에는 크게 URL(Locator) 과 URN(Name) 두가지가 있다. 굳이 따지자면 URI는 인터페이스, URL과 URN은 구현체 같은 느낌? 이름에서 알 수 있듯이 URL은 경로, 위치로 식별하고 URN은 이름으로 식별한다. URN은 현재 잘 사용되지 않으며 URL이 압도적으로 비율이 많다 URL 특징 포트 번호는 생략가능하다. 알아서 붙여주며 만약 명시하면 해당 PORT로 접속 쿼리 스트링은 모두 문자로 처리된다(/search?q=hello&hl=ko) 숫자도 문자로 처리 됨 HTTP(HyperText Transfer Protocol) 현재는 Text뿐만 아니라 영상, 이미지 모든 정보를 전송하고 있다 HTTP 통신 흐름 웹 브라우저가..
[HTTP 기본] 1. 네트워크 통신 기초
·
Back-End/HTTP 기본
네트워크 통신 기초 1. IP(Internet Protocol) 우리가 흔히 말하는 IP주소할 때 그 IP이다. 지정한 IP 주소에 패킷이라는 통신 단위로 데이터를 전달한다 패킷 패킷에는 다음과 같은 정보들이 담긴다 출발지 IP 목적지 IP 전송 데이터 패킷을 포함한 데이터들은 네트워크상에 존재하는 노드들을 통해 목적지로 보내진다. 해당 데이터를 성공적으로 받은 서버는 OK라는 메세지를 다시 노드들을 통해 클라이언트로 보내주어 확인을 한다 한계점 1. 패킷을 받을 서버가 존재하지 않거나 서비스 불능 상태여도 패킷을 보내게 된다 2. 불량 노드들로 인해 중간에 패킷이 사라질 수 있으며 패킷의 순서가 뒤바뀔 수 있다. 3. 포트 정보가 없기 때문에 같은 IP를 사용하는 애플리케이션이 두 개 이상이라면 문제가..