JAVA
package ch6;
public class Singleton {
// 접근제한 / 정적 / 형 / 필드 / 개체생성 /개체명
private static Singleton singleton = new Singleton();
// 접근제한 / 생성자
private Singleton() {}
// 접근제한 / 정적 / 리턴형 / 메소드
private static Singleton getInstance() {
return singleton;
}
}
필드에 사용하는 구문의 기본 형식이다.
각 항목별로 무엇을 사용하는지 복습하고 이해하자.
package ch6;
public interface PrintI {
// 오버로딩 : 메소드를 만들고 매개변수의 형이 다른 것
// 객체를 생성하여 호출하는 형태
void println(int i);
void println(boolean i);
void println(double i);
void println(String i);
}
package ch6;
public class Printer implements PrintI{
// 오버 라이딩 : 재정의(추상 메소드를 가져와 재정의하는 것)
// 메소드 : 명령어의 집합
@Override
public void println(int i) {
System.out.println(i);
}
@Override
public void println(boolean i) {
System.out.println(i);
}
@Override
public void println(double i) {
System.out.println(i);
}
@Override
public void println(String i) {
System.out.println(i);
}
// 객체를 생성하지 않고 호출하는 형태
static void println(int i) {
System.out.print(i);
}
static void println(boolean i) {
System.out.print(i);
}
static void println(double i) {
System.out.print(i);
}
static void println(String i) {
System.out.print(i);
}
}
오버로딩과 오버라이딩의 차이점과 개념을 이해하자.
오버로딩은 인터페이스에서 작성된 이름이 같은 메소드나 생성자들을 정의하는 것.
오버 라이딩은 상속 관계에 있는 부모 클래스의 메소드를 자식 클래스(implement로 불러온 클래스)에서 재정의하는 것.
객체를 생성하여 호출하는 것과 생성하지 않고 호출하는 차이점은 정적 메소드의 사용유무이다.
// 매소드
Class.forName("oracle.jdbc.OracleDriver");
클라이언트 프로그램을 DB와 연결하기위해 가장 먼저 JDBC Driver를 메모리로 로딩해야 한다.
package board;
import java.sql.*;
public class DBConnection {
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@//localhost:1521/xe";
String userId = "system";
String pass = "1234";
private static DBConnection db = new DBConnection();
private DBConnection() { }
public static DBConnection getInstance() {
return db;
}
public Connection getConnection() {
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(url, userId, pass);
System.out.println("접속성공:" + con);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
public void close1(PreparedStatement stmt, Connection con) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close2(ResultSet rs, PreparedStatement stmt, Connection con) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
해당 코드로 사용하는 DB를 연결하여 사용할 수 있다.
package board;
// java.sql 패키지의 모든 클래스를 사용 선언
import java.sql.*;
public abstract class TestMain0526 {
public static void main(String[] args) {
DBConnection dbConn = null;
Connection conn = null;
PreparedStatement pstmt = null;
try {
// DB 커넥션
dbConn = DBConnection.getInstance();
// 연결 확인
dbConn.getConnection();
conn = dbConn.getConnection();
// 쿼리문
String SQL = "insert into board(idx, title, name) values('1', '오라클 연습', '가제트')";
pstmt = conn.prepareStatement(SQL);
// 쿼리 실행
// insert delete update 사용은 Update
pstmt.executeUpdate();
// select 사용은 Query
// pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}finally {
dbConn.close1(pstmt, conn);
}
}
}
해당 패키지의 모든 클래스를 사용선언한 뒤
DB 연결, 쿼리문 작성, 쿼리문 실행, 종료 방식의 형식을 가진다.