[Spring Boot] ORM, JPA

2024. 6. 21. 19:49· BackEnd/SpringBoot
목차
  1. 1.ORM(Object-Relational Mapping)
  2. 1-1.ORM 특징
  3. 2. JPA (Java Persistence API)
  4. 2-1.JPA 개념
  5. 2-2.JPA의 어노테이션
  6. 3.H2 데이터베이스
  7. 4.SpringBoot에서 사용하기
  8. 4-1.의존성 추가
  9. 4-2.설정
  10. 4-3.DB 생성
  11. 4-4.DB접근
  12. 5.JPA 설정
  13. 6.Hibernate
728x90

점프 투 스프링부트를 참고하여 학습,작성하였습니다.


1.ORM(Object-Relational Mapping)

객체와 관계형 데이터베이스의 데이터를 매핑하는 기술

 

 

 

1-1.ORM 특징

  • 객체 지향 프로그래밍 언어와 관계형 데이터베이스의 패러다임 간 차이를 줄임
  • SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행(자동화)
  • 객체 지향적인 코드 작성으로 코드의 가독성과 유지보수성을 높임
  • 매핑: 데이터베이스 테이블을 클래스에, 테이블의 행을 객체에 매핑
  • CRUD 작업: ORM 라이브러리를 사용하여 객체를 데이터베이스에 CRUD함
  • 자동 쿼리 생성: ORM 프레임워크가 필요한 SQL 쿼리를 자동으로 생성하고 실행

 

 

2. JPA (Java Persistence API)

자바 애플리케이션에서 객체와 관계형 데이터베이스 간의 매핑을 관리하는 자바 표준 명세
ORM 프레임워크의 일종이다.

 

 

2-1.JPA 개념

  • Entity: 데이터베이스 테이블에 매핑되는 자바 클래스입니다. 각 인스턴스는 데이터베이스 테이블의 한 행(row)에 해당
  • Entity Manager: 엔티티의 생명 주기(생성, 읽기, 업데이트, 삭제)를 관리하는 인터페이스 
  • Persistence Unit: JPA가 사용할 엔티티 클래스와 설정 정보를 포함하는 단위
  • Query Language: JPQL(Java Persistence Query Language)은 엔티티 객체를 대상으로 하는 SQL 유사 쿼리 언어

 

 

2-2.JPA의 어노테이션

  • @Entity: 클래스를 JPA 엔티티로 지정
  • @Table: 엔티티와 매핑되는 데이터베이스 테이블을 지정
  • @Id: 엔티티의 기본 키를 지정
  • @GeneratedValue: 기본 키 값을 자동으로 생성하도록 설정
  • @Column: 엔티티 필드와 매핑되는 데이터베이스 컬럼을 지정
  • @OneToOne, @OneToMany, @ManyToOne, @ManyToMany: 엔티티 간의 관계를 설정

 

 

 

 

 

3.H2 데이터베이스

Java로 작성된 RDBMS
H2는 내장형 데이터베이스로 동작할 수 있으며, 디스크 기반 데이터베이스로도 사용된다.

 

 

 

 

 

 

4.SpringBoot에서 사용하기

 

4-1.의존성 추가

pom.xml 파일에 JPA와 H2데이터 베이스의 의존성을 추가 시킨다.
<!--h2-->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
<!--JPA-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>



 

 

 

4-2.설정

application.properties에서 H2 Database 를 사용하기 위한 설정을한다.
spring.h2.console.enabled=true 콘솔의 사용 여부를 설정 True(활성화)
spring.h2.console.path=/h2-console H2 콘솔의 경로를 설정 
http://localhost:8080/h2-console로 설정함
spring.datasource.url=jdbc:h2:~/local H2 데이터베이스의 연결 URL을 설정
~/ 은 사용자 홈디렉토리를 의미함
사용자의 홈디렉토리에 local.mv.db DB와 연결함
spring.datasource.driverClassName=org.h2.Driver 사용할 JDBC 드라이버의 클래스를 지정
spring.datasource.username=sa H2 데이터베이스에 접속할 때 사용할 사용자 이름
spring.datasource.password= H2 데이터베이스에 접속할 때 사용할 사용자 비밀번호

 

 

 

 

