Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 5: Phát triển các ứng dụng Java với dữ liệu XML của DB2 ppt

49 332 0
Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 5: Phát triển các ứng dụng Java với dữ liệu XML của DB2 ppt

Đ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

Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 5: Phát triển các ứng dụng Java với dữ liệu XML của DB2 Cynthia M. Saracco, Kiến trúc giải pháp cao cấp, IBM Tóm tắt: DB2 phiên bản V9 của IBM cho Linux, UNIX và Windows mô tả sự hỗ trợ mới quan trọng để lưu trữ, quản lý và truy vấn dữ liệu XML. Trong loạt bài này, bạn sẽ tìm hiểu những vấn đề cơ bản về cách viết các ứng dụng Java truy cập dữ liệu XML mới. Bạn sẽ thấy cách chèn, truy vấn, cập nhật và xóa dữ liệu XML, cách tạo các thủ tục được lưu trữ để truy cập dữ liệu XML và còn nhiều hơn nữa. Lưu ý: Bài viết này đã được cập nhật để theo kịp với các thay đổi trong DB2 phiên bản 9.5 và 9.7 cho Linux, UNIX và Windows. Trong bài này, chúng ta sẽ đi qua một vài kịch bản lập trình phổ biến, chẳng hạn như chèn dữ liệu XML, truy vấn dữ liệu XML và dữ liệu không-XML, cập nhật dữ liệu XML, xóa dữ liệu XML và tạo các thủ tục được lưu trữ để truy cập dữ liệu XML. Nhưng trước tiên, chúng ta hãy xem một số hướng dẫn cơ bản để phát triển bất kỳ loại ứng dụng cơ sở dữ liệu DB2 nào. Làm theo "các bài thực hành tốt nhất" về lập trình điển hình Mặc dù sự hỗ trợ XML nguyên gốc của DB2 là cơ sở dữ liệu mới là tốt thì các bài thực hành lập trình ứng dụng vẫn chưa thay đổi. Trước khi đi sâu vào các chi tiết về công nghệ XML của DB2, hãy nhớ các nguyên tắc chung sau:  Chỉ yêu cầu những gì bạn cần: Không lấy toàn bộ nội dung của một bảng hoặc toàn bộ nội dung của nhiều tài liệu XML khi bạn chỉ cần một tập con của các thông tin này. Bạn sẽ chỉ làm tăng chi phí xử lý và làm chậm hiệu năng thời gian chạy.  Tránh lặp lại công việc của máy chủ cơ sở dữ liệu: Ra lệnh cho DB2 lọc và xử lý dữ liệu theo các yêu cầu của bạn thay vì thực hiện công việc này trong ứng dụng của bạn. Ví dụ, nếu bạn có DB2 trả về các kết quả theo một thứ tự nhất định, bạn sẽ không cần sắp xếp dữ liệu cho mình. Tương tự, nếu bạn có DB2 đảm bảo chỉ trả về các kết quả khác nhau, bạn sẽ không phải kiểm tra lại các bản sao. Chính máy chủ dữ liệu chứ không phải ứng dụng của bạn thực hiện tốt nhất việc xử lý tập trung dữ liệu.  Làm cho mã của bạn dễ bảo trì: Bao gồm các ý kiến hoặc Javadoc trong mã của bạn, đặc biệt nếu ứng dụng của bạn có chứa các truy vấn phức tạp.  Hãy xem xét cẩn thận phạm vi giao dịch của bạn: Theo mặc định, JDBC xử lý từng truy vấn như là một giao dịch độc lập. Xác định xem điều này có phù hợp với nhu cầu của bạn không và cũng xem xét phạm vi (và mức cô lập) mà bạn định nghĩa cho các giao dịch của bạn có thể tác động đến toàn bộ các yêu cầu đồng thời như thế nào.  Giảm thiểu lưu lượng trong các môi trường có nối mạng: Bạn sẽ có được hiệu năng thời gian chạy tốt hơn nếu bạn tránh truyền dữ liệu không cần thiết giữa các ứng dụng của bạn và DB2. Chỉ lấy dữ liệu mà bạn cần là một cách để làm điều này. Gọi các thủ tục được lưu trữ của cơ sở dữ liệu cũng có thể hỗ trợ, tùy theo tính chất công việc của bạn. Cấu hình môi trường của bạn DB2 không đòi hỏi bất kỳ cấu hình đặc biệt nào để cho phép bạn phát triển hoặc chạy các ứng dụng Java làm việc với dữ liệu XML. Thật vậy, bạn có thể viết, thử nghiệm và gỡ lỗi các chương trình Java của mình khi sử dụng môi trường phát triển tích hợp (IDE) theo sự lựa chọn của bạn hoặc khi làm việc trực tiếp với một Java Developer Kit (JDK-Bộ dung cụ của các nhà phát triển Java có hỗ trợ) từ dòng lệnh. Các ví dụ trong bài viết này sử dụng IBM Data Studio (hoặc Optim Development Studio) cho môi trường phát triển của nó. Phần này bàn về cách cấu hình Data Studio, xem lại một số dữ liệu mẫu và tìm hiểu các tham số cấu hình cơ sở dữ liệu mà bạn có thể quan tâm đến. IBM Data Studio Data Studio của IBM dựa trên nền tảng Eclipse 3.4, một dự án nguồn mở có sẵn để tải về miễn phí. Để biên dịch và chạy bất kỳ ứng dụng XML của DB2 nào với bàn làm việc này, bạn cần tạo một dự án và bao gồm các thư viện DB2 phù hợp trong đường dẫn xây dựng của dự án, bao gồm cả các thư viện hỗ trợ trình điều khiển tuân theo JDBC 4.0 của DB2. Để cấu hình môi trường của bạn, hãy hoàn thành các bước sau: 1. Khởi chạy Data Studio. 2. Tạo một dự án mới. Đầu tiên chúng ta sẽ sử dụng một dự án đơn giản. Chuyển sang phối cảnh Java (Window > Open Perspective > Java) và chọn File > New > Java Project (Dự án Java). Làm theo các trình thủ thuật để chỉ rõ tên của dự án. Với các mục khác, hãy giữ lại các thiết lập mặc định. 3. Thêm các thư viện DB2 vào đường dẫn xây dựng dự án của bạn. Chọn dự án của bạn, nhấn chuột phải và chọn Properties (Các đặc tính). Chọn Java Build Path (Đường dẫn xây dựng Java), và nhấn vào thẻ Libraries (Các thư viện). Thêm các tệp .jar bên ngoài phù hợp của DB2, như db2jcc.jar, db2jcc_javax.jar, and db2jcc_license_cu.jar. 4. Theo tùy chọn, tạo ra một gói cho ứng dụng của bạn. Chọn dự án của bạn, nhấn chuột phải và chọn New > Package. Để biết chi tiết về việc tạo các dự án và các gói, hãy tham khảo thông tin trợ giúp trực tuyến. Dữ liệu mẫu Các ví dụ trong bài viết này làm việc với bảng "clients" (Các khách hàng) đã tạo ra trong bài "Hãy khởi đầu nhanh chóng với DB2 9, Phần 2" (developerWorks, 03.2006). Để giúp xem lại nhanh chóng, bảng này được định nghĩa như là: Liệt kê 1. Liệt kê mã mẫu với chiều rộng tối đa create table clients( id int primary key not null, name varchar(50), status varchar(10), contactinfo xml ) Liệt kê 2 mô tả một tệp XML mẫu sẽ được chèn ngay vào cột "contactinfo" của bảng này. Liệt kê 2. Một tệp XML mẫu được chèn vào bảng "clients" <?xml version="1.0"?> <Client> <Address> <street>54 Moorpark Ave.</street> <city>San Jose</city> <state>CA</state> <zip>95110</zip> </Address> <phone> <work>4084630110</work> <home>4081114444</home> <cell>4082223333</cell> </phone> <fax>4087776688</fax> <email>sailer555@yahoo.com</email> </Client> Các tham số cấu hình cơ sở dữ liệu Các ví dụ trong hướng dẫn này đơn giản và hoạt động với một lượng nhỏ dữ liệu XML, vì vậy bạn không cần thay đổi các tham số cấu hình cơ sở dữ liệu mặc định để làm cho chúng chạy. Tuy nhiên, các giá trị mặc định có thể không đủ cho một số môi trường sản xuất. Cụ thể là, các giá trị thiết lập về kích thước bản ghi, vùng lưu trữ đặc biệt (heap) của câu lệnh truy vấn của Java và vùng lưu trữ đặc biệt của ứng dụng có thể cần được tăng thêm. Nếu các giá trị này được thiết lập không phù hợp, hiệu năng thời gian chạy của bạn có thể chậm hoặc bạn có thể không có khả năng chèn các tài liệu XML lớn vào các bảng của DB2 do không đủ không gian ghi nhật ký. Bạn có thể xem lại và thay đổi các tham số cấu hình cơ sở dữ liệu DB2 từ DB2 Control Center (Trung tâm điều khiển của DB2) (chọn Tools > Configuration Assistant) hoặc bộ xử lý dòng lệnh DB2. Hãy tham khảo hướng dẫn sử dụng sản phẩm để biết các chi tiết. Kết nối tới cơ sở dữ liệu của bạn Làm việc với dữ liệu XML của DB2 đòi hỏi thiết lập một kết nối đến cơ sở dữ liệu chứa dữ liệu của bạn. Không có gì đặc biệt về đoạn mã này - nó giống như logic mà bạn đã viết để kết nối với bất kỳ cơ sở dữ liệu DB2 nào. Liệt kê 3 có một lớp trình trợ giúp (helper) với các phương thức để thiết lập và đóng một kết nối cơ sở dữ liệu DB2. Liệt kê 3. Lớp trình trợ giúp để thu nhận và phát hành các kết nối cơ sở dữ liệu public class Conn { // for simplicity, I've hard-coded account and URL data. private static String user = "user1"; private static String pwd = "mypassword"; private static String url = "jdbc:db2:test"; // this method gets a database connection public static Connection getConn(){ Connection conn=null; // load the appropriate DB2 driver and // get a connection to the "test" database try { Class.forName("com.ibm.db2.jcc.DB2Driver"); conn = DriverManager.getConnection(url, user, pwd); . . . } catch (Exception e) { e.printStackTrace(); } return conn; } // end getConn(); // this method closes a database connection public static void closeConn(Connection conn){ try { if(conn == null) { return; } conn.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { conn.close(); } catch (Exception e) { } } } // end closeConn(); } // end class Bạn sẽ gọi những phương thức này trong các ứng dụng thực hiện các nhiệm vụ lớn hơn, chẳng hạn như chèn và truy vấn dữ liệu XML. Chèn dữ liệu XML Vì đặc tả XQuery ban đầu đã không xử lý các hoạt động viết vào cơ sở dữ liệu (như chèn dữ liệu), DB2 dựa vào các câu lệnh INSERT quen thuộc của SQL để cho phép các lập trình viên viết dữ liệu XML mới vào các bảng có chứa các cột XML. DB2 có thể lưu trữ bất kỳ tài liệu XML đúng định dạng nào lên đến 2GB. Thông thường, các lập trình viên Java cần chèn dữ liệu XML đã chứa trong các tệp vào DB2, mặc dù nó cũng có thể chèn dữ liệu XML từ các chuỗi ký tự, từ dữ liệu nhị phân (bao gồm cả các đối tượng lớn) và từ các câu lệnh chọn ở dưới của SQL. Ở đây cần cân nhắc về cách chèn dữ liệu XML từ các tệp và từ chuỗi ký tự đơn giản. Hãy tham khảo hướng dẫn sử dụng DB2 9 để biết chi tiết về các kịch bản chèn khác. DB2 9 cũng cho phép bạn chèn các tài liệu XML có hoặc không xác nhận hợp lệ chúng dựa vào các lược đồ XML đã đăng ký trước. Các mẫu trong bài viết này trình bày cả hai cách tiếp cận. Chèn tệp không xác nhận hợp lệ Phương thức insertFile() trong Liệt kê 4 minh họa cách chèn dữ liệu từ một tệp XML vào cột "clients.contactinfo". Phương thức này bắt đầu bằng cách định nghĩa một số biến để sử dụng sau. Ba biến đầu tiên tương ứng với các cột mã định danh ID, tên và trạng thái trong bảng "clients". Biến thứ tư là tên của tệp XML được chèn vào cột "contactinfo". Để cho đơn giản, các giá trị đã được mã hóa cứng trong phương thức này; trong một môi trường sản xuất, sẽ thu được các giá trị đầu vào khác nhau. Sau khi thiết lập một kết nối cơ sở dữ liệu, hãy tạo một chuỗi đơn giản cho câu lệnh INSERT của bạn. Như bạn thấy, nó trông giống như bất kỳ câu lệnh INSERT khác của DB2 và sử dụng các dấu tham số cho bốn giá trị cột đầu vào của bạn. Câu lệnh INSERT được chuẩn bị như thường lệ và bốn dấu tham số của nó được thiết lập. Để thiết lập dấu tham số cho cột XML, hãy mở một FileInputStream, chuyển vào vị trí của tệp XML của chúng ta. Ngoài ra hãy lấy chiều dài của tệp này và sử dụng thông tin này làm đầu vào cho phương thức setBinaryStream(). Cuối cùng, thực hiện câu lệnh, kiểm tra các lỗi và đóng kết nối. Liệt kê 4. Chèn dữ liệu XML từ một tệp public static void insertFile(){ [...]... phần trước đã minh họa cách bạn có thể nhúng XQueries trong SQL (ví dụ, khi sử dụng các hàm XMLQuery và XMLExists để kết hợp các dấu tham số Phần này tìm hiểu những gì bạn có thể làm với XQuery thuần túy trong các ứng dụng Java của bạn Ví dụ sau đây chứa một XQuery tương tự như một XQuery đã trình bày trong bài "Hãy khởi đầu nhanh chóng với DB2 9, Phần 4: Truy vấn dữ liệu DB2 XML bằng XQuery" (developerWorks,... XML, khi thực hiện bạn không cần kết hợp các dấu tham số trong XQuery của bạn Phần sau trong bài viết này, bạn sẽ thấy một đoạn trích Java, sử dụng XQuery để lấy dữ liệu XML Lấy các phần của các tài liệu XML Một nhiệm vụ lập trình phổ biến liên quan đến việc lấy ra các phần của các tài liệu XML Mã Java trong ví dụ này lấy các tên và các địa chỉ email chính của các khách hàng có trạng thái "Bạc." Tên... tiện để giải quyết các dấu tham số Trong thực tế, điều này có nghĩa là bất kỳ các XQuery nào trong ứng dụng của bạn đòi hỏi nhiều các biến vị ngữ truy vấn mã hóa cứng hơn phải được bọc trong một câu lệnh SQL nhờ sử dụng hàm SQL /XML như là XMLQuery hay XMLExists Bài "Hãy khởi đầu nhanh chóng với DB2 9, Phần 3: Truy vấn dữ liệu DB2 XML bằng SQL" (developerWorks, 03.2006) thảo luận các hàm này chi tiết... dữ liệu XML Để cập nhật và xóa dữ liệu XML được lưu trữ trong DB2, bạn sử dụng các câu lệnh SQL UPDATE và DELETE Các câu lệnh này có thể bao gồm các hàm SQL /XML giới hạn các hàng và các cột đích dựa trên các giá trị phần tử XML được lưu trữ trong các cột XML Ví dụ, bạn có thể xoá các hàng chứa thông tin về các khách hàng sống trong vùng có mã vùng bưu điện cụ thể hoặc cập nhật dữ liệu XML (và dữ liệu. .. toàn bộ tài liệu XML cho DB2 Họ chỉ cần quy định các phần tử XML được cập nhật và DB2 bảo toàn dữ liệu tài liệu không thay đổi cũng như cập nhật các phần tử đã quy định Các lập trình viên ban hành các câu lệnh UPDATE cần quy định toàn bộ tài liệu (không chỉ các phần tử mà họ muốn thay đổi) Tuy nhiên, một phần của bản phát hành DB2 9. 5 đã đơn giản hóa rất nhiều việc cập nhật các tài liệu XML hiện có Trong... điều kiện (Lisa Hansen) vì phần tử này không tồn tại trong tài liệu "contactinfo" XML của cô ấy Lọc vào các biến vị ngữ quan hệ và XML Các chương trình Java cũng có thể ra lệnh cho DB2 lọc kết quả đầu ra truy vấn dựa trên các điều kiện áp dụng cho cả hai dữ liệu XML và dữ liệu không -XML Ví dụ sau đây xây dựng trên một ví dụ trước, trả về các tên và các địa chỉ email chính của các khách hàng "Bạc" sống... chiếu dữ liệu từ các cột XML và không -XML cũng như đang giới hạn dữ liệu dựa trên các nội dung của cả hai cột XML và không -XML Đoạn trích dưới đây chỉ bao gồm các phần mã đã thay đổi từ ví dụ trước Trong trường hợp này, bây giờ câu lệnh SELECT gọi XMLExists như một phần của mệnh đề WHERE để giới hạn các kết quả với các khách hàng sống trong thành phố và bang cụ thể (định nghĩa theo các biến tương ứng. .. dụng một chương trình Java, bạn đã sẵn sàng để truy vấn dữ liệu XML Hãy đi dần qua một vài ví dụ trong phần này, bắt đầu với một nhiệm vụ đơn giản (chẳng hạn như lấy toàn bộ một tài liệu XML) và tiến lên nhiều nhiệm vụ khó khăn hơn (như trả về các phần của các tài liệu XML dựa trên các biến vị ngữ XML và các biến vị ngữ truy vấn quan hệ) Mặc dù DB2 hỗ trợ cả SQL lẫn XQuery như là các ngôn ngữ cấp cao... Các ví dụ cập nhật Với DB2 9, bạn có thể cập nhật dữ liệu trong một cột XML bằng cách sử dụng câu lệnh SQL UPDATE hoặc một thủ tục được lưu trữ, như là DB2XMLFUNCTIONS.XMLUPDATE Trong cả hai trường hợp, cập nhật cột XML xảy ra ở một mức tài liệu chứ không phải ở một mức phần tử Tuy nhiên, các lập trình viên, những người cập nhật bằng cách sử dụng các thủ tục đã lưu, không cần cung cấp toàn bộ tài liệu. .. khác nhiều so với ví dụ trước về chèn dữ liệu từ một tệp Thay vì sử dụng phương thức setBinaryStream() của câu lệnh đã chuẩn bị của bạn, hãy sử dụng phương thức setString() Để đơn giản, tài liệu XML trong định nghĩa biến xml đã được mã hóa cứng trong ví dụ này Lưu ý: Có các ký tự thoát (các vạch chéo ngược) trước các dấu ngoặc kép là một phần của tài liệu XML (ví dụ như số phiên bản XML trong ví dụ . Hãy khởi đầu nhanh chóng với DB2 9 pureXML, Phần 5: Phát triển các ứng dụng Java với dữ liệu XML của DB2 Cynthia M. Saracco, Kiến trúc giải pháp cao cấp, IBM Tóm tắt: DB2 phiên bản V9 của. chèn dữ liệu XML, truy vấn dữ liệu XML và dữ liệu không -XML, cập nhật dữ liệu XML, xóa dữ liệu XML và tạo các thủ tục được lưu trữ để truy cập dữ liệu XML. Nhưng trước tiên, chúng ta hãy xem. nhờ sử dụng hàm SQL /XML như là XMLQuery hay XMLExists. Bài " ;Hãy khởi đầu nhanh chóng với DB2 9, Phần 3: Truy vấn dữ liệu DB2 XML bằng SQL" (developerWorks, 03.2006) thảo luận các hàm

Ngày đăng: 07/08/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan