πŸ‘©πŸ»‍πŸ’» Dev

[SQL] ORM, JDBC, JPA, Hibernate, JPQL, QueryDSL

jcowwk 2025. 1. 23. 21:28

ORM, JDBC, JPA, Hibernate, JPQL, QueryDSL


1. ORM

2. JDBC

3. JPA

4. Hibernate

5. JPQL

6. QueryDSL


1. ORM

ORM(Object-Relational Mapping)은 λ°μ΄ν„°λ² μ΄μŠ€μ™€ 객체λ₯Ό μžλ™μœΌλ‘œ μ—°κ²°ν•΄ μ£ΌλŠ” κΈ°μˆ μž…λ‹ˆλ‹€.

SQL 문을 직접 μž‘μ„±ν•˜μ§€ μ•Šκ³ λ„ λ°μ΄ν„°λ² μ΄μŠ€μ™€ 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. JDBC

JDBC(Java Database Connectivity)λŠ” μžλ°”μ—μ„œ 직접 λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°κ²°ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

SELECT * FROM user; μ™€ κ°™μ€ SQL 문을 직접 μžλ°” μ½”λ“œμ—μ„œ μž‘μ„±ν•΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ†Œν†΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

3. JPA

JPA(Java Persistence API)은 ORM을 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μžλ°” ν‘œμ€€ κΈ°μˆ μž…λ‹ˆλ‹€.

@Entity, @Table, @OneToOne λ“±κ³Ό 같은 μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜λŠ” 것을 JPA라고 ν•©λ‹ˆλ‹€.

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°κ³Ό λ°μ΄ν„°λ² μ΄μŠ€ κ΄€κ³„ν˜• λͺ¨λΈμ„ μžμ—°μŠ€λŸ½κ²Œ κ²°ν•©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

4. Hibernate

HibernateλŠ” JPAλ₯Ό κ΅¬ν˜„ν•œ λŒ€ν‘œμ μΈ ORM 기술으둜 JPAλŠ” ν‘œμ€€ μΈν„°νŽ˜μ΄μŠ€λ§Œ μ œκ³΅ν•˜κ³ , μ‹€μ œ κΈ°λŠ₯은 μ—†κΈ° λ•Œλ¬Έμ— Hibernate 같은 라이브러리λ₯Ό μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

 

5. JPQL

JPQL은 JPAμ—μ„œ μ‚¬μš©ν•˜λŠ” λ¬Έμžμ—΄ 기반의 객체 μ§€ν–₯ 쿼리 μ–Έμ–΄λ‘œ 컴파일 ν•˜κΈ° μ „κΉŒμ§€λŠ” 문법이 잘λͺ»λ˜μ—ˆλ”라도 문제λ₯Ό μ°ΎκΈ°κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

 

6. QueryDSL

QueryDSL

은 JPQL을 Java μ½”λ“œλ‘œ μž‘μ„±ν•  수 μžˆλ„λ‘ ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.

JPA둜 ν•΄κ²°ν•˜κΈ° μ–΄λ €μš΄ λ³΅μž‘ν•œ 쿼리λ₯Ό λ‹€λ£° λ•Œ μ‚¬μš©ν•˜κ³ , 컴파일 μ‹œμ μ—μ„œ 였λ₯˜λ₯Ό μ°Ύμ•„λ‚΄κΈ° λ•Œλ¬Έμ— JPQL을 λ”μš± μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


μ°Έκ³  μ‚¬μ΄νŠΈ

 

Spring - ORM, JPA, Hibernate, JDBC 총정리

 

velog.io

 

 

 

[JPA] QueryDSL

QueryDSL에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

velog.io

 

λ¬Έμ œκ°€ 있으면 λŒ“κΈ€ λ‚¨κ²¨μ£Όμ„Έμš” !

ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ <3