하이버네이트 (Hibernate) 2018. 05. 09. 박지혜
1. 하이버네이트 사용현황 2. 하이버네이트의 특징 3. 하이버네이트 vs myBatis 비교 4. 하이버네이트 성능 목차 1. 하이버네이트 사용현황 2. 하이버네이트의 특징 3. 하이버네이트 vs myBatis 비교 4. 하이버네이트 성능 5. 생각해볼 점
1. 하이버네이트 사용현황
hibernate, myBatis 대신 hibernate example, myBatis example 검색 1. 하이버네이트 사용현황 hibernat는 ‘동면하다’라는 뜻을 가진 영어 단어임. hibernate, myBatis 대신 hibernate example, myBatis example 검색 출처: https://trends.google.com/trends/explore?geo=US&q=hibernate,mybatis
1. 하이버네이트 사용현황 한국 전세계 일본 미국 인도 중국
2. 하이버네이트의 특징
2. 하이버네이트의 특징 1) Object-oriented programming 개념 UPDATE 쿼리 실행 (X) dto를 수정한 후 save() 호출 (O) 2) 특정 DBMS에 종속되지 않음 - DBMS 교체 용이 (특정 DB 종속 쿼리를 HQL로 선언한 것이 아닌 이상 DB 변경이 비교적 간단함) - multiple database 설정에 용이 3) 프로그램에 알맞게 DB를 설계할 수 있음 <property name="hibernate.hbm2ddl.auto">validate</property> Validate - 테이블을 전혀 손대지 않고, 프로그램에 필요한 테이블 구조와 일치하는지 확인한후, 일치하지 않으면 에러를 출력한다. Update - 기존 테이블이 현재 실행에 필요한 테이블 구조와 다를 경우 수정한다. (데이타는 지우지 않는다.) Create - 기존 테이블을 지운 후, 실행할때 마다 매번 생성한다. Create Drop - 테이블을 생성해서 프로그램을 실행한 후에, 테이블을 다시 지워버림
2. 하이버네이트의 특징 (단점) 1) 오버헤드 select 후 delete 2) 복잡한 쿼리 사용하기에 부적합 HQL을 작성할 때에 alias를 꼭 쓰고 오브젝트 클래스명과 정확히 일치해야 하고 쿼리를 xml이 아닌 프로그램 소스 코드 안에 작성해야 함
3. 하이버네이트 vs myBatis
3. 하이버네이트 vs myBatis 출처: https://www.slideshare.net/williverson/seajug-may-2012-mybatis
4. 하이버네이트 성능
4. 하이버네이트 성능 출처: https://coderanch.com/t/503370/databases/Persistence-Hibernate-iBATIS-JDBC-Performance
4. 하이버네이트 성능 출처: http://www.devx.com/Java/Article/33768/0/page/4
5. 생각해볼 점
5. 생각해볼 점 Q. 왜 우리나라에서는 hibernate보다 myBatis를 압도적으로 많이 쓰는가? 1) 기존에 존재하는 코드나 시스템들과의 연계 처음부터 객체지향적으로 잘 설계되지 않은 DB와 연계해야 하는 경우가 많음. DB설계를 처음부터 다시 하는 경우는 매우 드물고, 대부분 as-is와 최대한 비슷하게 하는 경우가 많은 것으로 판단됨. DB 초기 설계 단계에서부터 hibernate를 도입했어야 이후 효율적인 프로그래밍 가능함 2) 유지보수 hibernate는 문제 발생 시 쿼리를 수정하는 것이 아니라 소스를 수정해야 함. myBatis는 쿼리를 바로 수정할 수 있음. 우리나라에서는 쿼리를 수정하여 유지보수하는 경우가 많음. 따라서 쿼리를 바로 수정할 수 있는 myBatis가 더 유용함. 3) 성능 hibernate는 쿼리 오버헤드가 있고, select 시 모든 컬럼 데이터를 다 가져오는 것이 디폴트임. myBatis는 쿼리를 직접 튜닝하여 쿼리 성능을 높일 수 있음. 쉽게 컨트롤할 수 있음. 우리나라에서는 성능 튜닝 시 쿼리 튜닝을 제일 우선적으로 생각하는 경우가 많음. 따라서 쿼리를 바로 수정할 수 있는 myBatis가 더 유용함. Q. hibernate는 언제 사용하는 것이 적합한가? * DB를 직접 다룰 수 있는 경우 hibernate를 이용한다면 DB에 맞춰 프로그래밍하는 것이 아니라, “객체지향 프로그래밍에 알맞은 DB를 설계”하여 프로그램이 할 수 있음 * 전체적인 시스템의 분석, 설계 단계에서부터 객체지향적인 데이터베이스 설계, 객체지향적인 시스템 설계 모두를 해나갈 수 있을 때, 효율적인 프로그래밍 가능
- 끝 -