JDBC란?
JDBC(java database connection)
client Oracle server(DBMS)
App <-> database
클라이언트와 오라클 서버 그리고 앱과 데이터베이스 사이에는 connection이 필요하다.
SQL code, request
App --------------------------------------- > database
< --------------------------------------
table , response
앱에서 SQL 코드를 요청하면, 데이터베이스는 테이블로 응답한다. 이러한 알고리즘이 ojdbc .jar 파일 안에 있다.
따라서 ojdbc .jar파일을 준비했다는 뜻은 JDBC driver 준비했다는 뜻이다.
JDBC driver, ojdbc8-x.x.x.jar 의 파일은 오라클에서 만드는 것이다.
mybatis란?
mybatis는 JDBC를 사용하는 방법이다.
JDBC를 그대로 날 것으로 사용하면 불편하기 때문에 mybatis를 사용하는 것이다.
JDBC를 날 것으로 사용하면 코드가 지저분해지는데, 이것은 중복된 코드가 많이 나온다는 뜻이다.
이 때, mybatis를 사용하면 중복된 코드가 상당히 제거된다. 따라서 개발, 유지보수가 편해진다.
결국 mybatis 안에 JDBC가 있는 것이다.
OR mapping (object relation mapping)
OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.
결국, 도메인과 레코드를 짝을 지어 주는 것이다.
Object가 존재하려면, 클래스가 있어야 하고, Relation을 위해서 테이블이 있어야 한다.
Object, relation, mapping 규칙이 준비 되어야 한다.
mapping은 컬럼의 값을 읽어서 멤버 변수에 넣는 행위이다.
classpath
build path와 같은 뜻으로, 컴파일 관점에서는 build path 라고 부른다.
mybatis 순서
Mybatis 자바 프로젝트 하나 만든다.
Lib 폴더 생성하고, 그 안에 ojdbc.jar 파일 넣는다.
Mybatis 오른쪽 마우스 → build path→ configure-->libraries-->add jar-->ojdbc 추가한다.
절차 설명
Mapper 객체 하나하나의 특징들은 sqlMap.xml에 기술되어 있다.
Configuration은 sqlMap에 기술된대로 Mapper를 형성한다.
Statements객체는 stat 객체랑 유사한데, sql 코드가 들어 있고, 이를 RDBMS로 Relational database management system(오라클 서버)으로 보내진다.
Statement 에는 변수들이 있다. 이 변수들은 Java/.NET Object, Primitive/simple(int, String, Date)에서 가져온다
맨 오른쪽 Java/.NET Object, Primitive/Simple(Int, Stirng, Data) 는 OR 매핑할 것들이다.
Hash/Map 부분은 지워도 된다 잘 사용하지 않기 때문이다.
상세 설명
sqlMapConfig
Configuration이 읽는다.
<mapper>들의 내용이 들어있다.
sqlMap
Mapper 객체 하나하나의 특징들이 기술되어 있다.
sqlMap 안에 있는 <select> 등 sql 코드를 statement 객체로 만든다.
interface에 있는 객체와 statement 객체가 관계를 맺는다.
RDBMS
Statements 객체들은 Relational database management system(오라클 서버)으로 보내진다.
Configuration
sqlMap에 기술된대로 Mapper 형성한다.
<mapper> 안에 등록된 mapper 객체를 만들어내는 것이다.
<mapper> 안에 등록된 mapper들은 sqlMap에 가면 namespace에 이름이 적혀 있고, 여기에 있는 내용으로 mapper 객체를 생성한다.
왼쪽 JAVA/NET Object, primitive/simple(int, string, data)
Statement 에는 변수들이 있는데, 이 변수들은 java object, simple 여기서 가져온다
맨 오른쪽 JAVA/NET object 는 OR 매핑할 것들이다.
Hash/Map 부분은 지워도 된다 잘 사용하지 않기 때문이다.
statement의 객체가 갖고 있는 변수를 채우는 값으로 interface의 파라미터가 채워줄 것이고 (그림의 왼쪽)
오른쪽 JAVA/NET Object, primitive/simple(int, string, data)
return 형태는 여기서 User selectUser(int userId) User 형식이다.(그림의 오른쪽)
interface를 바탕으로 Mapper가 만들어지는 것
그 자식 클래스로 mapper 객체를 mybatis가 만드는 것
namespace는 집합의 이름 selectUsers, userMap, addressmap은 원소이다.
'Backend Web > MyBatis · SQL Mapper' 카테고리의 다른 글
[MyBatis] org.apache.ibatis.ognl.ParseException (0) | 2022.05.13 |
---|---|
[MyBatis] MyBatis Generator (MBG) (0) | 2022.01.25 |