JDBC: 8개의 글
개요 JDBC, DBCP, JNDI 와 datasource, connection pool에 대한 이해 아래 포스팅들이 내용을 정리하는데 큰 도움을 줬다. - https://eongeuni.tistory.com/43 - https://minwan1.github.io/2017/04/08/2017-04-08-Datasource,JdbcTemplate/ Connection과 Connection pool DriverManager.getConnection()은 실제 자바프로그램과 데이터베이스를 네트워크상에서 연결을 해주는 메소드이다. Connection은 네트워크상의 연결 자체를 의미한다. (자바프로그램과 DB사이의 길) 보통 Connection 하나당 트랜잭션 하나를 관리한다. 트랜잭션은 하나 이상의 쿼리에서 동..
스프링 JDBC 프로그래밍 - MyBatis 연동 이 글에서는 Oracle DB 11g를 사용한다고 가정한다. 다른 DB를 사용해도 무방하다. MyBatis - Spring JDBC 프로그래밍을 쉽게 작업할 수 있도록 만든 라이브러리 - Mapper의 역할을 확장하여 쿼리문 작성을 모두 Mapper에서 할 수 있도록 지원한다. 의존성 추가 Spring JDBC, Oracle JDBC 드라이버, Apache Commons DBCP와 MyBatis 라이브러리 의존성을 추가한다. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 org.mybatis mybati..
스프링 JDBC 프로그래밍 - JdbcTemplate Spring Framework는 JDBC 프로그래밍을 위해 JdbcTemplate 클래스를 제공하며 JdbcTemplate 클래스는 손쉽게 DB와 연동할 수 있도록 구현되어 있다. 이 글에서는 Oracle DB 11g를 사용한다고 가정한다. 다른 DB를 사용해도 무방하다. 의존성 추가 Spring JDBC, Oracle JDBC 드라이버, Apache Commons DBCP 라이브러리 의존성을 추가한다. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 Oracle JDBC 드라이버를 관리하는 레파지토리..
IntelliJ로 Gradle 프로젝트 생성하고 DB 연동하기 1. Gradle 프로젝트 만들기 가장 먼저 새 프로젝트를 생성한다. 좌측에서 Gradle을 선택하고 Project SDK에서 사용할 JDK 버전을 선택, 중앙 Additional Libraries and Frameworks에서는 Java만 선택하고 Next를 클릭한다. 프로젝트 이름, 위치, Group Id, Artifact Id를 입력하고 Finish를 클릭한다. IntelliJ Gradle 프로젝트 2. JDBC Driver 의존성 추가 Maven 저장소(https://mvnrepository.com)에서 자신이 사용하는 DBMS의 JDBC 드라이버 의존성 구문을 복사한다. Gradle 탭의 내용을 복사하면 된다. 나는 MySQL 8점대..
1. JDBC 란? Java Database Connectivity 의 약자이다. java에서 DB에 접속할 수 있도록 하는 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 패키지는 java.sql와 javax.sql에 있다. 2. ODBC 와 차이 ODBC는 Open Database Connectivity 의 약자이다. ODBC는 모든 응용 프로그램(프로그래밍 언어 무관)에서 모든 데이터베이스 시스템과 통신하는 데 사용할 수있는 개방형 인터페이스이다. 즉, JDBC가 java만 지원하는 것과 다르게 ODBC는 언어와 독립적이다. 3. JDBC 아키텍처 JDBC 드라이버매니저는 DB에 맞는 드라이버를 load하여 JDBC를 초기화한다. JDBC 드라이버들은 자바 어..
DBCP validationQuery 설정* 참고 사이트: http://linuxism.tistory.com/579 * 참고 사이트: Configuring the High Concurrency JDBC Connection Pool * 참고 사이트: DBCP 설정 정리 에러 메시지 일부분 - is longer than the server configured value of 'wait_timeout'. 원인 - 마지막으로 DB에 커넥션을 맺은후 사용이 없다 보니 데이터 베이스 커넥션이 끝겼다. 해결책 - 특정 시간마다 커넥션을 확인 하는 셋팅을 지정한다. 적용 코드 - MySQLvalidationQuery="select 1" - 오라클의 경우validationQuery="select 1 from dual" ..
tomcat dbcp를 이용하여 검색데이터 추출할 때, mysql 사용. mysql wait_timeout 설정(기본값 28800 , 8시간) 에 의해 커넥션이 연결된 이후 해당 커넥션의 close 없이 8시간이 지나면 해당 커넥션을 종료. ▶issue : 종료된 커넥션을 dbcp의 connection pool 에선 여전히 가지고 있는 상태. 이런 상황에서 DB 관련 프로그램이 호출되면 커넥션 관련 에러가 발생. ▶solution : java에서 DB를 사용하기 전에 해당 connection 이 정상적인지 검사를 하도록 하는 것. 이 옵션이 validationQuery. 와 같이 사용하면 된다. 오라클의 경우 : validationQuery="select 1 from dual" 출처 : blog.hoon..
DB Connection Pool을 사용하다가, 어쩌다가 가끔 커넥션이 끊겨 버리는 오류가 발생하기도 한다. 아래는 Jakarta Commons DBCP 커넥션 풀을 사용하면서 그런 현상이 발생했을 때의 대처 방법이다. 어떤 서버는 소켓이 열린상태로 장시간 아무런 데이터 이동없이 방치될경우 소켓을 강제로 닫아버리는 경우도 있습니다. 보름에 한 번정도 발생한다는 것은 아마도, 보름에 한 번 정도 아무 사용자도 없는 상태가 장시간 계속되었기 때문일 것으로 예상됩니다. DBCP를 사용하시는 것으로 보이는군요. 그렇다면 설정을 통해 손쉽게 해결할 수 있습니다. * DBCP 설정하기 참조 상세 설정은 DBCP를 어떻게 호출하느냐(Spring, 혹은 Tomcat DataSource 설정, 기타 등등)에 따라 전혀 ..