Java Dataset Dataset cho java hay RowSet Phần 1

Phần 1: Dataset cho java hay RowSet
155 magnify

Thông báo với bà con:

Vì là do tự mày mò tìm hiểu ( không dám nói là nghiên cứu) cho nên còn nhiều cái để nói, tài liệu lại là dịch cho nên nó không ổn lắm khi so với các cuốn sách do các “đại gia” dịch(hiện giờ thì chưa thấy cuốn nào nói cả), thôi thì được sao hay vậy nghe, nếu thấy bổ ích thì comment lại dùm và trao đổi thêm, còn nếu bổ ít thì hehe-cũng rứa luôn nghe. Bài này chắc post mấy ngày. Vậy thôi lướt một vòng xem sao, và trong một thời điểm thích hợp xin mạn phép cho pro đặt một vài câu hỏi, giờ thì chưa. OK

(Đặng Trí Tuệ)

Phần 1

Tổng quan về RowSet

Chắc ai cũng biết ResultSet dùng để làm gì.

Chắc ai cũng từng làm qua .NET và Dataset vẫn hay được dùng, nó trở thành một đối tượng dữ liệu quan trọng trong ADO.NET còn trong Java thì sao)

Nghe thử đối tượng RowSet nhé.

Một đối tượng jdbc RowSet giữ dữ liệu ở dạng bảng, và làm cho nó mềm dẻo, dễ dùng hơn một ResultSet, Sun MicroSystem đã định nghĩa 5 interface để phổ biến việc dùng RowSet. Và Java Community Process (JCP đó nghe) đã tạo ra những chuẩn nhằm cài đặt cho 5 interface này.

Sun cung cấp 5 phiên bản của interface Rowset và những cài đặt nhằm làm thuận tiện hơn cho developer, các developer hoàn toàn có thể mở rộng những chuẩn này.

Chương này cho các bạn một cái nhìn tổng quan về 5 interface RowSet, và những chương kế sẽ tiếp tục dạo qua việc sử dụng và cài đặt.

ROWSET có thể làm gì?

Tất cả các đối tượng Rowset thì đều có nguồn gốc từ ResultSet và theo đó có tất cả những khả năng của ResultSet. Vậy Rowset sẽ làm nên những khác biệt gì.

Chức năng là một thành phần JAVA BEAN

Tất cả các đối tượng Rowset là thành phần java bean. Điều này có nghĩa là chúng có những điểm sau đây:

· Properties

· The ja vabean notification mechanism

Properties

Tất cả các đối tượng Rowset điều có các thuộc tính. Mỗi thuộc tính là một Field, những Field này sẽ có những phương thức Set va Get thích hợp trong các Interface Implementation. Ví dụ như là class trừ tượng Base-RowSet, nó là một class thư viện trong JDBC RowSet Implementation đã cung cấp các phương thức gán và lấy các thuộc tính(propeties).tất cả mọi RowSet thì điều thừ kế từ class này, và từ sự thừa kế này ta có thể truy cập đến các phương thức đó. Nếu bạn muốn thêm một thuộc tính(Propeties) mới bạn có thể cần phải add phương thức get va set cho nó phần Implemention. Tuy nhiên class Base-RowSet cung cấp đầy đủ các thuộc tính nhiều hơn mức bạn cần.

Bởi vì ta có phương thức set và get cho một thuộc tính nhưng điều đó không có nghĩa là lúc nào ta củng phải set giá trị cho tất các thuộc tính, có nhiều thuộc tính có giá trị mặc định và các thuộc tính khác thì được thiết lập giá trị tùy ý vì nó không được sử dụng, ví dụ như tất cả các đối tượng RowSet phải chứa đựng một kết nối đến cơ sở dữ liệu nguồn, với kết nối này thì nó phát ra một database. Bởi vậy chúng phải được set các thuộc tính cần thiết để làm điều đó. Ban củng có thể get connection theo 2 cách, sử dụng Driver hay sử dụng đối tượng DataSource cả hai cách này điều đồi có thuộc tính Username và Password phải được thiết lập (set). Nhung sử dung Driver thì phải thiết lập thuộc tính URL còn sử dung đối tượng DataSource thuộc tính datasourcename phải được thiết lập.

Giá tri mặt định của thuộc tính Type là

ResultSet.TYPE_SCROLL_INSENSITIVE

và concurrency Là

ResultSet.CONCUR_UPDATABLE

nếu bạn làm việc với drive và database mà không cung cấp tính năng cuộn và update cho đối tượng Resultset thì ban có thể sử dụng đối tượng RowSet thao tác trên cùng dữ liệu là ResultSet. Hãy xem cách làm việc của nó thế nào trong chương JDBCRowSet.

