azure
Azure database 와 jdbc 연동 (Intellj)
샐님
2023. 7. 21. 16:42
728x90
반응형
인프런에서 김영한 님은 교육용으로 h2 database 를 사용하시던데 난 나중에 배포용으로 쓰기 위해 좀 더 익숙한 mssql 을 연동해볼려 시도했다.
에러
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user <username>.
디비 연결하는데 계속 오류가 나서 구글해보니 보안문제라는 글이 많길래 시도 해볼려고 했으나 잘 되지않았다. 몇시간 한참뒤지다가
사용할 azure database에 적속해 연결 문자열 -> jdbc를 클릭하고 복사해 dataSource 의 setJdbcUrl 에 파마리터로 넘겨주니 연결이 잘된다.
package hello.dbtest;
import com.zaxxer.hikari.HikariDataSource;
import hello.dbtest.domain.Member;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.JdbcUtils;
import java.sql.*;
import static hello.dbtest.connection.ConnectionConst.*;
@Slf4j
public class DbTest {
HikariDataSource dataSource;
@BeforeEach
void beforeEach() {
//커넥션 풀링
dataSource = new HikariDataSource();
dataSource.setJdbcUrl(연결문자열);
}
@Test
void save() throws SQLException {
String sql = "insert into member(member_id, name) values (?, ?)";
Connection con = null;
PreparedStatement pstmt = null;
try {
con = getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setLong(1, 1);
pstmt.setString(2, "하늘");
pstmt.executeUpdate();
//return member;
} catch (SQLException e) {
log.error("db error", e);
throw e;
} finally {
close(con, pstmt, null);
}
}
private void close(Connection con, Statement stmt, ResultSet rs) {
JdbcUtils.closeResultSet(rs);
JdbcUtils.closeStatement(stmt);
// 주의! 트랜잭션 동기화를 사용하려면 DataSourceUtils를 사용.
DataSourceUtils.releaseConnection(con,dataSource);
// JdbcUtils.closeConnection(con);
}
private Connection getConnection() throws SQLException {
// 주의! 트랜잭션 동기화를 사용하려면 DataSourceUtils 사용해야함. 트랜잭션 동기화에 보관된커넥션을 꺼낸다.
// 트랜잭션 동기화 매니저 : 멀티쓰레드 상황에서 안전하게 커넥션을 동기화 할 수 있게 한다.
Connection con = DataSourceUtils.getConnection(dataSource);
log.info("get connection={}, class={}", con, con.getClass());
return con;
}
}
이로써 이틀간 Azure database 생성하고 jdbc 까지 연동은 끝이 났다!
처음에 데이터베이스 로그인 오류에러났을 때 다른 블로그의 jdbcurl 을 사용했는데 그러지말고 꼭 azure 에서 연결 문자열 을 사용하자.
이거 때문에 엄청 해맷다 ㅜ.ㅠ 간단한것을... ㅜㅜ
728x90
반응형