application.properties 기존 H2 DB 연결 정보 >> postgreSQL
#postgreSQL
spring.datasource.url=jdbc:postgresql://{url}:{port}/{sid}
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username={username}
spring.datasource.password={password}
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
MyBatis 연동
1. sqlSession과 Mapper 연동을 위해 Application.java에 빈을 등록
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource ds) throws Exception {
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(ds);
factory.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath:/mappers/*_SQL.xml") // A
);
return factory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory factory) {
return new SqlSessionTemplate(factory);
}
2. Mapper interface 생성
package com.jt.lotto.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface LottoMapper {
public List<Map<String, String>> findAll();
}
2. A 경로에 SQL 등록
/resources/mappers/Lotto_SQL.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jt.lotto.mapper.LottoMapper">
<select id="findAll" resultType="HashMap">
select * from lotto
</select>
</mapper>
3. 사용
@resource
public LottoMapper mapper;
public void test() {
Object result = mapper.findAll();
}
참 쉽죠?
문득 설정하다보니 mapper와 dao의 궁극적인 차이가 뭔지 싶다.
일하면서는 단순히 dao 쪽이 코딩할 게 (대체로 보일러플레이트 코드) 많아 번거로운 정도로만 인식했는데
dao는 어쨌든 개발자가 의도적으로 sql 실행을 위한 sqlSession 생성 시점에 접근할 수 있으니
사용 목적은 같더라도 어떤 시점에서는 구분해서 사용해야 하는 게 아닐까 하는 생각도 들고.
참고 URL: http://iotsw.tistory.com/77
'Spring Boot' 카테고리의 다른 글
Spring Boot 웹페이지 만들기 & H2 DB 연결 (1) | 2017.08.05 |
---|---|
Spring Boot 시작하기 (0) | 2017.08.05 |
WRITTEN BY
-
Project JT
2명의 개발자가 팀 프로젝트를하며 사용한 기술들을 남기는 팀 블로그입니다.