본문 바로가기
Programing Language/JAVA

Java프로젝트와 MySQL연동

by doriver 2022. 11. 30.

JDBC(Java Database Connectivity)

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
JDBC 클래스는 자바 패키지 java.sql과 javax.sql에 포함되어 있다
JDBC 드라이버들은 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터이다. (서버가 아닌 클라이언트 머신에 설치)

 

https://github.com/doriver/javaProject_mysql_connection

 

GitHub - doriver/javaProject_mysql_connection

Contribute to doriver/javaProject_mysql_connection development by creating an account on GitHub.

github.com

 

1. 단순 Java프로젝트 + mysql-connector-java-8.0.25.jar

단순 Java프로젝트의 buid path( module path )에 mysql-connector-java-8.0.25를 Add External JARs 한경우

( mysql-connector-java-8.0.25.jar에 com.mysql.cj.jdbc.Driver가 들어있다 )

대략적인 과정은 위와 같다

 

DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

this.conn = DriverManager.getConnection( 
	this.url, this.id, this.password );

this.statement = conn.createStatement();

( java.sql 는 기본 JRE System Library에 들어있다 )

java.sql.DriverManager에 mysql jdbc driver를 등록하고

java.sql.Connection 과 java.sql.Statement를 이용해서 DB에 접속하고, 쿼리를 수행할 준비를 한다

( DriverManager -> Connection -> Statement )

 

Statement -> 쿼리 수행 메소드

java.sql.ResultSet 로 select한 결과를 담는다

public ResultSet select(String query) throws SQLException {
	return this.statement.executeQuery(query);
}

 

쿼리 수행 메소드(executeUpdate , executeQuery)의 위치

: 추가한 mysql-connector-java-8.0.25 속 com.mysql.cj.jdbc.StatementImpl에 있음

package com.mysql.cj.jdbc;
public class StatementImpl implements JdbcStatement {
	// 메소드 executeUpdate , executeQuery 여기 있음 
 }

java.sql.Statement와 com.mysql.cj.jdbc.StatementImpl의 연결관계

public abstract interface com.mysql.cj.jdbc.JdbcStatement 
extends java.sql.Statement, com.mysql.cj.Query { ~ ~ }

그래서 java.sql.Statement로 변수 잡아놓고, 함수 사용해도 이상 없었음

 

java.sql.SQLException로 예외처리를 해줌

 

( 자주 등장하는 패키지 : java.sql , com.mysql.cj.jdbc )

 

2. 단순 Java프로젝트 + mysql-connector-java-8.0.25.jar + mybatis-3.5.0.jar

대략적인 과정은 위와 같다

 

config.xml에는
dataSource property로 driver, url, username, password가 담김

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

mapper resource에 sql이 담긴 xml파일 경로가 담김

org.apache.ibatis.io.Resources로 config.xml를 java.io.Reader에 담는다

Reader reader = Resources.getResourceAsReader("config/config.xml");


위에서 만든거를 org.apache.ibatis.session.SqlSessionFactoryBuilder로 build해서 org.apache.ibatis.session.SqlSessionFactory로 만든다

sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);


만든SqlSessionFactory로 org.apache.ibatis.session.SqlSession을 만듦

SqlSession session = sqlSessionFactory.openSession();

   
SqlSession이걸로 insert, delete, selectList, update, selectOne 등 메소드들 사용

id = session.insert("BB.insert", book);
                     ---------
                     namespace.id

sql담긴 xml파일은 아래와 같은 코드를 가지고 있다
<mapper namespace="BB">
	<insert id="insert" parameterType="Book">
		~~
	</insert>
</mapper>

 

SqlSession을 상속받은 클래스DefaultSqlSession에 해당 메소드들이 있는듯

package org.apache.ibatis.session.defaults;
public class DefaultSqlSession implements SqlSession { 
 // 여기에 insert, delete, selectList, update, selectOne 등 메소드 있는듯
}

 

 

'Programing Language > JAVA' 카테고리의 다른 글

java - mybatis 에서의 삽질  (0) 2023.05.11
OpenJDK Platform binary  (1) 2023.03.30
스크립트 언어와 컴파일 언어  (0) 2022.11.24
내가 정리하는 Java , 첫번째  (0) 2022.11.13
서블릿(Servlet)  (0) 2022.10.24