본문 바로가기
DB

[DB] 서버와 DB가 Connection을 구성하는 방법

by 오렌지마끼야또 2023. 5. 10.
728x90
반응형

 

 

 

 

 

서버와 DB가 Connection을 어떻게 구성하는지 설명해 주세요.

  • 웹 어플리케이션 서버(WAS)와 데이터베이스 간의 연결은 일반적으로 JDBC(Java Database Connectivity) 드라이버를 사용하여 구성된다.
  • JDBC는 자바 언어로 다양한 종류의 관계형 데이터베이스에 접속하고 SQL문을 수행하여 처리하고자 할 때 사용되는 표준 SQL 인터페이스 API이다.
  • DBMS 종류(MySQL, MsSQL, Oracle 등)에 상관 없이 하나의 JDBC API를 사용해서 데이터베이스 작업을 처리할 수 있게 된다.

1. 드라이버 로드

  • DB 종류에 맞는 드라이버를 로드합니다.
  • Class.forName("driver")을 사용해서 Driver Class를 로딩하여 객체를 생성합니다.
  • 생성된 객체는 DriverManager에 등록됩니다.
  • DriverManager 클래스는 로드된 JDBC드라이버를 통해서 Connection을 활성화해주는(만드는) 객체입니다.
  • Oracle JDBC_DRIVER : Class.forName("oracle.jdbc.driver.OracleDriver"); 
  • MSSQL JDBC_DRIVER : Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  • MySQL JDBC_DRIVER : Class.forName("org.git.mm.mysql.Driver"); OR Class.forName("com.mysql.jdbc.Driver");

 

2. 데이터베이스 계정 연결

  • DriverManager.getConnection() 메소드로 Connection 객체 생성해줍니다.
  • DB_URL, DB_ID, DB_PW 을 매개변수로 갖습니다.
  • Connection은 DB와 연결하는 객체입니다.
  • Connection conn = DriverManager.getConnection(DB_URL, ID, PW);
  • Oracle DB_URL = jdbc:oracle:thin:@ip:1521:ORCL
  • MSSQL DB_URL = jdbc:sqlserver:ip:1433;DatabaseName=DB명
  • MySQL DB_URL = jdbc:mysql://ip:3306/DB명

 

3. SQL문 실행을 위한 객체 생성

3.1 파라미터를 입력 받아 동적인 쿼리문을 실행할 경우

  • PreparedStatement pstmt = conn.prepareStatement();

3.2 정적인 쿼리문을 실행할 경우

  • Statement stmt = conn.createStatement();

 

4. SQL문 실행

String SQL = "insert into modell values(?,?,?)";

4.1 executeUpdate()

  • insert, update, delete등 리턴 값이 필요 없는 쿼리문일 때 사용
  • pstmt.executeUpdate(SQL);
  • stmt.executeUpdate(SQL);

4.2 executeQuery()

  • select등 리턴 값이 필요한 쿼리문일 때 사용
  • pstmt.executeQuery(SQL);
  • stmt.executeQuery(SQL);

4.3 쿼리실행 후 값을 받아올 경우

  • ResultSet rs = null;
  • rs = pstmt.executeQuery();
  • 또는
  • rs = stmt.executeQuery();
  • 그 다음
  • while(rs.next()){
  •     String name = rs.getString("name");
  • }
  • rs.next()는 boolean을 리턴하는데 다음 레코드가 존재하면 true를 반환

 

5. DB 연결 해제 (리소스 반납)

  • finally 블럭에서 close()를 이용하여 리소스를 생성한 역순으로 반납
  • conn.close()
  • pstmt.close()
  • stmt.close()

 



https://hsunnystory.tistory.com/160

 

https://cobook.tistory.com/6#--%--Statement%--SQL%EC%BF%BC%EB%A-%AC%--%EC%-B%A-%ED%--%--

 

728x90
반응형

댓글