JUINTINATION
DBMS와 ORM 본문
반응형
DBMS 접속
DBMS는 데이터베이스 관리 시스템은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합으로 사용자는 DBMS에 접근하기 위해 API 또는 API의 사용을 편리하기 도와주는 프레임워크 등을 사용한다.
- 응용 시스템은 사용자로부터 매개 변수를 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할을 수행한다.
- 인터넷을 통해 구동되는 웹 응용 프로그램은 웹 응용 시스템을 통해 DBMS에 접근한다.
- 웹 응용 시스템은 웹 서버와 웹 애플리케이션 서버(WAS)로 구성되며 서비스 규모가 작은 경우 웹 서버와 웹 애플리케이션 서버를 통합하여 하나의 서버만으로 운용할 수 있다.
- 웹 응용 시스템의 구조는 아래와 같다.
- 사용자는 웹 서버에 접속하여 데이터를 주고 받는다.
- 웹 서버는 많은 수의 서비스 요청을 처리하기 때문에 사용자가 대용량의 데이터를 요청하면 직접 처리하지 않고 WAS에게 해당 요청을 전달한다.
- WAS는 수신한 요청을 트랜잭션 언어로 변환한 후 DBMS에 전달하여 데이터를 받는다.
- 이렇게 받은 데이터는 처음 요청한 웹 서버로 다시 전달되어 사용자에게 되돌아간다.
- DBMS 접속 기술로는 JDBC(Java Database Connectivity), ODBC(Open Database Connectivity), MyBatis 등이 있다.
- MyBatis는 JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크이다.
- JDBC의 데이터베이스에 접속하기 위한 다양한 메서드 호출 및 해제를 간소화하고 접속 기능을 강화하였다.
- SQL 문장을 분리하여 XML 파일을 만들고 Mapping을 통해 SQL을 실행한다.
- MyBatis는 SQL을 거의 그대로 사용할 수 있어 SQL 친화적인 국내 환경에 적합하여 많이 사용된다.
ORM(Object-Relational Mapping)
ORM은 객체지향 프로그래밍의 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 연결(Mapping)하는 기술을 의미한다. 이 글에서 정리한 내용에 따르면 ORM은 "객체로 연결을 해준다"라는 의미로 어플리케이션과 데이터베이스 연결 시 SQL언어가 아닌 어플리케이션 개발언어로 데이터베이스를 접근할 수 있게 해주는 툴이다.
- ORM으로 생성된 가상의 객체지향 데이터베이스는 프로그래밍 코드 또는 데이터베이스와 독립적이므로 재사용 및 유지보수가 용이하다.
- ORM은 SQL 코드를 직접 입력하지 않고 선언문이나 할당 같은 부수적인 코드가 생략되기 때문에 직관적이고 간단하게 데이터를 조작할 수 있다.
- ORM 프레임워크의 종류는 다음과 같다.
- JAVA : JPA, Hibernate, EclipseLink, DataNucleus, Ebean 등
- C++ : ODB, QxOrm 등
- Python : Django, SQLAlchemy, Storm 등
- Ios : Database Objects, Core Data 등
- JNET : NHibernate, DatabaseObjects, Dapper 등
- PHP : Doctrine, Propel, RedBean 등
ORM의 한계
- 프레임워크가 자동으로 SQL을 작성하기 때문에 의도대로 SQL이 작성됐는지 확인할 필요가 있다.
- 객체지향적인 사용을 고려하고 설계된 데이터베이스가 아닌 경우 프로젝트가 크고 복잡해질수록 ORM 기술을 적용하기 어려워진다.
- 기존의 기업들은 ORM을 고려하지 않은 데이터베이스를 사용하고 있기 때문에 ORM에 적합하게 변환하려면 많은 시간과 노력이 필요하다.
728x90
'정보처리기사 정리' 카테고리의 다른 글
배치 프로그램(Batch Program) (0) | 2024.02.20 |
---|---|
SQL 테스트와 쿼리 최적화 (1) | 2024.02.16 |
트랜잭션 및 CRUD 분석 (0) | 2024.02.16 |
정규화(Normalization)와 반정규화(Denormalization) (0) | 2024.02.15 |
관계대수 및 관계해석 (0) | 2024.02.15 |
Comments