Hikari CP
- 2012년 개발된 커넥션 풀
- 스프링부트 2.0부터 기본 커넥션 풀로 지정됨
- 스프링프레임워크에서는 기본 JDBC 클래스에서 제공하는 커넥션 풀을 사용
- 스프링부트에서는 Hikari CP를 이용해서 커넥션 풀을 만듦
- 커넥션 풀은 데이터베이스와 연결된 커넥션들을 미리 생성해놓고 pool로 관리하는 것을 의미
-> 사용자가 커넥션 풀에 커넥션을 요청하면 커넥션 풀에서 사용중이지 않은 커넥션을 하나 빌려주는 형태
ORM(Object Relational Mapping)
- 자바 객체와 테이블을 매핑시키는 기술 및 프레임워크
JPA(Java Persistence API)
- JPA는 실제 동작을 만드는 것이 아니고 어떻게 동작해야 하는지 매커니즘을 명시
- 개발자가 테이블과 1:1로 매핑되는 객체(VO, DTO, Entity)를 이용하여 쿼리 매커니즘을 명시하면 자동으로 쿼리가 생성 및 실행됨
- JPA는 인터페이스고 대표적인 구현제로는 Hibernate, EclipseLink, DataNucleus 등이 있다.
Hibernate
- JPA의 대표적인 구현체중 하나로 CRUD에 필요한 인터페이스를 제공하고 레포지토리를 정의해 사용함으로써 스프링이 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작
Persistense Context(영속성 컨텍스트)
- 어플리케이션과 데이터베이스 사이에서 entity와 data의 괴리를 해소하는 기능과 객체를 보관하는 기능을 제공
Entity Manager
- 데이터베이스에 접근하여 직접 쿼리를 수행하는 객체
- Entity Manager를 상속받은 객체를 조작하여 수행
JPA option
spring.jpa.hibernate.ddl-auto=create
create
: 어플리케이션이 실행될 때 기존 테이블을 삭제하고 다시 생성
create-drop
: drop시점이 어플리케이션 종료(나머지는 create
와 동일하게 동작)
update
: 변경된 스키마만 적용. 기존 데이터는 유지
validate
: update
와 비슷하지만 스키마는 변경하지 않고 테이블 정보만 변경
none
: ddl-auto
기능을 사용하지 않음
** Command 객체
- 메소드에서 매개변수로 선언된 객체
- getter, setter가 필수적으로 존재해야함
- View에서 보내준 데이터의 키 값과 이름이 같은 속성 값의 setter가 자동 호출되어 세팅된다.
- 커맨드 객체의 속성 값중 int는 0으로, string은 ""으로 초기화됨