HTTP API 메서드 요구사항 회원 목록 조회 회원 조회 회원 등록 회원 수정 회원 삭제 일반적으로 이렇게 생각할 수 있다. API URL 설계 회원 목록 조회 → /read-member-list 회원 조회 → /read-member-by-id 회원 등록 → /create-member 회원 수정 → /update-member 회원 삭제 → /delete-member 하지만, 이는 좋은 설계가 아니다. URI에서 가장 중요한 것은 리소스 식별이다. 리소스에 대해 알아보자. 리소스란? 회원을 등록,수정,조회 하는것은 리소스가 아니다. 리소스는 “회원” 그 자체가 리소스이다. 계층 구조 상위를 컬렉션으로 보고 복수 단어를 사용하는 것이 좋다. ex) members 회원 목록 조회 → /members 회원 조..
전체 글
1. HTTP protocol HyperText Transfer Protocol 앞에서 말한 TCP/IP는 클라이언트와 서버 모델을 사용하는 프로토콜, 클라이언트의 요구에 맞는 서버가 작업을 한다. HTTP는 TCP/IP프로토콜을 기반으로 한 프로토콜. 클라이언트와 서버 간 HTTP요청 및 응답을 할 수 있다. HTTP는 모든 것을 전송한다. 서버 간에 통신할 때도 TCP를 직접 연결하기 보다는 대부분 HTTP를 사용한다. 1-1) HTTP 역사 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년: 메서드, 헤더 추가 HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 RFC2068 (1997) -> RFC2616 (1999) -> RFC7..
1. URI URI?URL?URN? 개념을 확실히 하고 넘어가야 한다. 리소스를 식별하는 URI안에 URL, URN이 존재한다. URI 자원이 어디에 있는지 자원 자체를 식별하는 방법이다. location이나 name 혹은 둘 다 추가로 분류될 수 있다. Uniform - 리소스를 식별하는 통일된 방식 Resource - 자원, URI로 식별할 수 있는 모든 것(제한 없음) 웹 브라우저의 파일만 뜻하는 게 아니다. 실시간 교통정보 등 우리가 구분할 수 있는 것은 모든 것이 리소스이다. Identifier - 다른 항목과 구분하는데 필요한 정보 URL(Location) 리소스의 위치를 뜻한다. URN(Name) 리소스의 이름을 의미한다. URN의 경우 리소스가 이름에 매핑되어 있어야 하기 때문에 이름으로 ..
컴퓨터는 인터넷에서 어떻게 통신할까? 이를 알기 위해 IP를 공부해야 한다. 1. IP란? 복잡한 인터넷에서는 규칙이 필요하다. IP= Internet Protocol 상대와 나의 IP가 있어야 통신이 가능하다. IP역할 지정한 IP주소에 데이터를 전달 패킷이라는 통신 단위로 데이터 전달 패킷에 들어가는 정보 출발지 IP 주소 (Source IP Address): 데이터가 보내진 곳의 IP 주소. 패킷을 생성하고 보낸 시스템의 IP 주소 목적지 IP 주소 (Destination IP Address): 데이터가 전송되어야 하는 곳의 IP 주소. 패킷이 도착해야 하는 시스템의 IP 주소 보낼 데이터 (Payload 또는 데이터 부분): 실제로 전송되는 데이터가 이 부분에 들어간다. 기타 필요한 헤더 정보 (..
영속성 컨텍스트 JPA에서 가장 중요한 2가지를 꼽아보면 1. 객체와 관계형 데이터베이스 매핑(ORM) 2. 영속성 컨텍스트 이그림을 설명하면 요청이 올 때마다 EntityManagerFactory를 통해 EntityManager를 생성하고, EntityManager는 내부적으로 DB 커넥션을 통해 DB를 사용한다. 영속성 컨텍스트? "영구 속성 저장" 인가? 맞다. "엔티티를 영구 저장하는 환경"이라는 듯이다. 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지는 않는다. EntityManager를 통해서 영속성 컨텍스트에 접근 가능하다. EntityManager.persist(entity); //Entity를 DB에 저장하는 코드. Entity를 영속성 컨텍스트에 저장하는 것이다. EntityManage..
1. 데이터베이스 방언 JPA는 특정 DB에 종속되지 않는다. 따라서 알아서 바꿔준다. 2. JPA구동 방식 Persistence 클래스가 META-INF/persistence.xml 설정 파일을 읽어서 EntityManagerFactory라는 클래스를 생성한다. 그리고 필요할 때마다 EntityManager를 만든다. EntityManagerFactory는 하나만 생성해서 전체에서 공유하고, EntityManager는 쓰레드간에 공유하지 않고 사용 후 버린다. JPA의 모든 데이터 변경은 트랜잭션 안에서 실행한다. 시작에 앞서 트랜잭션에 대한 기본적인 내용이 필요하다. 필요하다면 공부를 더 하도록 하고, 간단히 아래글로 개념만 잡아보자 트랜잭션? https://koreatstm.tistory.com/1..
자바 ORM 표준 JPA 기본편 인프런 김영한님의 '자바 ORM 표준 JPA 기본편' 강의 보러가기 https://www.inflearn.com/course/ORM-JPA-Basic# 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런 회사땜에 매일 바쁜 와중에 학원이라도 다닐까 생각했는데 마침 JPA 강의가 생겨서 꿀 타이밍이네요. 저는 이 전에 JPA 책을 보고 공부 했었는데요 궁금했던 점, 업무에 적용하며 고민하고 해결하 www.inflearn.com 김영한님 강의를 듣고 개인적으로 정리를 해보려고 한다. 단순히 개인 공부를 위한 개인정리글이다. https://dodeon.gitbook.io/study/kimyounghan-orm-jpa/01-jpa-introduction JPA 소개 -..
트랜잭션 트랜잭션의 정의는 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위이다. 이때, 상태를 변화시킨다는게 무슨 말일까? 말을 어렵게 했는데 쉽게 이야기해서 sql을 가지고 데이터베이스에 접근하는것이다. 흔히 말하는 SELECT, INSERT,DELETE,UPDATE를 가지고…. 작업단위라는게 있ㄴ다. 여러가지 쿼리문을 기준에 따라 정하는 것이다. 이때, 각 작업단위는 한문장이 아님에 유의해야한다. 예를들어 인스타그램에 글을 올리는 과정을 나눠보면 글을 작성하고, 작성한 글을 서버에 올리고, 서버에서 내가 작성한 글을 보는 과정을 거치는데, 글을 올리는 INSERT도 있을 것이고, 그 글을 찾는 SELECT도 들어갈 것이다. 이것을 합쳐서 하나의 단위 = 트랜잭션이라고 하는것이다. 트랜잭션에는..