4-3.DB 생성

copy con local.mv.db 을 입력후  Ctrl + Z  후 Enter을 입력해 
local.mv.db 파일을 생성한다.
이는 properties의 설정값인 spring.datasource.url=jdbc:h2:~/local
로 연결된다. 



 

 

 

4-4.DB접근

springboot를 실행후 http://localhost:8080/h2-console에 접속한다.



spring.datasource.url 연결주소인 jdbc:h2:~/local로 JDBC URL 경로를 변경후 연결한다.

 

 

 

연결완료



 

 

 

 

5.JPA 설정

properties에 JPA 설정을 추가한다.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

Hibernate의 H2 데이터베이스용 Dialect(방언)을 설정
H2Dialect은 SQL 문법 지원,데이터 타입 매핑,SQL 함수 지원을 한다.

 

spring.jpa.hibernate.ddl-auto=update

Hibernate가 데이터베이스 스키마를 자동으로 관리하는 방식을 설정
update: Hibernate는 기존 스키마를 유지하면서 새로운 변경 사항을 적용하도록 합니다.
애플리케이션 실행 시 엔티티 클래스의 변경사항에 따라 자동으로 데이터베이스 스키마를 수정

 

 

6.Hibernate

Java 언어를 위한 객체-관계 매핑(ORM) 프레임워크
방언(Dialect)은 Hibernate가 다양한 데이터베이스 벤더들과 상호작용할 수 있도록 해주는 중요한 구성 요소

 

 

728x90

'BackEnd > SpringBoot' 카테고리의 다른 글

[Spring Boot] 엔티티 테이블 매핑  (0) 2024.06.21
[Spring Boot] URL 매핑, 컨트롤러  (0) 2024.06.19
[Spring Boot] Spring Boot 파일 구조4 src/  (0) 2024.06.19
  1. 1.ORM(Object-Relational Mapping)
  2. 1-1.ORM 특징
  3. 2. JPA (Java Persistence API)
  4. 2-1.JPA 개념
  5. 2-2.JPA의 어노테이션
  6. 3.H2 데이터베이스
  7. 4.SpringBoot에서 사용하기
  8. 4-1.의존성 추가
  9. 4-2.설정
  10. 4-3.DB 생성
  11. 4-4.DB접근
  12. 5.JPA 설정
  13. 6.Hibernate
'BackEnd/SpringBoot' 카테고리의 다른 글
  • [Spring Boot] 리포지터리로 데이터 저장
  • [Spring Boot] 엔티티 테이블 매핑
  • [Spring Boot] URL 매핑, 컨트롤러
  • [Spring Boot] Spring Boot 파일 구조4 src/
아사_
아사_
프로그래밍 공부한거 정리해두는 메모장 블로그
아사_
개발공부 블로그
아사_
전체
오늘
어제
  • 분류 전체보기
    • FrontEnd
      • html
      • css
      • JavaScript
      • Node.js
      • React
      • React Native
    • BackEnd
      • SpringBoot
      • FastAPI
      • PHP
      • Flask
      • supabase
    • Language
      • Python
      • JAVA
      • Kotlin
      • C++
    • Development Tools
      • AWS
      • GIT,GITHUB
      • Docker
      • 메시지 브로커
      • 기타 도구,플랫폼
    • Computer Science
      • 개발지식
      • Server&Network
      • Algorithm&DataStructure
      • Security
      • DataBase
      • OS
    • AI
    • 기타
      • 잡다
      • Android
      • 도서
    • 클론코딩
      • 생활코딩 Express.js
      • 점프 투 장고
      • 생활코딩 Node.js
    • 프로젝트
      • DevQuest

인기 글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.2
아사_
[Spring Boot] ORM, JPA
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.