1. Trang chủ
  2. » Giáo án - Bài giảng

Giới thiệu java và các cơ sở dữ liệu

23 282 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 470 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cùng một lúc, các nhà cung cấp các cơ sở dữ liệu, nh Oracle và Informix,muốn các chơng trình Java applet truy cập vào đợc cơ sở dữ liệu của họthông qua Internet và Intranet, do đó họ đã

Trang 1

JAVA vµ c¸c c¬ së d÷ liÖu

Trang 2

Nội dung

JAVA và các cơ sở dữ

liệu -Nội

dung -Giới thiệu về Java truy cập vào các cơ sở dữ

liệu -Các Java Enterprise

API -

-Sự áp dụng

-Giới thiệu cụ thể về các class của

JDBC -

java.sql.DriverManager -

java.sql.Driver -

java.sql.Connection -

java.sql.Statement -

java.sql.PreparedStatement -

java.sql.CallableSatement -

java.sql.ResultSet -

MetaData -Java RMI và sắp xếp đối tợng (Object

Serialization) -Java

IDL -Nhà cung cấp/ Các giải pháp thành viên thứ

ba -

-Cấu trúc Web Server của

Oracle -Java

cartridge -Các class Java của riêng

Oracle -

Visigenic -Visigenic OpenChannel Client cho

Java -Trình giao tiếp giữa JDBC và ODBC của

Visigenic -Tơng

Trang 3

Giới thiệu về Java truy cập vào các cơ sở dữ liệu

Sau khi gia đời, Java đã đợc hởng ứng một cách nhiệt tình và làn sóng đầutiên về các ứng dụng viết bằng Java Applet đã phát triển rất mạnh mẽ, cácnhà sáng tạo ra Java ở JavaSoft đã bắt đầu nghĩ đến phát triển Java thành mộtplatform theo kiểu khách/chủ (client/server) Các nhà phát triển Internet vàcác nhà t vấn về vấn đề này đã đa ra các khái niệm về Intranet và nhận rarằng Java có rất nhiều điểm thuận lợi trên thị trờng client/server trong có cảcác client không quản lý (zero administration client), phần mềm tập trungcập nhật và quản trị, các phần mềm không có phiên bản và mẫu tập trungvào Web Một trong những tập Java API (một API là một chơng trình ứngdụng giao tiếp - Application Programming Interfaces) quan trọng và cần thiếtnhất là một trình giao tiếp với các cơ sở dữ liệu do đó dữ liệu có thể đ ợc tạo

ra, đợc truy cập đến, đợc chia sẻ, cập nhật và tham chiếu thông qua Internet

và Intranet không có dây nối nh các cơ sở dữ liệu trên các mạng hiện nay

là một phần của bất kỳ một hệ thống Java nào Sau đó có các phần mở rộng chuẩncủa Java nh Java Server API và Java Management API Theo thời gian, rất nhiều trong

số các chuẩn này sẽ trở nên một phần không thể thiếu đợc của ngôn ngữ Java và sẽtrở thành các core API

Cùng một lúc, các nhà cung cấp các cơ sở dữ liệu, nh Oracle và Informix,muốn các chơng trình Java applet truy cập vào đợc cơ sở dữ liệu của họthông qua Internet và Intranet, do đó họ đã bắt đầu xây dựng các các class vàcác method bằng Java để truy cập vào dữ liệu trong các cơ sở dữ liệu của họ

Điều này tạo ra rất nhiều cách truy cập vào các cơ sở dữ liệu từ các chơngtrình ứng dụng viết bằng Java

Trong một cuộc hội thảo về Java (vào tháng 5 năm 1996), hãng Sun đa ramột loạt các Java API hớng trực tiếp đến các ứng dụng theo kiểuclient/server, Internet/Intranet Có rất nhiều các API trong đó có cả các JavaEnterprise API, Java Commerce API, Java Security API và JavaServlet/Jeeves API, tất cả các API này đã nâng ngôn ngữ Java lên một mứcplatform và có mục đích là phát triển các ứng dụng kiểu client/server có thểchạy trên Internet

