[Hibernate] 하이버네이트란 ppt
JPA의 구현체 중 하나의 프레임워크이며, 객체 지향 모델을 위한 프레임워크이다.
유독 한중일에서만 하이버네이트 점유율이 낮다.
Mybatis에 익숙한 사람들이라면, Mybatis 구조가 들어가는 자리에 Hiberante가 들어오는 구조라고 이해하면 된다.
DB커넥션이 있고 바로 하이버네이트에서 제공하는 함수를 사용하여 DB에 저장, 업데이트, 삭제를 한다.
Mybatis라면 쿼리를 짜서 xml파일에 넣어야 할 것이다.
오른쪽이 네이티브 쿼리인데, 이것을 하이버네이트를 이용하면 왼쪽과 같이 짜면 동일하게 동작한다.
insert작업의 예를 보여주는데 @entity로 선언된 클래스에 값을 설정한 뒤, ".save" 함수를 이용하여 처리하면 바로 동작을 하는 간단한 구조이다.
그 외에도 Read, Update, Delete 등이 있다. 아래 그림 참조.
중간에는 기존의 Mybatis 비교를 하는 ppt인데 회사 코드가 있어 올리지는 못한다. 장점과 단점을 비교는 아래의 그림 참조.
일단 특정 벤더에 종속적이지 않고, 여러 데이터베이스를 큰 어려움없이 바꿔도 문제가 없다. 단, 관계형 데이터 베이스에만 국한된다. 다른 NoSQL이라던지 싱크 맞추는데 손이 좀 간다.
위에서는 간단한 insert, delte, update 등을 보면서 쉽다고 생각하기 쉽지만, join이나 복잡한 쿼리를 짜야하는 경우가 생긴다면 굉장히 복잡한 코드가 필요하다. 일단 Entity짜는 것부터 굉장히 공을 들여야 한다.
대충 이러한 N:N 구조를 짜려면 Entity가 4개 정도가 선언되어야 한다. 이 작업이 가장 큰 장애물이라고 할 수 있다. 이 장애물만 넘는다면 그 후에는 update, insert 등 함수만 사용하면 된다 .
'◽ JDBC > JPA & Hibernate' 카테고리의 다른 글
[이슈, Spring(JPA) - DB] 오류 "could not resolve property" (0) | 2019.11.01 |
---|---|
[JPA - Querydsl] BooleanBuilder란 무엇인가? ( 동적쿼리, 정적쿼리 ) (0) | 2019.10.29 |
[이슈, Spring(JPA) - 어노테이션(Annotation)] @Setter을 쓰지 않는 이유 (0) | 2019.10.21 |
[이슈, spring - jpa] rest api의 통신방법 통일or다중화하기. (0) | 2019.10.21 |
[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드 (0) | 2019.10.21 |
[Spring(JPA) - 어노테이션(Annotation) ] @DynamicUpdate (0) | 2019.10.21 |
[JPA] 데이터베이스 스키마 생성(자동) 설정 - (데이터베이스 만들기(인식)) (0) | 2019.10.18 |