이거 연결하는데 이것저것 오류가 많이 발생했다....
연결하기 전 해야 할 것!!!
1. tibero를 설치한다.
- tibero는 tmax사이트에서 받을 수 있다. [설치 링크]
- 다운로드할 때 회원가입을 해야 하고 데모 라이선스를 신청하여 사용할 수 있다.
Spring Boot 설정
1. application.properties
에 db정보 입력
spring.datasource.url=jdbc:tibero:thin:@127.0.0.1:8629:tibero
spring.datasource.driver-class-name=com.tmax.tibero.jdbc.TbDriver
spring.datasource.username=test
spring.datasource.password=test00
- username과 password는 티베로 설치 후 설정하면 된다.
- 추가 설명을 하자면 티베로는 오라클과 sql문법의 비슷하다
2. tibero6-jdbc-14.jar파일 추가
티베로는 jdbc를 따로 등록해주어야 한다.
티베로 설치경로에 들어가서 C:\TmaxData\tibero6\client\lib\jar
로 들어가면 tibero6-jdbc-14.jar
파일이 있다.
tibero6-jdbc
란 파일도 있는데
여기에 들어가면 두 개의 차이점을 알 수 있다.
3. pom.xml에 추가
pom.xml
에 tibero6-jdbc-14
를 추가하고 복사한 파일을 spring boot 프로젝트에 붙여 넣기 한다.
다른 기타 의존성 정보도 추가해준다.
의존성을 추가할 때는 해당 버전이 호환이 되는지 확인을 하고 추가해야 한다.
pom.xml
...
<!-- tibero 6 -->
<dependency>
<groupId>tibero6</groupId>
<artifactId>tibero6-custom</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/target/tibero/tibero6.jar</systemPath>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-autoconfigure</artifactId>
<version>1.3.2</version>
</dependency>
...
- 파일은 프로젝트에
target/tibero
에 넣고 이름을 바꿔서 넣었다. - jar파일 이름은 상관없는 것 같다.
${project.basedir}
는 환경변수인데 절대 경로보다는 유연하게 할 수 있다.
4. Database config 클래스 생성
package com.example.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")//위에 application.properties에 앞부분
public DataSource firstDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public SqlSessionFactory firstSqlSessionFactory(DataSource firstDataSource, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(firstDataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:mapper/*.xml"));//xml파일의 위치, src/main/resources아래에 위치
return sqlSessionFactoryBean.getObject();
}
/**
* DAO 클래스에서 사용한다.
**/
@Bean
public SqlSessionTemplate firstSqlSessionTemplate(SqlSessionFactory firstSqlSessionFactory) throws Exception {
return new SqlSessionTemplate(firstSqlSessionFactory);
}
}
5. mapper.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="mapper.ExampleMapper">
<select id="getCurrentDateTime" resultType="java.lang.String">
SELECT SYSDATE FROM DUAL
</select>
</mapper>
간단하게 시간을 나타내는 쿼리문이다.
6. DAO클래스를 만든다
package com.example.common.database.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import org.springframework.util.Assert;
@Repository
public class CommonDAO {
@Autowired
@Qualifier("firstSqlSessionTemplate")//config파일의 sqlsession 매소드 이름
private SqlSession sqlSession;
public String getCurrentDataTime() {
return sqlSession.selectOne("mapper.ExampleMapper.getCurrentDateTime");
}
public Object selectObject(String mapperId) throws Exception {
return this.sqlSession.selectOne(mapperId);
}
public Object selectObject(String mapperId, Object parameter) throws Exception {
return this.sqlSession.selectOne(mapperId, parameter);
}
}
sqlSession
을 사용해서 맵퍼에 있는 sql문을 실행한다.getCurrentDataTime
처럼 직접 넣을 수도 있지만 아래selectObject
처럼 만들어서service
에서 사용할 수 있다.
이상태에서 실행하면 실행이 되는 걸 볼 수 있다.
'Backend > Spring' 카테고리의 다른 글
Spring Bean 설정 방법 (0) | 2021.08.29 |
---|---|
스프링 빈(Bean) (0) | 2021.08.20 |
빈 스코프(Bean Scope) (0) | 2021.08.20 |
[Spring security password Encoding] Spring boot 패스워드 간단 암호화 (0) | 2021.05.23 |
[Spring boot] 스프링 부트 기본 설정 및 프로젝트 구성 / template 프로젝트 만들기 (0) | 2021.05.06 |