[이야기] Maven, Oracle 19, Hibernate 5.4 - ORM 구현 및 동작하나요?
인터넷 글 등을 참고해보면, 대다수 검색되는 내용이 "Spring + Maven + Hibernate + MySQL" 조합의 글들이 굉장히 많이 나온다.
해외 사이트를 찾아서 참고해보면, "Maven + Hibernate + MySQL" 조합도 종종 나온다.
StackOverflow에 Oracle 19g와 Hibernate를 사용할 때 Dialect을 어떤 것을 사용해야 하는지 검색을 해보았다.
Oracle 12버전으로 하면 된다고 해서 시도하였으나 동작하지 않았다.
* 오라클로 작업을 하고자 하는 인원이 있다면, 참고하면 좋겠다.
* 결론: 수 차례 실험 결과로는 동작하지 않는다. (2020-09-20일 기준)
- 오라클 데이터베이스 자체가 전혀 안 된다는 이야기는 아니고, Dialect 등이 엄격하게 버전을 인식하는 것으로 추측해본다.
(실험을 해보면 Oracle 11, Oracle 12로 시도했을 때는 될 수도 있다는 이야기를 하고 싶었다.)
- 물론 시간적인 여력이 된다면, 연재해보겠다.
(오라클 제거하고, 컴퓨터 포멧이나 VirtualBox 등 각종 방법으로 실험을 한다고 했을 때 시간이 소요되는 작업이다. 결코 쉽지않은 작업들이다.)
1. 작업화면
수 차례 실험하였으나 동작하지 않는다.
그림 1. hibernate Maven 프로젝트
2. 실험 환경
* 컴퓨터 사양: intel i5 4세대 이상, SSD 256GB 이상, RAM 16GB 이상
* 시도 횟수: 4번(hibernate 초기 로드시간이 상당히 오래 걸림.) - 코드 작성 / 재작업 등 각종 숨은 디버깅 작업이 있었음.
데이터베이스 테이블도 구현하였고 각종 작업을 하였음.
* IDE: Spring-tool-suite-4-4.7.2 Release(Eclipse)
Jboss - hibernate만 설치
* POM:
java-servlet
hibernate-em(entity-manager)
oracle-19g(ojdbc8)
* Database:
Oracle Databases 19g
* Web Server:
Apache Tomcat 9
* 환경설정 파일 생성: Jboss - hibernate로 자동 생성하였음. (src/main/resources 폴더 내에 hibernate.cfg.xml 설치함)
* 프로젝트
- [첨부(Attachments)]
특이한 점: 초기 웹서버를 리셋하고, URL주소를 입력하여 DB에 접근하면 무한 반응으로 대기상태에 한참 있다가 hibernate 동작에서
한참 대기 후에 결과가 나옴.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="">
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">사용자계정</property>
<property name="hibernate.connection.password">비밀번호</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.use_sql_comments">true</property>
<property name="hibernate.format_sql">true</property>
<mapping class="com.hibernateMaven.web.model.EmpTable"/>
</session-factory>
</hibernate-configuration>
* 파일명: hibernate.cfg.xml
* 비고: Dialect이 지원될 때까지는 기다려야 할 것으로 보인다. 이전 Dialect으로 연결 시도를 해도 된다는 Stackoverflow 글도 참고하였으나 확인되진 않았다.
(2020-09-21)
그림 2. JBoss Tools 4.16.0. Final
그림 3. Maven Project 생성 모습의 예
그림 4. 프로젝트 오른쪽 버튼 -> New -> Other....
그림 5. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)
그림 6. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)
그림 7. Hibernate 환경설정 파일 - 마법사 (JBoss 기반)
그림 8. Hibernate 환경설정 파일 생성된 모습
JBoss - Hibernate 플러그인을 설치하면, GUI화면으로도 작업할 수 있다.
그림 9. Hibernate 환경설정(GUI)으로 Mapping 시도하는 모습
실험하면서 동작하였으면, 좋은 글 하나 나왔을 탠데 아쉽다는 조금 생각이 든다.
현재 시중 블로그에 제대로 동작하는 Hibernate + Maven + Oracle 18 이상의 프로젝트는 없다고 보면 정확할 거 같다.
OpenTutorial 이런 강의 사이트 동영상도 참고해보기도 하고, 많은 시간을 투자하였다.
3. 결론(Conclusion)
안 될 때는 과감하게 정리해야 한다. 시도해볼만한 삽질이라면, 해야 하는게 맞지만, 오래 시도하기에는 애매한 작업들이 있다.
Hibernate보다는 MyBatis가 좋다고 보는게, 직관적으로 SQL 문법을 자유롭게 사용할 수 있다는 게 큰 장점이라고 본다.
ORM(객체-관계-맵핑)이라는 주제도 물론 중요하지만, 그거 필요하면 코드로 그냥 구현해서 사용하는 게 더 이득이고 낫다고 주장해본다.
엔터프라이즈 환경에 적합하다고 적은 교과서도 시중에 있긴 있는데, 꼭 그렇진 않은 거 같다고 본다.
서버 튜닝으로 막아도 무방하고, MySQL 이런 것도 예를 들면 튜닝이나 Cluster 등 다양한 방법론을 잘 적용하면 엔터프라이즈에서도 사용할 수 있다고 본다.
SQL 문법이 크게 어려운 것이 아니니깐, ORM은 여전히 시기상조라고 주장해본다.
더 복잡해지고 개발환경이나 생산성에서 미흡한 점이 여전히 남아 있다.
'이야기(Story) > 이야기(Story)' 카테고리의 다른 글
[이야기(Story)] MariaDB 테이블 파티셔닝과 고가용성 클러스터의 이해(HaProxy) (14) | 2021.01.01 |
---|---|
[이야기] JSP/Servlet의 RestEasy 4.8(Jboss)로 Rest 실험 이야기(한글 미지원) (12) | 2020.09.29 |
[이야기(Story)] 웹 어플리케이션과 웹 프로그래밍 ([Story] Web Applications and Web Programming) (10) | 2019.11.15 |
[이야기(Story)] 티맥스 OS 사용후기 - 이클립스(Eclipse), APT (10) | 2019.11.13 |
[이야기(Story)] 소스코드 라인 계산 프로젝트 - CLOC (10) | 2019.10.08 |