1. JPA(Java Persistence API)란?
- ORM(Object-Relational Mapping)을 위한 Java 표준 API(인터페이스 집합)
- ORM : 객체와 RDB를 Mapping
- JPA 구현체 : HIBERNATE, OpenJpa, EclipseLink, DataNucleus, ...
- Persistence(영속성) : 애플리케이션 종료 후에도 객체(데이터)가 유지되는 것
2. ORM(Object/Relational Mapping) Framework - HIBERNATE
- 객체와 DB테이블 간의 연결을 해주는 프레임웍
- 객체 모델(object model)과 관계형 모델(relational model)의 차이를 해소
3. 객체 모델과 관계형 모델의 비교
4. SQL Mapper(MyBatis) vs ORM framework(HIBERNATE)
- SQL Mapper : DB중심 개발, 성능이 좋음, 복잡한 일처리, SQL직접작성
- ORM framework : 애플리케이션 중심 개발, Table자동 생성
5. Spring Data와 Spring Data JPA
- Spring Data - 저장소 종류가 달라도 일관된 데이터 처리 방법을 제공
- Spring Data JPA - JPA를 위한 저장소(JpaRepository)와 관련 기능을 제공
6. Project생성
- application.properties에 설정 추가
# datasource설정 - 스키마 이름(sprinboot_basic), id, pwd를 본인에게 맞게 변경하세요.
spring.datasource.url=jdbc:mysql://localhost:3306?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=4862
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 쿼리를 콘솔에 출력하게
spring.jpa.show-sql=true
# 콘솔에 출력되는 쿼리를 보기 좋게 포맷팅
spring.jpa.properties.hibernate.format_sql=true
# 실제 사용할 DB의 종류 - hibernate가 DB별로 제공
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
# DB 자동 초기화
# create : 기존 테이블 삭제 후 새로 테이블 생성(개발)
# create-drop : create와 동일. 단, 종료시 테이블 삭제(개발)
# update : 기존 테이블을 삭제하지 않고, 변경 사항(컬럼 추가)만 적용(개발)
# validate : 엔티티와 테이블의 매핑 확인(운영)
# none : 사용하지 않음(운영)
spring.jpa.hibernate.ddl-auto=create
- DB자동 초기화
- create : 기존 테이블 삭제 후 새로 테이블 생성(개발)
- create-drop : create와 동일. 단, 종료시 테이블 삭제(개발)
- update : 기존 테이블을 삭제하지 않고, 변경 사항(컬럼 추가)만 적용(개발)
- validate : 엔티티와 테이블의 매핑 확인(운영)
- none : 사용하지 않음(운영)
@SpringBootApplication
public class Ch4Application implements CommandLineRunner {
@Autowired
EntityManagerFactory emf;
public static void main(String[] args) {
// TOMCAT 실행되지 않게 하는 코드
SpringApplication app = new SpringApplication(Ch4Application.class);
app.setWebApplicationType(WebApplicationType.NONE);
app.run(args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("emf = " + emf);
}
}
- 설정이 잘되었다면 emf에 빈객체가 주입이 되었어야 한다.
'JPA' 카테고리의 다른 글
2. 엔티티 매니저 팩토리와 엔티티 매니저 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.25 |
---|