Phần này đề cập chủ yếu đến các Java enterprise API: JDBC API, RMI(Java Remote Invocation), Object Serialization và hệ thống IDL Trong cácAPI trên đây thì API IDBC là API chính (JDBC tức là Java Database

Trang 4

Connectivity - tức là cơ sở dữ liệu kết nối qua lại), API này đã sớm đợc sửdụng trong rất nhiều các chơng trình Java Hiện tại, việc truy cập vào cơ sởdữ liệu đợc thực hiện bằng 3 cách sau: thông qua JDBC của các Javaenterprise API; các phơng pháp truy cập riêng của các nhà cung cấp cơ sở dữ

liệu; các class kiểu "thành viên thứ ba" (the third-party class), kiểu này đợc

áp dụng đối với rất nhiều cơ sở dữ liệu Các phần tiếp theo sẽ giới thiệu cáccách truy cập vào các cơ sở dữ liệu của các nhà cung cấp và phơng phápthông qua thành viên thứ ba và và sơ qua về phơng pháp JDBC

Các Java Enterprise API

Các Java Enterprise API nhanh chóng trở thành một phần rất có giá trịcủa ngôn ngữ lập trình Java và của mô hình Java máy ảo (Java VirtualMachine) Tất cả các những ngời đợc cấp giấy phép sẽ thực hiên các API này

nh một phần của hệ thống của họ Do đó, Java Enterprise API là các API vặnnăng và không phụ thuộc vào platform (cross-platform; ở đây platform làgồm cả phần cứng và hệ điều hành của máy tính)

Nh đã đề cập trên đây, các Java Enterprise API bao gồm JDBC, RMI,Object Serialization và IDL JDBC là một tập các class truy cập vào cơ sở dữliệu; các RMI API cho phép các chơng trình Java có khả năng gọi cácmethod của các đối tợng (object) với các khoảng tên khác nhau (name-space); các method và các đối tợng của Object Serialization API cho phépmột chơng trình có thể cất giữ (store) và xử lý trực tiếp các đối tợng này,thay vì cất giữ và xử lý nó dới dạng dữ liệu; hệ thống ngôn ngữ định nghĩagiao tiếp IDL (Interface Definition Language) cho phép các chơng trình Javagiao tiếp với nhóm quản lý đối tợng OMG (Object Management Group).Tập các API trên đây cho phép phát triển các ứng dụng ở mức enterprisetheo kiểu client/server dùng các đối tợng, các applet và các servlet của Java

Khái niệm các ứng dụng ở mức enterprise là chỉ hệ thống tiện ích quảng cáo,

việc đặt trớc vé máy bay trong hàng không, các hệ thống quảng cáo bằngcatalog, các hệ thống thị trờng, quảng cáo các sản phẩm và các hệ thống sảnxuất, các hệ thống ngân hàng (từ các máy ATM để cho phép thanh toán vớingân hàng trực tiếp qua một mạng lớn trên phạm vi trong một nớc hay quanhiều nớc), các hệ thống môi giới, vân vân

