JPA(Java Persistence API) 가
"이렇게 데이터를 관리해야 한다"는 규칙과 방법을 정한 표준 명세(인터페이스) 라면,
하이버네이트는 그 JPA 명세를 실제로 구현한 가장 인기 있는 라이브러리!!!!!!!!!!
- 객체-관계 매핑 (#ORM):
- 원래 개발자는 SQL 매퍼였다. 즉, 객체와 테이블을 이어주는 작업을 했어야 했다.(매우귀찮)
- 하지만! 이제 개발자는 데이터베이스의 테이블이 아닌 자바 객체 중심으로 코드를 작성할 수 있게 되었다.
- 왜? 하이버네이트가 객체와 데이터베이스 테이블 사이의 데이터를 자동으로 변환하고 매핑해주는 역할을 해주기 때문.
- SQL 자동 생성:
- 개발자가
jpa.persist(member)와 같은 자바 코드를 실행하면, - 하이버네이트는 객체를 분석하여
INSERTSQL을 자동으로 생성하고 데이터베이스에 전달한다. - 이로써 반복적이고 지루한 CRUD SQL 작업을 직접 작성할 필요가 없어 생산성이 크게 향상되었다.
- 개발자가
- 데이터베이스 독립성:
- 하이버네이트는 데이터베이스 방언(Dialect) 이라는 기능을 통해 특정 데이터베이스에 종속되지 않도록 합니다.
- 데이터베이스 방언? MySQL과 Oracle에서 데이터를 조작할 때, 쿼리문에서 발생하는 차이를 말한다.
- 즉, 하이버네이트는 어떤 데이터베이스를 사용하는지 관계없이 SQL 매퍼로서의 역할을 완벽하게 수행해낸다는 것이다!!
- 하이버네이트는 40가지 이상의 데이터베이스 방언 지원
하이버네이트 설정 방법
persistence.xml파일에hibernate.dialect속성을 각 DB(MySQL, Oracle, H2 등)에 맞게 설정하면, 하이버네이트가 해당 DB 문법에 맞는 SQL을 생성한다.
마치며..
하이버네이트가 매우 강력하기 때문에 대부분의 경우에는 하이버네이트를 사용한다. 하지만 JPA 표준을 따라 개발하는 것이 좋다.
미래의 변화에 유연하게 대처할 수 있도록 표준을 지켜 코드를 작성하는 습관을 들이는 것이 좋겠다.
728x90
'Spring이당' 카테고리의 다른 글
| [WEB] 서블릿(Servlet)과 동시성, 그리고 스레드 풀의 모든 것 (3) | 2025.08.29 |
|---|---|
| WAS만 쓰면 안 되나요? 웹 서버와 WAS를 함께 쓰는 진짜 이유 (1) | 2025.08.26 |
| Stateful vs Stateless: 세션 인증과 JWT 인증의 핵심 차이점 (0) | 2025.08.20 |
| JPA를 왜 써야 할까 - 패러다임의 불일치 (2) | 2025.08.02 |
| Spring : Cannot access ~~.repository 이슈 (해결) (1) | 2025.06.02 |