Base-RowSet bao gồm những thuộc tính sau(tiếp tục-vẫn còn nhiều chỉ liệt kê vầy thôi):

  • Setcommand
  • setEscapeProcessing – default on
  • setFetchDirection
  • setFetchSize
  • setMaxFieldSize
  • setMaxRows
  • setQueryTimeout – default no limit
  • setShowDeleted – default not show
  • setTransactionIsolation – default is not to see dirty read.
  • setTypeMap – default is null.

Thông báo các sự kiện:

Các đối tượng RowSet sử dụng mô hình sự kiện của JavaBeans, nó sẽ đăng ký một thành phần theo dõi các sự kiện và thông báo khi có sự kiện xảy ra . tất cả các đối tượng RowSet có 3 thông báo event Trigger :

  1. con trỏ di chuyển.
  2. update, insert, hay delete một dòng.
  3. thay đổi toàn bộ nội dung của RowSet.

cơ chế theo dõi sự kiện được add vào các Listerner, thành phần mà sẽ cài đặt RowSetListerner interface.

Một Listerner cũng có thể là một thành phần đồ họa như bar graph, nếu bar graph theo dõi dữ liệu trên đối tượng RowSet nó sẽ biết được khi nào dữ liệu bị thay đổi

TÓM LẠI:

Trong rowset, bắt sự kiện bằng các listerner. Các listerner có thể là một thành phần đồ họa ví dụ như là : bar graph (bg)

Khi có một sự kiện xảy ra : addnew, update, delete listerner sẽ phát hiện và gọi hàm thực hiện theo ý riêng người sử dụng. dòng sau đăng ký một thành phần bar graph-bg vào trong đối tượng rowset rs:

rs.addListener(bg);

và từ bây giờ bg sẽ được báo tin mỗi lần con trỏ di chuyển, một dòng thay đổi hay tất cả những rs nhận một dữ liệu mới.

Add Scrollability or Updatability

Với cả những hệ quản trị cơ sở dữ liệu không hỗ trợ việc này thì với rowset vẫn có thể thực hiện.một cách hết sức hiệu quả. (Riêng chuyện này thì chưa kiểm nghiệm được chỉ biết thế thôi)

Kinds of RowSet Objects-các loại rowset

Có 2 loại rowset:

Connected rowset: dựa trên công nghệ JDBC ( driver JDBC)

Disconnected rowset

Connected RowSet Objects

Có 1 chuẩn duy nhất cho rowset connected : jdbcRowset nó gần như tương tự với ResultSet.

Vậy tại sao vẫn dùng : nó là một thành phần của JavaBeans. Nó được sử dụng như một thành phần bao bọc các Driver duy trì cho kết nối.

Disconnected RowSet Objects

Có 4 cài đặt cho disconnected RowSet:

Nó có tất cả những tính năng của connected RowSet

Ngoài ra là các tính năng sau: nó ngắt kết nối với nguồn dữ liệu và xử lý độc lập với dữ liệu nguồn. có thể gửi dữ liệu qua những thin client.

Cache RowSet định nghĩa những sức mạnh căn bản cho Rowset , có 3 mở rộng cho những tính năng cá biệt. quan hệ của chúng là :

CachedRowSet

WebRowSet

JoinRowSet

FilteredRowSet

Một đối tượng Cached Rowset có đầy đủ những tính năng của JdbcRowset, ngoài ra còn có những tính năng sau:

Giữ lại những kết nối tới dữ liệu nguồn, và thi hành các truy vấn query.

Đọc dữ liệu trên Resultset và làm việc trên nó.

Thao tác dữ liệu và làm thay đổi dữ liệu trong khi nó bị ngắt kết nôi.

Kết nối lại dữ liệu nguồn để ghi ngược trở lại.

Kiểm tra và giải quyết việc đụng độ với dữ liệu nguồn.

Một WebRowset có đầy đủ những tính năng của Cached Rowset, nó còn thêm những cái sau:

Viết nó thành một tài liệu XML

Đọc một tài liệu XML là một WebRowset.

Một JoinRowset có đầy đủ tính năng của Cached Rowset, và bổ sung những tính năng sau:

Trang bị câu kết nối JOIN trong SQL mà không cần kết nối dữ liệu.

Một Filtered Rowset cũng có những tính năng của WebRowset, bổ sung:

Tạo những giá trị lọc dữ liệu khi select data được bật. nó thi hành những truy vấn query trên đối tượng Rowset mà không sử dụng ngôn ngữ truy vấn hay là kết nối với dữ liệu nguồn.

About Langthang

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

1 comments :

  1. Viết sai rùi :)
    hix. Webrowset đâu fải thuộc disconnected rowset

    ReplyDelete