Home [TIL] 220507 DB+myBatis 시험공부
Post
Cancel

[TIL] 220507 DB+myBatis 시험공부

myBatis

myBatis는 Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM Framework

  • MyBatis
  • SQL문을 별도의 파일로 분리해서 관리 (.xml)
  • SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 됨
  • 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함 제거
  • 도메인 객체나 VO 객체를 중심으로 개발 가능
  • JAVA, C#, .NET, Ruby 등 다양한 언어로 구현 가능

MyBatis3

MyBatis3 MyBatis3의 주요 Component

파일설명
MyBatis 설정파일
(sqlMapConfig.xml)
데이터베이스의 접속 주소 정보나 객체의 alias, Mappping 파일의 경로 등의 고정된 환경 정보를 설정
SqlSessionFactoryBuilderMyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성
SqlSessionFactorySqlSession을 생성
SqlSession핵심적인 역할을 하는 Class로 SQL 실행이나 Transaction 관리를 실행
SqlSession 오브젝트는 Tread-Safe하지 않으므로 thread마다 필요에 따라 생성
mapping 파일
(member.xml)
SQL 문과 ORMapping을 설정

MyBatis-Spring

MyBatis와 Spring을 연결해주는 역할

MyBatis-Spring MyBatis-Spring의 주요 Component

파일설명
MyBatis 설정파일
(sqlMapConfig.xml)
Dto 객체의 정보를 설정(Alias)
SqlSessionFactoryBeanMyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성
Spring Bean으로 등록해야 함
SqlSessionTemplate핵심적인 역할을 하는 클래스로서 SQL 실행이나 Transaction 관리를 실행
SqlSession interface를 구현하며, Thread-safe함
Spring Bean으로 등록해야 함
mapping 파일
(member.xml)
SQL 문과 ORMapping을 설정
Spring Bean 파일
(beans.xml)
SqlSessionFactoryBean을 Bean에 등록할 때 DataSource 정보와 MyBatis Config 파일 정보, Mapping 파일의 정보를 함께 설정함
SqlSessionTemplate을 Bean으로 등록

Mapper Interface

mapping 파일에 기재된 SQL을 호출하기 위한 Interface

  • packagename + “.” + InterfaceName + “.” + methodNamenamespace + “.” + SQL ID가 되도록 Namespace와 SQL ID를 설정해야 함
  • Namespace 속성에는 package를 포함한 Mapper Interface의 이름을 작성
  • SQL ID에는 mapping하는 method의 이름을 지정
1
2
3
4
5
6
7
<mapper namespace="com.ssafy.guestbook.model.mapper.MemberMapper">
	<select id="idCheck" parameterType="string" resultType="int">
		select count(userid)
		from ssafy_member
		where userid = #{userid}
	</select>
</mapper>


동적 SQL

  • 특정 조건이나 상황에 따라 변경되는 쿼리
  • MyBatis의 강력한 기능 중 하나

  • if : 조건문, where 절의 일부로 포함
1
2
3
4
5
6
7
<select id="findActiveBlogWithTitleLike" parameterType="Blog" resultType="Blog">
  SELECT * FROM BLOG
  WHERE state = ‘ACTIVE’
  <if test="title != null">
    AND title like #{title}
  </if>
</select>
  • choose (when, otherwise) : java의 switch 구문과 유사
  • trim (where, set)
  • foreach

DB

SQL(Structured Query Language)

  • Database에 있는 정보를 사용할 수 있도록 지원하는 언어
  • 모든 DBMS에서 사용 가능

MySQL

기본 SQL 구문

  • insert (C)
1
INSERT INTO table_name VALUES (col_val1, col_val2, ... col_valN);
  • select (R)
1
2
SELECT * | { [ALL | DISTINCT] column | expression [alias], ... }
FROM table_name;
  • update (U)
1
2
3
UPDATE table_name
SET col_name1 = col_val1, col_name2 = col_val2, ..., col_nameN = col_valN
WHERE conditions;
  • delete (D)
1
DELETE from table_name WHERE conditions;


table 제약조건

  • 컬럼에 저장될 데이터의 조건을 설정
  • 제약조건을 설정하면 조건에 위배되는 데이터는 저장 불가
  • 테이블 생성 시 컬럼에 직접 지정하거나, constraint로 지정, 또는 ALTER를 이용하여 설정 가능
제약조건설명
NOT NULL컬럼에 NULL값을 저장할 수 없음
반드시 쿼리문을 이용하여 값을 지정
UNIQUE컬럼에 중복된 값을 지정 불가
NULL값은 허용
PRIMARY KEY컬럼에 중복된 값 저장 불가, NULL 불가
주로 ROW를 구분하기 위한 유일한 값을 지정할 때 사용
‘기본키’
FOREIGN KEY특정 테이블의 PK 컬럼에 저장되어 있는 값만 저장
‘참조키’, ‘외래키’
NULL값 허용
references를 이용하여 어떤 컬럼에 어떤 데이터를 참조하는지 반드시 지정
DEFAULTNULL값이 들어올 경우 기본으로 설정되는 값 지정
CHECK값의 범위나 종류 지정



시험범위
  • myBatis
    • 객체와 메서드
    • 구성파일
    • 태그들과 태그 속성 (sql, selectKey 포함)
    • 동적쿼리 태그
  • 테이블 제약조건
    • PK, FK 설정이유: 데이터의 무결성
    • 제약사항 종류
  • index 특징, view 특징, 사용법
  • Select
    • 실행순서
    • 연산자 (like, in, not in, is null 등)
  • join
    • 종류, 사용방법
  • DDL
    • 종류와 활용
    • create table 테이블명 select ~ from ~
  • 트랜잭션
  • 그룹함수
This post is licensed under CC BY 4.0 by the author.