JPA란
- Java Persistence API이다.
- ORM 기술이다.
- Object Relation Mapping. 객체를 DB에 연결하는 방법
- 클래스를 만들면 DB의 테이블이 자동으로 생성되도록 한다.
- 반복적인 CRUD 작업을 생략하게 해준다.
- DB의 데이터 타입을 자바 객체로 바꿔줘야 한다.
- 간단한 함수를 통해 DB와의 통신을 편리하게 해준다.
- 영속성 컨텍스트를 가지고 있다.
- 컨텍스트: 대상의 모든 정보
- 자바와 DB사이에서 모든 정보를 관리하고 확인할 수 있다.
- DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)
- 자바의 객체를 DB에 넣을 때 jpa가 자동으로 foreign key를 사용하여 넣어준다.
- OOP(Object-Oriented Programming)의 관점에서 모델링을 할 수 있게 해준다. (상속, 컴포지션, 연관관계)
- 방언 처리가 용이하며 Migration하기 좋다. 유지보수에도 좋다.
- 추상화 객체(오라클, MySQL, Maria DB 등)를 사용하기 용이하다.
HTTP란
톰캣
- 서블릿 컨테이너
- URL: 자원을 요청하는 주소. ex) http://naver.com/a.png
- URI: 식별자 접근. ex) http://naver.com/picture/a
- request가 들어올 때 웹서버(아파치 등)에서 자바 코드를 이해하지 못하므로 톰캣을 통해 자바코드를 컴파일하여 웹서버에 돌려준다.
- 요청시에 무조건 자바를 거쳐간다.
- 정적자원(html, css, png 등)을 요청할 땐 톰캣 없이 아파치만 접근함.
- 서블릿 객체
- 최초 요청 발생 시 서블릿 객체 생성
- 자바 관련 요청이 들어올 때마다 스레드를 생성하여 요청을 처리함
- 같은 메서드를 여러 번 요청하더라도 독립적인 영역(stack 영역)에서 호출 가능
- 설정된 스레드 개수가 모두 채워졌을 때 대기하고 있다가 기존 스레드의 response가 끝난 것을 재사용(pooling 기법)