MyBatis 를 접하고 업무를 할 때 대부분의 일은 Sql Mapper 를 만들고, SELECT, INSERT, UPDATE, DELETE 와 같은 CRUD 작업을 위한 DML(Data Manipulation Language) 를 작성하는 업무이지만, 간혹 Create Table, Drop Table 과 같은 DDL(Data Definition Language) 을 작성해야할 경우가 있다.
Mybatis를 이용해서 DDL 쿼리도 적용이 가능하다.
예를들어 CreateTable / DropTable / ShowCreateTable / DescTable 등인데 이 내용이 Mybatis 백서에도 제대로 안나와있다.
결론적으로 말하면 그냥 사용하면 되는데, 사용방법은 다음과 같다.
(참고로 위의 예제에 ${value} 부분은 MyBatis 의 동적쿼리문을 사용한 부분으로 Parameter Type 을 String 으로 한다면 value 라는 명칭을 사용해야 한다. 내부적으로 String.value 를 이용하기 때문이다. 또한 위의 예시에서 createNewTable 로 매핑된 부분의 ${value} 에는 Create Table 쿼리가 포함되면 된다.)
다만 한가지 주의할 점은, DML(Data Manipulation Language)가 아닌 위와 같은 DDL(Data Definition Language) 들은 대부분 트랜잭션을 사용하더라도 롤백이 되지 않는다.
몇가지 SQL 구문들은 MySQL 이 암묵적으로 커밋을 하기 때문에 트랜잭션을 감싸더라도 실행하면 롤백이 불가능하다. 트랜잭션이 불가능한 대표적 구문들은 다음과 같다.
CREATE / ALTER / DROP DATABASE
CREATE /ALTER / DROP / RENAME / TRUNCATE TABLE
CREATE / DROP INDEX
CREATE / DROP EVENT
CREATE / DROP FUNCTION
CREATE / DROP PROCEDURE
'Server > Data' 카테고리의 다른 글
Data Gravity? 빅데이터 트렌드와 Data Warehouse 와 Data Lake (0) | 2020.08.11 |
---|---|
Cache 를 다룰 때 알아야할 몇가지 Cache Flush 전략 (0) | 2019.03.08 |
Hibernate 사용시 주의해야하는 ddl 옵션 (0) | 2019.01.23 |
ORM(Object Relational Mapping)이란? ORM 패러다임의 개념 (0) | 2018.09.18 |
MyBatis 란? (0) | 2018.08.16 |