본문으로 바로가기

마이바티스 시작

category 데이터베이스/마이바티스 2018. 12. 30. 20:38

마이바티스 시작

 

마이바티스 개요에서 JDBC코드를 살펴보았습니다. 그리고 마이바티스 구조에 대해서도 배워보았습니다.

 

정리해보면

 

설정파일SQL을 갖는 매퍼, 파라미터, 결과 데이터 이것이 전부라고 할 수 있습니다.

 

이 요소를 가지고 굉장히 짧고도 가독성 좋고 편하게 작성할 수 있다는 것이 마이바티스라는 것입니다.

 

우선 JDBC 코드 데이터베이스 연결 생성 코드 + SQL 연동 코드 + 데이터베이스 자원 해제 코드

 

이렇게 이루어집니다.

 

public class CommentJdbcRepository {

private Connection getConnection() {

try{

 

     Class.forName("com.mysql.jdbc.Driver").newInstance();

}

catch(InstantiationException e)

{
   throw new IllegalStateException (e);

}

catch(IllegalAccessException e)

{
   throw new IllegalStateException (e);

}

catch(ClassNotFoundException e)

{

throw new IllegalStateException (e);

}

 

try{

return DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis_example","mybatis","mybatis");

}catch(SQLException e)

{

throw new IllegalStateException (e);

}

 

public Comment selectCommentByPrimaryKey(Long commentNo)

{

Connection conn=null;

PreparedStatement stmt=null;

ResultSet rs= null;

 

try{

conn=this.getConnection();

...중략

 

}

catch(Exception e)

{

e.printStackTrace();

}

finally{

try{
  rs.close();

}catch(SQLException e)

{}

 try{
    stmt.close();

 }catch(SQLException e)

 {}

 try{
     conn.close();

 }catch(SQLException e)

 {}

}

return null;

}

 

public Integer insertComment(Comment comment)

{   

...

}

 

public Integer updateComment(Comment comment)

{

...

}

 

public Integer deleteComment(Comment comment)

{
    ...

}

 


 

 

 

 

 

JDBC에서 연결 생성 코드(private Connection getConnection() )

 

1.드라이버 클래스명+ 연결 URL 정보 등은 mybatis-config.xml에 설정

2.DriverManager.getConnection() 메소드와 같은 API호출은 마이바티스 제공 객체로 바뀜.(SqlSessionFactory=>SqlSession 객체)

 

또한 SQL사용 데이터베이스 연동 코드는

 

1.SQL은 무조건 마이바티스 매핑 구문으로 만든다.

2.API호출은 마이바티스 API호출로 바뀐다. 즉 이 호출은 SqlSession이 제공하게 되는데 selectOne, selectList, insert, update, delete를 호출 하게 된디ㅏ.

 

마지막으로 자원 해제 작업 코드는

 

1.SqlSession 객체의 close 메소드 호출로 바뀜.

 

아직 감이 안잡힐겁니다.

 

차츰 알아보도록 해요 ㅎㅎ

 

설정 파일은 프레임워크마다 가지게 되는데요.

 

설정파일은 보통 xml 파일 입니다.

 

마이바티스도 xml 설정파일이 있어야합니다.

 

이 설정 파일에서 마이바티스 환경설정을 하게 됩니다.

 

즉 연결 정보와 매퍼의 위치를 지정합니다.

 

설정이 완료돼면 이 객체를 생성해야합니다.

 

생성을 위해서는 properties 파일처럼(모두들 아실겁니다.)

 

파일 파싱 후 로드하는 과정을 거쳐야 합니다.

 

이 과정은 다행히도 마이바티스에서 자동으로 처리해주게 됩니다. ㅎㅎ

 

이제 시작을 하려면 라이브러리를 설치해야겠죠 ??

 

항상 느끼지만 ... 이 개발 환경 구축이 매번 두렵습니다...

 

이를 사용하려면 두 가지 방법이 있습니다. 알고 계신 분도 있을거에요.

 

1.WEB-INF/lib 아래 jar를 넣거나

2.Maven을 사용해 자동으로 받을 수도 있습니다.

 

우선 첫번째 방법으로

 

https://github.com/mybatis/mybatis-3/releases에 접속합니다.

 

알집을 받아 해체합니다.

 

안에 mybats-3.x.x.jar 가 있을겁니다. 이를 WEB-INF/lib에 넣어주심 감사하겠습니다.

 

두 번째 방법으로 메이븐으로 라이브러리 관리하는 건데요.

 

메이븐에서는 pom.xml파일을 사용합니다.

 

메이븐은 사용할 라이브러리를 설정해주면 그 라이브러리가 사용할 다른 라이브러리를 자동으로 체크해서 가져옵니다.

 

복잡한 라이브러리 간의 사용관계를 개발자가 다 알지 않아도 됩니다.

 

pom.xml에 마이바티스를 설정해두면 마이바티스가 사용하는 로깅 관련 라이브러리를 함께 가져와줍니다.

 

우선 간단하게 pom.xml에 groupId 와 artifcatId를 설정해줍시다.

 

<dependancy>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.x.x</version>

</dependancy>

 

 

이제 이클립스로 가서 프로젝트를 생성하자

 

프로젝트 생성 후 프로젝트 속성에 들어가서

 

Java Build Path를 설정해주어야 합니다.

 

여기서 Add External JARs... 에 들어가서

 

아까 받은 jar와 lib 내부에 있는 jar를 모두 추가해줍니다.

 

이제 mybatis-config.xml 파일인 마이바티스 설정 파일 을 보도록 하죠.

 

위에서 말했듯이 설정파일에는 getConnection()메소드를 대체합니다.

 

즉 연결 정보를 대체하는 겁니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "
http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <typeAliases>
  <typeAlias type="ldg.mybatis.model.Comment" alias="Comment" />
 </typeAliases>
 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC" />
   <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example" />
    <property name="username" value="mybatis" />
    <property name="password" value="mybatis" />
   </dataSource>
  </environment>
 </environments>
 <mappers>
  <mapper resource="ldg/mybatis/repository/mapper/CommentMapper.xml" />
 </mappers>
</configuration>

 

위 설정 파일에서 빨간색 부분은 트랜잭션 관리자 라고 불립니다.

 

이 부분은 가장 중요한 부분중에 하나입니다. JDBC 코드를 대체하기 때문에 type을 JDBC로 지정합니다.

 

type에는 또한 Managed라는 것이 있는데 이부분은 뒤에서 배우도록 하겠습니다.

 

파란색 부분은 데이터베이스 설정 부분이라 불립니다.

 

즉 연결 정보를 설정하는거죠. jdbc코드에서 보았던 url class.forName 등등 정보 말입니다.

 

드라이버 클래스명 , JDBC URL, 계정 정보가 필요합니다.

 

초록색 부분은 매퍼 정보 설정이라 불립니다.

 

즉 SQL을 선언해둔 매퍼 xml이나 인터페이스 매퍼 위치를 지정해줍니다.

 

xml 위치는 클래스 패스 기준입니당.

 

두 번째로 마이바티스 객체를 생성 해야합니다.

 

즉 설정파일을 로드하는거죠 ㅎㅎ..

 

private SqlSessionFactory getSqlSessionFactory() {


  String resource = "mybatis-config.xml";


  InputStream inputStream;


  try {


   inputStream = Resources.getResourceAsStream(resource);


  } catch (IOException e) {


   throw new IllegalArgumentException(e);
  }


  return new SqlSessionFactoryBuilder().build(inputStream);
 }

 

 

이 메소드는 마이바티스 API를 이용하여 데이터베이스 정보, 트랜젝션 관리자, 매퍼 정보를 가진 객체를 생성합니다.

 

getSqlSessionFactory()메소드를 이용하여 객체 생성 후 API 호출 하면 된다는 뜻입니다.

 

각종 CRUD를 처리할 때 이 를 이용하게 됩니다.

 

inputStream = Resources.getResourceAsStream(resource);

 

이 부분은 마이바티스 설정 정보 가진 객체를 생성하는 코드입니다.

 

설정 파일 위치를 지정하여 정보 객체 생성합니다.

 

return new SqlSessionFactoryBuilder().build(inputStream);

이 부분은 SqlSessionFactory 객체를 생성합니다.

 

바로 이 객체가!!! 전반적인 정보를 가지며 제어하게 됩니다.

 

따라서 하나만 있어야합니다.

 

이것은 앱 성능에 영향을 끼치게 됩니다..

 

단 여러개를 만들어야 하는 경우도 존재합니다.

 

으 경우는 간단 테스트용!! 아니면 배치 작업 때만 사용하면 됩니다.

 

즉 캐시를 사용하지 않으면 매번 생성하고 캐시를 사용하는 경우는 딱 한번만 생성하여 꺼내다 쓰는 거죠.

 

자. 이제 남은 작업은 SQL 실행하여 데이터를 조회하고 다루는 그러한 작업이 남았습니다.

 

다음 포스팅에서 뵙겠습니다. 감사합니다.

 

 

 

 

'데이터베이스 > 마이바티스' 카테고리의 다른 글

마이바티스 CRUD(수정)  (0) 2019.01.07
마이바티스 CRUD(삽입)  (0) 2019.01.04
마이바티스 CRUD(조회)  (0) 2019.01.03
마이바티스 CRUD(자바모델클래스)  (0) 2019.01.02
마이바티스(Mybatis) 개요  (0) 2018.12.28