Home
>
Spring
>
๐[Spring] Hibernate๋ ๋ฌด์์ผ๊น์?
Spring
Framework
๐[Spring] Hibernate๋ ๋ฌด์์ผ๊น์?
Hibernate๋ ์๋ฐ์์ ์ฌ์ฉ๋๋ ORM(Object-Relational Mapping) ํ๋ ์์ํฌ๋ก, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Relational Database, RDB)์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming, OOP) ๊ฐ์ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํด ์ฃผ๋ ๋๊ตฌ์
๋๋ค.
๊ฐ์ฒด ์งํฅ์ ์ธ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Relational Database, RDB)์ ํ
์ด๋ธ์ ์๋์ผ๋ก ๋งคํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
1๏ธโฃ ์ฃผ์ ํน์ง.
1๏ธโฃ ORM(Object-Relational Mapping)
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ๊ณผ ์๋ฐ ํด๋์ค ๊ฐ์ ๋งคํ์ ํตํด, SQL(Structured Query Language) ๋ฌธ์ ์ง์ ์์ฑํ์ง ์๊ณ ๋ ์๋ฐ ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ ํ(Row)์ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๊ณ , ์๋ฐ ๊ฐ์ฒด๋ฅผ ํ
์ด๋ธ์ ํ(Row)์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
2๏ธโฃ HQL(Hibernate Query Language)
SQL(Structed Query Language)๊ณผ ์ ์ฌํ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ด ์๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์ง์๋ฅผ ํ ์ ์๋๋ก ์ค๊ณ๋ ์ฟผ๋ฆฌ ์ธ์ด์
๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
์๋์ง ใ
๋ณ์ ๋ค๋ฅธ DBMS(Database Management System, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
)๋ก์ ์ ํ์ด ์ฉ์ดํฉ๋๋ค.
3๏ธโฃ ์บ์ฑ(Caching)
Hibernate๋ 1์ฐจ, 2์ฐจ ์บ์ฑ์ ์ ๊ณตํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ฒญ ํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ์ํ ์ ๊ทผ์ ์ค์ผ ์ ์์ต๋๋ค.
4๏ธโฃ ํธ๋์ญ์
๊ด๋ฆฌ.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํธ๋์ญ์
์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ฉฐ, ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ํ๋์ ๋จ์๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค๋๋ค.
5๏ธโฃ ์๋ ์คํค๋ง ์์ฑ.
Hibernate๋ ์๋ฐ ํด๋์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
2๏ธโฃ ์ฅ์ .
๐ DB ๋
๋ฆฝ์ฑ.
Hibernate๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
์๋์ง ์์ผ๋ฉฐ, ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
๐ ์์ฐ์ฑ ํฅ์.
SQL์ ์ง์ ์์ฑํ ํ์๊ฐ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๐ ์ ์ง๋ณด์ ์ฉ์ด.
๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์ ์งํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ฒ๋ฆฌํ ์ ์์ด, ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ด ๋์ต๋๋ค.
3๏ธโฃ ๊ฐ๋จํ ์.
@Entity
@Table ( name = "User" )
public class User {
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY )
private Long id ;
private String name ;
private String email ;
// Getters and Setters
}
์์ ์์์์ User
ํด๋์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๋งคํ๋ฉ๋๋ค.
@Entity
์ @Table
์ ๋
ธํ
์ด์
์ ํตํด ํด๋์ค๊ฐ ํ
์ด๋ธ๊ณผ ๋งคํ๋๊ณ , @Id
์ ๋
ธํ
์ด์
์ ๊ธฐ๋ณธ ํค(Primary Key)๋ฅผ ๋ํ๋
๋๋ค.
Hibernate๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ๋ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์กํ ์์
์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค.