인덱스 --> where절에 걸리는 컬럼(인덱스o)이 데이터 15%이내에 사용
예시
-> CREATE INDEX nickname_idx ON member_tb ( nickname );
uk를 걸면 인덱스 설정됨.
package db;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnection {
public static Connection getInstance(){
//MYSQL 연결 정보
String url = "jdbc:mysql://127.0.0.1:3306/metadb";
String username = "root";
String password = "2ckgkqrur@";
try {
// Class.forName -> 클래스 내의 스태틱 블록 실행.
Class.forName("com.mysql.cj.jdbc.Driver");
//커넥션 -> 프로토콜이 적용된 소켓
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println("DB assdf");
return connection;
} catch (Exception e) {
System.out.println("DB erasdf :" + e.getMessage());
}
return null;
}
public static void main(String[] args) {
getInstance();
}
}
드라이버 찾는법
2.두번째 방법
Class.forName
클래스를 메모리에 로드하는 역할
스태틱 변수, 스태틱 메서드, 스태틱 블록이 메모리에 로드된다.
Account, Transaction 만들기
SQL 테이블을 자바 클래스로 만든다.
--> Model 이라는 패키지를 만들어, SQL 테이블 상의 컬럼들을 변수로 대치한다.
+ getter, setter, AllargsConstructor 세팅
AccountInsert, AccountUpdate, AccountDelete 클래스를 만들어보고 실습한 후,
AccountDao의 각 메서드로 삽입한다.
AccountInsert
AccountUpdate
AccountDelete
String Builder로 쿼리문 만들기
빨간 네모박스안에 내용 sql.toString() 으로 바꿔주기 (원래는 sql)
package practice;
import db.DBConnection;
import model.Account;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class AccountSelectOne {
public static void main(String[] args) {
Account account = null;
Connection conn = DBConnection.getInstance();
try {
String sql = "select * from account_tb where account_number = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setInt(1, 2222);
ResultSet rs = statement.executeQuery();
//커서 내리기 -rs.next()
// if문 -> pk라서 사용, 데이터가 여러개면 while문 사용
if(rs.next()){
account = new Account(
rs.getInt("account_number"),
rs.getString("account_password"),
rs.getInt("account_balance"),
rs.getTimestamp("account_created_at")
);
}
System.out.println("계좌번호 : " + account.getAccountNumber());
System.out.println("계좌비번 : " + account.getAccountPassword());
System.out.println("계좌잔액 : " + account.getAccountBalance());
System.out.println("계좌생성일 : " + account.getAccountCreatedAt());
}catch (Exception e){
e.printStackTrace();
}
}
}
resultset 은 아래 사진을 나타냄