JDBC
- Java Database Connectivity
- 데이터베이스와 연결해서 입출력 지원
- 데이터베이스 관리시스템(DBMS) 종류와 상관 없이 사용할 수 있는 클래스와 인터페이스로 구성



- CUD return 값 : 실행된 row의 개수
- R return 값 : 실행된 테이블 형태 (컬럼 + 인스턴스)
JDBC 드라이버(driver)
- 자바에서 데이터베이스에 접속하고 SQL을 실행할 수 있게 해주는 중간 계층 소프트웨어
- 데이터베이스마다 제공하는 드라이버가 다름
- MySQL:
com.mysql.cj.jdbc.Driver
- Oracle:
oracle.jdbc.driver.OracleDriver
- PostgreSQL:
org.postgresql.Driver
- SQLite:
org.sqlite.JDBC
DAO
- Data Access Object
- DB 접근해서 처리하는 클래스
- 하는 일 : Create, Read, Update, Delete(CRUD)
VO
- Value Object
- Data Transfer Object (DTO)
- 입력한 데이터를 DB로 전송하기 위한 데이터를 묶는 가방 역할하는 클래스
- 자바 클래스 객체 처럼 사용하면 됨!

JDBC 핵심 인터페이스/클래스

JDBC 개발 절차

1. DB 드라이버 설정
Class.forName("");
- 드라이버를 메모리에 로딩되면서 등록
- 없으면
ClassNotFoundException 발생
2. DB 연결
Connection con = DriverManager.getConnection(url,user,pw);
- Connection 객체
- url은 연결 문자열
"jdbc:mysql://[host]:[포트]/[db이름]"
3. SQL 문 객체 생성
String sql = "";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.setString(2,pw);
...
4. DB로 보내 실행 / 결과처리
int result = pstmt.executeUpdate();
JDBCUtil
static Connection conn = null;
public static Connection getConnection() {
if(conn != null) return conn;
try {
Properties properties = new Properties();
properties.load(JDBCUtil.class.getResourceAsStream("/application.properties"));
String driver = properties.getProperty("driver");
String url = properties.getProperty("url");
String id = properties.getProperty("id");
String password = properties.getProperty("password");
Class.forName(driver);
try(conn = DriverManager.getConnection(url, id, password)){
}
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
JUnit
- 기능 단위 별 테스트 라이브러리
- gradle 빌드 시스템일 경우 JUnit5가 단위 테스트 라이브러리로 설정됨
- test 폴더에 실제 프로젝트 코드 폴더 양식으로 자동 생성됨
- 테스트 클래스
- 테스트 메서드
- 어노테이션 사용
@
@DisplayName("테스트이름") : 테스트 이름 설정
@Test : 테스트 메서드 지정
주요 어노테이션
@BeforeAll : 전체 테스트 전에 1회 호출, static 메서드
@BeforeEach : 각 테스트 케이스 마다 실행 전에 호출
@AfterEach : 각 테스트 케이스 마다 실행 후에 호출
@AfterAll : 전체 테스트 후에 1회 호출, static 메서드
@Disabled : 테스트에서 제외

Assertions
- 여러가지 static 메서드 제공
- assertEquals(실제값, 기대값) : 실제값과 기대값이 다르면 테스트 실패 -> 예외 발생
@Test
@DisplayName("1+2=3")
public void junitTest(){
int a = 1;
int b = 2;
int sum = 3;
Assertions.assertEquals(a+b,sum);
}
AssertJ
| 메서드 이름 | 설명 |
|---|
isEqualTo(A) | A 값과 같은지 검증 |
isNotEqualTo(A) | A 값과 다른지 검증 |
contains(A) | A 값을 포함하는지 검증 |
doesNotContain(A) | A 값을 포함하지 않는지 검증 |
startsWith(A) | 접두사가 A인지 검증 |
endsWith(A) | 접미사가 A인지 검증 |
isEmpty() | 비어있는 값인지 검증 |
isNotEmpty() | 비어있지 않은 값인지 검증 |
isPositive() | 양수인지 검증 |
isNegative() | 음수인지 검증 |
isGreaterThan(1) | 1보다 큰 값인지 검증 |
isLessThan(1) | 1보다 작은 값인지 검증 |
TDD
- Test-Driven Develop
- 소프트웨어 개발 프로세스에서 테스트 코드 -> 기능 개발
- 주요 과정
- Red 단계(실패 테스트 작성)
- Green 단계 (기능 구현)
- Refactor 단계 (리팩토링)