[DB] DBMS 접속기술(JDBC, MyBatis) 그리고 ORM

szlee·2023년 11월 30일
0

데이터베이스

목록 보기
8/8

DBMS 접속?

사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것.

  • 응용 시스템은 사용자로부터 매개 변수를 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할 수행.
  • 웹 응용 시스템은 웹 서버웹 애플리케이션 서버(WAS)로 구성된다.











DBMS 접속기술

DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크 등을 의미
--> JDBC, MyBatis

JDBC

Java DataBase Connectivity (자바 데이터베이스 연결).
프로그래밍 언어마다 DBMS에 접근할 수 있게 하는 기술은 여러 가지가 있고 대표적으로 자바에는 JDBC가 있다.

  • JDBC는 SQL을 사용하여 DBMS에 질의하고 데이터를 조작하는 API 제공.

JDBC API 사용 예시

private static final String SQL_QUERY
 = "SELECT * FROM USER_INFO WHERE USER_NAME = ? AND AGE = ?";
 //SQL_QUERY라는 변수에 쿼리 저장. 문자열 중간 ?는 파라미터를 받기 위한 변수
 
connection = datasource.getConnection(); //JDBC와의 연결
sql_exec = connection.preparestatement(SQL_QUERY); //preparestatement로 쿼리 실행

sql_exec.setString(1, user_name); //첫번째 물음표에 user_name이라는 변수 값을 파라미터로 전달

sql_exec.setString(2, age); //두번째 물음표에 age라는 변수 값을 파라미터로 전달

sql_result = sql_exec.executeQuery(); //JDBC로 쿼리 실행



MyBatis

SQL Mapping 기반 오픈 소스 Access Framework.

DBMS에 질의하기 위한 SQL 쿼리를 별도의 XML파일로 분리하고 Mapping을 통해 SQL을 실행.
DBMS 의존도가 높고 SQL 질의 언어를 사용하여 SQL 친화적임.

  • 복잡한 JDBC 코드를 단순화할 수 있다.
  • SQL을 거의 그대로 사용 가능하다.
  • Spring기반 프레임워크와 통합 기능을 제공
  • 우수한 성능

MyBatis 작성 문법

SQL 문장의 입력 파라미터 사용 방법

  • #{파라미터 명} 으로 처리

동적 SQL

  • 조건에 따라 SQL 구문 자체를 변경할 수 있다.
  • 응용 프로그램 실행 시 수행할 SQL문이 결정되고, 입력 파라미터만 변경하는 것이 아니라 SQL에 포함된 다양한 부분을 조건에 따라 변경 가능하다.
    • if, foreach, choose when otherwise.. 등

절차형 SQL 호출

  • MyBatis에서 절차형 SQL인 사용자 정의함수, 트리거, 프로시저의 사용이 가능
  • MyBatis에서 주로 프로시저 호출
    • statementType = "CALLABLE"
    • 프로시저 호출 전 CALL 문장 사용
    •    <select id = "blahblah~" resultType = "map" statementType = "CALLABLE">
         { call BLAH(#{인자1, 인자2,...}) }
         </select>






ORM

Object Relational Mapping.
객체지향 프로그래밍의 객체(Object)관계형 데이터베이스(Relational Database)의 데이터를 연결(Mapping)하는 기술을 의미.

  • 가상의 객체지향 데이터베이스를 만들어 프로그래밍 코드와 데이터를 연결한다.
  • 가상의 객체지향 데이터베이스는 프로그래밍 코드 또는 데이터베이스와 독립적이므로 재사용 및 유지보수에 용이.
  • SQL 코드를 직접 입력하지 않고 선언문이나 할당 같은 부수적인 코드가 생략되므로 직관적이고 간단하게 데이터 조작이 가능하다.

ORM 프레임워크

  • Java : JPA, Hibernate
  • Python : Django

ORM의 한계?

  • 프레임워크가 자동으로 SQL을 작성하기 때문에 의도대로 SQL이 작성되었는지 확인할 필요가 있다.
  • 객체지향적인 사용을 고려하고 설계된 데이터베이스가 아닌 경우 프로젝트가 크고 복잡해질수록 ORM기술을 적용하기 어려워진다.
  • 기존 기업들은 ORM을 고려하지 않은 데이터베이스를 사용하고 있기 때문에 ORM에 적합하게 변환하려면 많은 시간과 노력이 필요함.
profile
🌱

0개의 댓글