JDBC
(Java Database Connectivity)
자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API로,
SQL(Structured Query Language)에 접근한다.
JDBC 한 파일에서는 SQL 및 DB연결, Java언어가 모두 존재하기때문에 재사용성이 좋지 않다.
jdbc로 개발하면 코드의 반복이 생긴다. Connection, Statement, PreparedStatement,. close(),...
매번 반복적으로 작성해주어야 할 것들이 많은데, 이런 JDBC 작업들을 간소화 해주는 프레임워크가 MyBatis다.
SPRING JDBC
XML을 이용해 의존성 주입을 한 후 사용
MyBatis
MyBatis는 SQL문이 어플리케이션 소스 코드로부터 분리된다.
또한 JDBC를 통해 수동으로 세팅한 파라미터와 결과 매핑을 대신해주어 JDBC로 처리하는 작업 보다 더 간편하게 작업할 수 있으며, 코드량이 줄어 생산성을 높여준다.
JDBC의 예시 코드
자바 애플리케이션이 데이터베이스 연결이 필요할 때 DriverManager.getConnection() 메소드들 가운데 하나를 사용하여 JDBC 연결을 만들게 된다.
// 자바 SE 7 기점
try (Connection conn = DriverManager.getConnection(
"jdbc:somejdbcvendor:other data needed by some jdbc vendor",
"myLogin",
"myPassword")) {
/* you use the connection here */
} // the VM will take care of closing the connection
// 연결이 확립되면 다음과 같은 문을 작성할 수 있다.
try (
Statement stmt = conn.createStatement()) {
stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) "
);
}
import java.sql.*;
import java.util.Objects;
public class Test_Jdbc {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/sample-service";
String sql = "select * from member";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, "root", "root");
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
// SQL에 정의한 테이블의 각 컬럼에 맞는 get{type}을 사용해야 함.
// 여기서는 int형이어서 getInt
System.out.println(rs.getInt(1) + " " + rs.getString(2));
}
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
} finally {
try { Objects.requireNonNull(rs).close(); } catch (SQLException ex) { ex.printStackTrace(); }
try { Objects.requireNonNull(pstmt).close(); } catch (SQLException ex) { ex.printStackTrace(); }
try { Objects.requireNonNull(con).close(); } catch (SQLException ex) { ex.printStackTrace(); }
}
}
}
매번 DB에 접근하여 SQL문을 동작시킬때마다 위와같은 connection, close.. 과정을 반복하는것은 비효율적이고 번거롭다. 또한 SQL문의 분리도 되지 않는 상태
API란?
Application Programming Interface
API의 존재 이유는 대부분이 비즈니스 로직에 집중을 하기 위함. myBatis를 통해 프로그램 코드로부터 SQL문을 따로 xml파일로 분리시키고 코드의 높은 재생산성과 유지보수의 편리함을 얻어낼 수 있다.
응용 프로그램에서 사용할 수 있도록,운영 체제나프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
https://hyoni-k.tistory.com/70
JDBC와 MyBatis 차이, MyBatis 정의 및 사용
JDBC와 MyBatis 차이 JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는, 즉 자바에서 DB에 연결하기 위해 제공되는 API로서 SQL(Structured Query Language)에 접근한다. JDB..
hyoni-k.tistory.com
https://mybatis.org/mybatis-3/ko/index.html
MyBatis – 마이바티스 3 | 소개
Copyright © 2009–2021MyBatis.org. .
mybatis.org
[Spring boot] JDBC와 Spring JDBC 그리고 MyBatis
지난 포스트에서 MVC 패턴과 Spring Data Rest를 이용해 간단한 REST API 서버를 개발해보는 시간을 가졌었는데요. 그런데, 우리가 여기에서 DB와 연동하기 위해 사용했던 디펜던시가 있었죠. 바로 Spring
blog.neonkid.xyz
'BackEnd > JAVA' 카테고리의 다른 글
[JAVA] model.addAttribute JSON 형태로 넘기기 / JSON으로 받기 (0) | 2021.11.25 |
---|---|
메이븐(Maven)이란? (0) | 2021.10.12 |
[JAVA] Split() 함수로 문자열 자르기 (0) | 2021.07.02 |
[JAVA] [오류] declares multiple JSON fields named / Extends (0) | 2021.05.27 |
[JAVA] super키워드/this 키워드 / super() (0) | 2020.12.15 |