Tất cả các hệ thống này đều dùng đến một cấu trúc logic ba lớp tier) (cơ sở dữ liệu kiểu đầu cuôi (back-end), lớp các quy định trung gian, lớp

(three-front end chính là lớp giao diện đồ hoạ với ngời sử dụng (GUI - Graphical

User Interface) Mở rộng cấu trúc này, rất nhiều tổ chức đã sử dụng một cấu

trúc gọi là cấu trúc N-Tier (tức là N lớp).

N-Tier logic là gì?

ở đây có lẽ hơi lệch về yếu tố lịch sử một chút Các ứng dụng client/server đ ợc bắt đầuvới một server cơ sở dữ liệu và một client với lớp trình diễn (các menu, các màn hình dữliệu, vân vân ) Các hệ thống truyền thống này có một chơng trình client chứa tất cảcác ứng dụng logic Cấu trúc này sau đó đã đợc sửa đổi thành cấu trúc ba lớp (đã đềcập trên đây), và phần logic business đã đợc tách rời từ client và đợc tạo thành mộtlớp riêng biệt Lớp này hoặc ở phía các client hoặc ở phía server

Trang 5

Cùng với sự phát triển cực nhanh của Internet và các platform nh Java,các hệ thống này đang trải qua một sự tiến hoá Với các chơng trình Javaapplet và các servlet, các nhà phát triển có thể tạo ra các chơng trình Java màcác chơng trình này bao gồm nhiều chức năng (encapsulate function) và dữliệu Các applet này đợc gửi qua mạng (Internet/Intranet) vào một thời điểmthích hợp và khi đến đợc client nó thực hiện các chức năng của nó.

Để có đợc một cái nhìn toàn cảnh về các Java Enterprise API, bạn có thểxem JDBC nh là một component làm cho một cơ sở dữ liệu có thể truy cập

đợc, trong khi đó thì RMI và IDL lại có thể đợc coi là phơng tiện để giaotiếp giữa các platform và các hệ thống

JDBC

JDBC (Java Database Connectivity- Tức là cơ sở dữ liệu liên kết) là cácclass API liên quan đến cơ sở dữ liệu cho các Java applet và các ứng dụng.JDBC đã đợc SunSoft phát triển và là một phần của Java 1.1 JDBC, cũnggiống nh ngôn ngữ lập trình Java, nó cũng không phụ thuộc vào platform vàcơ sở dữ liệu Để có thể chạy đợc JDBC trên một platform, thì Java máy ảophải có một trình quản lý trình điều khiển địa phơng (native driver manager);

đối với các cơ sở dữ liệu cụ thể, trình điều khiển cho cơ sở dữ liệu đó cũngcần thiết

Chú ý:

Việc thiết kế JDBC đã đợc hoàn thiện bởi mức gọi giao tiếp (Call Lavel Interface hayCLI) XOPEN SQL và cơ sở dữ liệu kết nối mở của Microsoft (Microsoft's OpenDatabase Connectivity hay gọi là ODBC) ODBC dựa trên sự truy cập nhóm qua SQL(SQL Access Group hay SAG) CLI Do đó, JDBC và ODBC có cùng một nguồn gốc(common root) iểm căn bản ở đây là đối với những ngời biết và thực hiện đợc ODBCthì JDBC cũng sẽ rất dễ hiểu và áp dụng cũng dễ

Các nhà thiết kế JDBC dùng cách thiết kế là chắt lọc các các khái niệm từODBC Hai nguyên nhận chính dẫn đến sự cải tiến JDBC từ ODBC là:

1 ODBC đợc dùng rất rộng rãi, điều này giúp cho các nhà thiết

kế giảm đợc quá trình nghiên cứu của họ

2 Vì có các sự thực hiện có hiệu quả trên tất cả các platform vàtrên hầu hết các cơ sở dữ liệu Điều này có nghĩa là không cần phảiphát triển các trình điều khiển và các trình giao tiếp mới cho Java;hãng Sun có thể là đối tác với các nhà cung cấp có sản phẩm về ODBC

để có thể thiết lập nhiều các trình điều khiển, các công cụ, và sự ápdụng chúng

Trang 6

không xác định Sau khi bạn nhận đợc con trỏ từ hàm đó, con trỏ đó đó sẽ đợc chuyểnthành một kiểu đặc biệt Các nhà thiết kế Java mong muốn rằng sẽ tránh đ ợc điều này

và các thao tác trên các kiểu con trỏ khác , do đó họ đã thiết kế Java là một ngôn ngữ

có các kiểu trả về rất nghiêm khắc Các method trả về các đối t ợng mà đã đợc biết

tr-ớc Java không hề có con trỏ

Các nhà thiết kế ở JavaSoft thực hiện JDBC bằng những khái niệm rất

trừu tợng từ ODBC, chẳng hạn nh kết nối (Connection) và tập kết quả (ResultSet)

Chú ý:

Các hoạt động thông dụng trên một cơ sở dữ liệu đòi hỏi phải trả về các hàng (rows) vàcác hàng dữ liệu, các cột này bao gồm rất nhiều các cột, hoặc các trờng, đợc gọi là tậpkết quả (ResultSet).

Nhìn vào các đặc điểm của JDBC, chúng rất thành công trong việc cungcấp khả năng truy cập vào cơ sở dữ liệu SQL Đối với JDBC, các thao tác

đơn giản trên cơ sở dữ liệu, chẳng hạn nh hỏi đáp, tạo, cập nhật, có thể đợcthực hiện bằng các method đơn giản Đối với các thao tác phức tạp hơn,chẳng hạn nh các tập kết quả phức tạp và cất các thủ tục các tham số IN vàOUT, JDBC có các lệnh riêng biệt Đối với các chơng trình tự động và cáccông cụ của các nhà thiết kế, JDBC có các class và các method MetaData,các class và các method này cung cấp các thông tin về rất nhiều các đặc

điểm mà cơ sở dữ liệu hỗ trợ, cấu trúc bảng, và các đặc điểm khác

Chú ý:

Khái niệm các stored procedure là các hàm và thủ tục bao gồm các lệnh dựa trên cơ

sở dữ liệu đợc cất trên server cơ sở dữ liệu Khi các chơng trình phía client muốn thực

hiện một hàm thì thay vì phải dùng các lệnh cơ sở dữ liệu, thì chũng gọi các stored procedure iểm thuận lợi của việc gọi này là stored procedure ở trên server, điều

này cho phép tính đồng nhất, vấn đề an ninh và có hiệu quả Cũng giống nh các thử

tục thông thờng, các stored procedure cũng lấy các tham số Các tham số IN đợc truyền cào các stored procedure và chũng không đợc trả lại; Các tham số OUT là các giá trị đợc các stored procedure trả về Khi làm việc với các stored procedure, hệ

thống phải làm việc với các tham số này cũng với bất kỳ một tập kết quả nào(ResultSet)

Các phần sau này sẽ đề cập cụ thể hơn về các class và các method vềJDBC

Trang 7

Sự áp dụng JDBC

JDBC đợc thực hiện giống nh gói (package) java.sql Bạn dùng gói nàybằng cách khai báo import java.sql.* trong các chơng trình Java của bạn.Hình vẽ sau đây mô tả chiến lợc thực hiện JDBC Phần bên dới lớp API làtrình quản lý trình điều khiển JDBC cho rất nhiều loại cơ sở dữ liệu viết cho

sự kết hợp giữa phần cứng và hệ điều hành, điều này là một phần của môhình Java máy ảo Trình quản lý trình điều khiển JDBC có thể đợc viết chomột cơ sở dữ liệu cụ thể nào đó hoặc nó có thể là một trình quản lý trình

điều khiển chung cho nhiều cơ sở dữ liệu Hãng Sun có trình quản lý trình

điều khiển cho các cơ sở dữ liệu chung JDBC và co cả trình quản lý trình

điều khiển cho cơ sở dữ liệu ODBC

Cầu nối JDBC/ODBC (Bridge JDBC/ODBC) là một lớp mỏng bên trênJDBC để hớng các lời gọi đến JDBC xang các lời gọi cho ODBC Trình cầunối này đợc cung cấp miễn phí với JDBC, và đã đợc Intersolv phát triển Cầunối JDBC/ODBC là một lớp rất mỏng bởi vì JDBC rất giống với ODBC vềmặt thiết kế các class và các method ( do vậy không cần một lớp với nhiềuchơng trình để chuyển đổi bởi lẽ bản thân JDBC và ODBC cũng đã có rấtnhiều điểm giống nhau) và JDBC cho phép truy cập vào tất cả các cơ sở dữliệu chính thông qua các trình điều khiển của ODBC Vì JDBC rất gần gũivới ODBC hãng Sun đã làm cho nó trở nên dễ dàng đối với các nhà phát triển

và các nhà cung cấp phần mềm độc lập có thể bắt đầu phát triển các ứngdụng về cơ sở dữ liệu bằng Java Nếu nh họ đã phát triển một trình giao tiếpcơ sở dữ liệu hoàn toàn khác thì sẽ mất rất nhiều thời gian và công sức để cóthể giao tiếp Java với các cơ sở dữ liệu chính

Các nhà cung cấp nh Oracle và Borland có các trình điều khiển cho

JDBC để truy cập trực tiếp vào các cơ sở dữ liệu của họ chẳng hạn nh cơ sở

dữ liệu Oracle 7 của Oracle và Interbase của Borland Các trình điều

khiển này cũng có giá trị tơng tự trong việc phát triển các ứng dụng về cơ sởdữ liệu dùng Java

Nếu ta nhìn sâu hơn một chút về các đặc điểm của JDBC, chúng ta sẽthấy là JDBC có sự lựa chọn và load các trình điều khiển hoàn toàn động,các trình giao tiếp cho các kết nối, các lệnh và các tập kết quả JDBC đợcthực hiện nh một dữ liệu ống trong ngữ cảnh các tập kết quả có chứa cácdòng dữ liệu và cả sự mô tả về các dòng dữ liệu Sự mô tả về các dòng dữ

liệu đợc gọi là tập kết quả MetaData Dùng các method trong java.sql, một

chơng trình có thể yêu cầu loại của tập kết quả chẳng hạn nh các tên của cáccột và các kiểu dữ liệu JDBC đã chuẩn bị các lệnh và các đối tợng lệng cóthể gọi đợc cho các cơ sở dữ liệu địa phơng xử lý dùng các thủ tục đã đợc

biên dịch và các stored procedure.

Trang 8

Hình 1 JDBC Implementation components.

Giới thiệu cụ thể về các class của JDBC

Khi bạn nhìn vào hệ thống cấp bậc của các class JDBC, nh mô tả trênhình dới đây, bạn sẽ thấy các đối tợng đợc đặt trong một cấu trúc tăng dần.Trình quản lý trình điều khiển kết nối với cơ sở dữ liệu và trả về một đối t-ợng kết nối Bạn dùng các method có liên quan đến các lệnh trong một đối t-ợng kết nối đẻe thực hiện các lệnh của SQL, và nó sẽ trả về đối tợng tập kết

Sự áp dụng ODBC

của Sun

Hệ điều hành

Trình điều khiển ODBC

Cầu nối giữa ODBC

server cơ sở dữ liệu

Cơ sở dữ liệu

Trang 9

quả mỗi khi cần thiết Sau đó bạn lấy dữ liệu từ tập kết quả ra bằng từnghàng một và từng cột một.

Hình 2 Cấu trúc phân lớp của class JDBC

Quản lý trình điều khiển

getResultSet() getMoreResult() execute ()

executeQuery()

MetaData

Dữ liệu Dữ liệu executeUpdate()

Lệnh

Kết nối

Lệnh riêng biệt Lệnh có thể gọi đ ợc

Lệnh

Tập kết quả

prepareStatement() prepareCall()

createStatement()

getConnection()

Trang 10

Các loại class chính là implementation, kết nối cơ sở dữ liệu, các lệnh, dữliệu và các lỗi Bảng 1.1 cho biết các loại và các class JDBC cho các loại đó.

Loại Class JDBC

java.sql DriverManager java.sql.DriverPropertyInfo Cơ sở dữ liệu kết nối java.sql.Connection

java.sql.PreparedSatement java.sql.CallableSatement

Bảng 1.1: Các loại Class chính và các Class có liên quan

Khi bạn qua mỗi class, bạn sẽ thực hiện một dự án nhỏ (mini-project) Dự

án nhỏ (mini-project) này là truy cập vào một số ít các trờng trong cơ sở dữliệu ORDERS.MDB nh là một ví dụ với truy cập cơ sở dữ liệu của Microsoft.Hình 3 dới đây mô tả một lợc đồ đơn giản gồm 4 bảng cho hệ thống orderentry

Customer_ID Company_Name Contact_Name Address

Bảng của các khách hàng

Order_ID Company_Name Order_Date Requred_Data Shipped_Date .

Bảng yêu cầu

Order_ID Product_ID Unit_Price Quantity Discount

N

1

Trang 11

Hình 3 Lợc đồ Cơ sở dữ liệu dự án nhỏ về đơn đặt hàng.

Bảng các khách hàng có các chi tiết cụ thể về khách hàng Một kháchhàng có thể có rất nhiều entry trong các bảng đặt hàng Mỗi bảng đặt hàng

có thể rất nhiều dòng; các dòng này đợc cất trong bảng các chi tiết cụ thể về

đặt hàng Mỗi một bảng chi tiết đặt hàng có thể có nhiều nhất một sản phẩm

từ bảng các sản phẩm, nhng một sản phẩm có liên quan đến rất nhiều dòngyêu cầu đặt hàng Trình điều khiển truy cập ODBC trở nên chuẩn đối với sảnphẩm truy cập và rất nhiều sản phẩm khác nh Visual Basic Bạn có thể load

về miễn phí trình điều khiển ODBC 32 bit từ Web site của công tyMicrosoft

Sau đây xin giới thiệu cụ thể về các package trong bảng 1.1 trên đây.

java.sql.DriverManager

Lớp quản lý trình điều khiển theo dõi các trình điều khiển hiện có củaJDBC Có thể có nhiều trình điều khiển trên một hệ thống - hệ thống ở xahay hệ thống địa phơng Trong khi khởi tạo, trình quản lý trình điều khiểnload tất cả các class trong tài sản của hệ thống sql.drivers Các trình điềukhiển có thể đợc thực hiện bởi các method địa phơng viết bằng C/C++, hoặcbằng một chơng trình Java có thể giao tiếp với một cơ sở dữ liệu bằng trìnhgiao tiếp RPC (Remote Procedure Call) hoặc giao tiếp với một server cơ sởdữ liệu đang chờ các kết nối từ phía các client Sự thực hiện và giao tiếp cụthể ra sao là phần việc của các nhà phát triển Thỉnh thoảng mỗi một trình

điều khiển trong khi đợc load lên nên tự register bằng cách dùng method

DriverManager.registerDriver Thời điểm tốt để thực hiện điều này là trong

mã khởi tạo của class tĩnh (static class).

JDBC dùng cú pháp URL (theo mẫu: <subprotocol>: <parameter>) để xác định các kết nối JDBC Trong đó, subprotocol odbc đợc giành cho tên

nguồn dữ liệu kiểu ODBC Một ví dụ JDBC URL nh sau, một ODBC

Testdb có tên ngời sử dụng là Tester1 và mật khẩu là TestPW sẽ có URL là

jdbc : odbc : Tester1; UID=Tester1; PWD=TestPW Trình quản lý trình

điều khiển hớng các trình điều khiển đến các JDBC URL; nói cách khác, nótheo dõi mối quan hệ của trình điều khiển load các class nhờ đó, trình load

Ngày đăng: 11/07/2016, 17:21

HÌNH ẢNH LIÊN QUAN

Hình 2. Cấu trúc phân lớp của class JDBC - Giới thiệu java và các cơ sở dữ liệu
Hình 2. Cấu trúc phân lớp của class JDBC (Trang 9)
Bảng của các khách hàng - Giới thiệu java và các cơ sở dữ liệu
Bảng c ủa các khách hàng (Trang 10)
Bảng 1.1: Các loại Class chính và các Class có liên quan - Giới thiệu java và các cơ sở dữ liệu
Bảng 1.1 Các loại Class chính và các Class có liên quan (Trang 10)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w