|
 |
|
|
|
|
08/03/05 00:18 | Study - Work
|
|
[EJB] Basic Technology
|
|
|
|
삼성 SDS 멀티캠퍼스에서 실시하는 『원샷! 웹 역량 강화(실습)』교육(2008/03/03~2008/03/07)을 정리한 내용입니다. 1. Overview
2. 개발환경
3. Basic Technology
3.1 JNDI
3.2 JDBC
4. Servlet
5. JSP
6. EJB
3.1 JNDI(Java Naming and Directory Interface)
*Naming & Directory Service*
-
| Web Application 은 전체 J2EE Technology의 일부분을 구성하는 기술이며 이 J2EE가 분산환경을 위한 기술이 된다. | -
| 분산 환경은 네트워크로 연결된 수많은 컴퓨터에 분산된 여러 자원들이 하나의 시스템을 구성한다는 이야기가 될 것이고 그런 의미에서 네트워크상에서 어떤 하나의 Application이 필요한 자원을 찾고 획득하는 일은 가장 중요한 일 중 하나가 될 것이다. | -
| 이렇게 분산 컴퓨팅과 엔터프라이즈 컴퓨팅 환경에서의 자원의 획득과 이용의 효율성을 위해 제공되는 서비스가 Naming & Directory Service이다. | -
| Naming & Directory Service는 어떤 Server 혹은 Application 에서 분산환경에 서비스하려는 자원을 이 Naming & Directory Service에 이름값과 실제 자원을 연결하여 등록하면 그 자원을 이용하려는 다른 Application에서 Naming & Directory Service에 접근하여 이름값만을 가지고 자원을 연결하여 이용할 수 있게 하는 개념이다. | | - | ex) DNS 서버 | -
| 분산환경에서 Application을 작성하면서 각각의 자원의 위치에 비 종속적인 프로그램을 작성할 수 있지만, Naming & Directory Service를 제공하는 Server들이 다양하게 존재하므로 각 Vendor에 의해 만들어진 각각의 Naming & Directory Server 에 종속적인 특성을 고려하여 프로그램을 작성해야 한다. 이에 자바에서는 JNDI를 발표하였는데 Naming & Directory Server 를 만드는 Vendor 들이 이 JNDI를 지원해 준다면 Application에서 Naming Server 를 이용하는 Interface가 동일하므로 Naming Server에 비종속적인 코드를 작성할 수 있다. 즉, JNDI가 지원되면 분산환경에서 각각 네트워크상으로 떨어진 수많은 Application이 직접 연결되지 않아도 됨으로 자원의 위치에 상관없이 독립적인 프로그래밍이 가능하다는 이점을 얻어낼 수 있다. |
*Java Application (Web Application) 에서 JNDI를 이용하는 Service*| - | Environment Variable | | Application이 수행되면서 필요한 환경변수를 Container에 등록하고 프로그램에서는 JNDI Service를 통해 프로그램 수행 중에 데이터를 얻을 수 있다. | | - | EJB Bean 호출 | | Web Application이 EJB Bean을 이용하든, 하나의 EJB Bean이 다른 EJB Bean을 이용하든 모든 EJB Bean의 이용은 JNDI를 통하여 해당 EJB에서 Service하는 객체를 얻어야 하며 그렇게 얻어진 객체의 Remote Method Invocation을 통해 EJB Bean을 이용한다. | <| - | Database Connection Pool | | Database를 이용하기 위해 Application에서는 Database와 Connection을 맺어야 하는데 이 Connection을 효율적으로 하기 위해 Connection Pool을 이용한다. 이 Connection Pool을 이용하기 위해 DataSource라는 객체를 JNDI를 통해서 얻는다. | | - | JMS Service | | Java Application 간의 비동기적 Message 송수신을 위해서 JMS Server에서 제공되는 객체를 송신자와 수신자가 각각 이용하는데 이 Queue 혹은 Topic 객ㄱ체를 얻기 위해 JNDI Service가 이용된다. |
3.2 JDBC
JDBC는 Database에 비 종속적인 DBMS프로그램이 가능하게 하는 Sun의 interface이다. JDBC Driver는 각 Database Vendor들이 Database핸들링을 위해 만든 Class의 집합으로써, Database에 따라 각각 다른 JDBC Driver가 이용되지만, 각 Vendor들이 SUN의 스펙에 맞도록 JDBC Driver를 만들었으므로 SUN에서 정의한 SQL Interface만 보고 프로그램을 작성하면 된다.
*JDBC 실행 절차*
| ① | JDBC Driver 로드 | | Class.forName(“oracle.jdbd.driver.OracleDriver”); : 주어진 문자열을 찾아서 로딩한다. 문자열은 이용하는 JDBC Driver의 package와 class 명이다. | | | Driver Name | Example | | JDBC-ODBC Bridge | Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); | | Oracle OCI Driver | Class.forName(“oracle.jdbc.driver.OravleDriver”); | | Oracle Thin Driver | Class.forName(“oracle.jdbc.driver.OravleDriver”); | | MySql Driver | Class.forName(“org.gjt.mm.mysql.Driver”); | | SyBase Driver | Class.forName(“com.sybase.jdbc2.jdbc.SybDriver”); | | Informix Driver | Class.forName(“com.Informix..jdbc.IfxDriver”); |
| | ② | Database 연결 | | con=DriverManager.getConnection(“jdbc:oracle:thin://@70.12.220.35:14521:ora8”,”scott”,”tiger”); 로딩된 driver는 DriverManager에 정보가 등록되며 해당 driver를 이용해서 connection을 시도하는 구문이다. Connection을 위해서 Database의 url, user정보(id, pw)를 넘겨준다. url은 protocla://Ip:port/databasename 형식으로 작성되며 위에서 dbc:oracleL:thin 이 protocol이 된다. DriverManager는 주어진 protocol로 동작할 수 있는 driver를 등록되어 있는 driver중에서 찾으며 해당 driver가 동작해서 Database와 connection을 시도한다. | | | Driver Name | URL | | JDBC-ODBC Bridge | jdbc:odbc:[;=] | | Oracle OCI Driver | jdbc:oracle:oci7:/@ | | Oracle Thin Driver | jdbc:oracle:thin:@:: | | MySql Driver | jdbc:mysql://:/ | | SyBase Driver | jdbc:Sybase:Tds:: | | Informix Driver | Jdb:Informix-sqli:///:INFORMIXSERVER |
| | ③ | Statement 객체 생성 | | Statement stmt = con.createStatement();
Connection이 성공적으로 이루어졌다면 연결된 Database에 전송될 수 있는 SQL문을 지칭하는 Statement 객체를 생성한다. | | ④ | SQL문 실행 | | ResultSet re = stmt.executeQuery(“select * from member); 셍성된 Satement객체를 이용하여 SQL문 실행 select 문 : executeQuery() return value : ResultSet 객체 insert/update/delete 문 : executeUpdate() return value : int (Query 문 실행하였을 때 반영된 row개수) | | ⑤ | 결과이용 | | rs.next() 결과를 표현하는 ResultSet 객체 안에는 Record가 여러 건 일 수 있으므로 next()메서드를 이용하여 하나씩 받아서 처리. next(): 넘겨줄 record가 존재하면 true, 존재하지 않으면 false를 return. rs.getString() : 선택된 Record의 실제 data를 얻어내기 위한 구문. 매개변수로 얻으려는 column명을 써주거나 column의 순서를 써주면 된다. Ex) rs.getString(“id”) -> 선택된 record의 id column에 있는 data를 얻음 rs.getInt(4) -> 선택된 record의 넘어온 값 중에서 4번째 column의 값을 정수형으로 얻으려는 구문. | | ⑥ | 연결 해제 | | con.close() DBMS작업이 끝났으면 Statement 객체와 Connection 객체를 닫아준다. try-catch-finally 구문에서 finally에서 실행할 것!! |
*Connection Pool*
Client 의 요청 때 마다 Connection 작업을 하게 되면 Connection 과정은 일정 시간이 필요한 서버에 부담을 주는 작업이 되며 System 전체적인 Connection에 대한 관리가 힘들어진다. 따라서 DBMS 프로그램에서는 직접 Connection 연결하여 작업하지 않고 Connection Pool을 이용한다.
Connection Pool이란 미리 일정수의 Connection을 만들어 놓고 필요한 Application에 전달하여 이용하는 방법
* DataSource : Connection Pool의 Connection을 관리하는 객체, 필요한 Connection을 획득, 반납
[DB 접속 예제 소스] | Test.java (2.7 KB) |
| | |
 | DBBean.java (966 Byte) |
| | |
|
http://ayarin.cafe24.com/tt/rserver.php?mode=tb&sl=214
|
짧지만 긴 답글!!!
|
[1] ... [6][7][8][9][10][11][12][13][14] ... [191]
<< PREV | NEXT >>
|
 |
|
|
 |
|
 |
|
|
|