Những điểm mới và lý thú trong sản phẩm
Data Studio Developer 2.1 của IBM
Thấu hiểu ứng dụng hơn và tăng năng suất
Sonali Surange, Trưởng nhóm Các công cụ pureQuery của Data Studio, IBM
Zeus Courtois, Kỹ sư phần mềm, IBM
Tóm tắt: Khám phá sản phẩm IBM® Data Studio Developer 2.1 sẽ giúp đỡ bạn
hiểu tốt hơn các ứng dụng cơ sở dữ liệu của mình như thế nào. Thấy được cách
triển khai mới của Data Studio Developer có thể cải thiện năng suất của bạn và
tăng cường sự hợp tác giữa các chuyên viên phát triển và các quản trị viên cơ sở
dữ liệu như thế nào. Hãy theo các kịch bản trong bài báo này và trải nghiệm cách
sử dụng Data Studio Developer 2.1 để làm được nhiều hơn, dễ dàng hơn và hiểu
thấu công việc hơn. .
Giới thiệu
Một số lợi ích chủ yếu của bản phát hành mới của Data Studio Developer gồm:
Cho bạn nhiều thông tin hơn để tập trung vào các nỗ lực tinh chỉnh SQL
của mình.
Cải thiện chất lượng dịch vụ cho OpenJPA và cho các ứng dụng . NET.
Có cái nhìn thấu hiểu hơn vào bên trong những ứng dụng Java có sử dụng
SQL.
Giúp bạn cải thiện năng suất và sự hợp tác giữa các chuyên viên phát triển
và các quản trị viên cơ sở dữ liệu.
Bạn sẽ có khả năng để giảm bớt hay loại trừ nguy cơ “mũi tiêm SQL” (SQL
injection) cho các ứng dụng cơ sở dữ liệu với Java.
Một số điều kiện cần có trước để chạy các kịch bản thực hành
Bạn cần phải cài đặt các sản phẩm sau để thử các kịch bản bên dưới :
Data Studio Developer 2.1
DB2® cho Linux®, UNIX® và Windows® -– DB2 Express-C làm việc rất
tốt
Cơ sở dữ liệu mẫu của DB2 đi cùng với sản phẩm này.
nhiều kịch bản.
4. Để thêm sự hỗ trợ pureQuery vào dự án :
1. Nhấn phím phải chuột trên dự án và chọn pureQuery -> Add
pureQuery support.
2. Chọn SAMPLE và thêm lược đồ thích hợp để cấp tên đủ phân biệt
cho bảng STAFF của bạn.
3. Tại hình ở dưới, lược đồ là SSURANGE.
4. Đánh dấu chọn hộp Enable SQL capturing and binding for JDBC
applications
Hình 1. Thêm hỗ trợ pureQuery
Lưu ý bây giờ bạn có khả năng mạnh hơn nhiều khi xác định một lược đồ
mặc định để cấp tên đủ phân biệt cho các bảng và khung nhìn. Sử dụng
widget đường dẫn mặc định mới để cấp tên đủ phân biệt cho các thủ tục
thường lệ (routine) có tên chưa đủ phân biệt của bạn.
5. Để thu thập các số đo hiệu năng, hãy chạy ứng dụng bằng cách sử dụng cấu
hình pureQuery :
1. Đặt lược đồ để cấp tên đủ phân biệt cho bảng STAFF trước khi chạy
ứng dụng. Để làm điều này, bạn mở TutMod.Java, tìm tới dòng 66
và thay đổi giá trị SSURANGE thành tên lược đồ của bạn và lưu tệp
stmt.execute("set current schema SSURANGE");
2. . Sử dụng cấu hình pureQuery để chạy ứng dụng bằng cách mở tệp
TutMod.java, rồi nhấn phím phải chuột trên tệp và chọn Run ->
Run Configurations.
3. Chọn pureQuery và cung cấp các thông tin cho tên cơ sở dữ liệu,
máy chủ, cổng , ID người dùng và mật khẩu (Hình 2) và nhấn Run.
4. SQL được thực hiện và thông tin hiệu năng được thu thập lại.
không có khả năng để thay đổi mã nguồn ứng dụng, nhưng bạn vẫn muốn có khả
năng thay đổi câu lệnh SQL được sinh ra. Ví dụ, bạn muốn thay đổi các SQL để
tận dụng một chỉ mục mới bổ sung, để giới hạn số hàng được trả về, hay để thêm
một mệnh đề ORDER BY rất cần thiết.
Data Studio Developer 2.1 cung cấp một bộ biên tập được kiểm soát để cho bạn
thay thế câu lệnh SQL hiện hữu được phát sinh từ ứng dụng bằng một câu lệnh
tương đương và hy vọng là tốt hơn. Bộ biên tập tự động làm cho có hiệu lực sự
tương đương câu lệnh và không công nhận các câu lệnh không tương đương.
Thực hiện các bước đơn giản sau tại nơi cài đặt Data Studio Developer của bạn :
Soạn tệp XML pureQuery bằng cách sử dụng bộ biên tập XML pureQuery
Khi bạn thay thế một câu lệnh SQL hiện hữu, thì câu lệnh thay thế đó phải tương
thích với câu lệnh hiện hữu, nghĩa là phải có cùng số lượng tham số, cùng các kiểu
tham số và cùng dạng tập hợp kết quả, nếu có. Nếu SQL được thay thế không
tương thích hay có những lỗi không hợp thức (cú pháp hay ngữ nghĩa), bộ biên tập
sẽ cho thấy các lỗi và bạn không thể ghi lưu tệp cho đến khi bạn sửa được lỗi. Nếu
muốn quay lại câu lệnh ban đầu được phát sinh từ ứng dụng, bạn sử dụng trình
đơn Reset to capture statement. Hãy xóa câu lệnh SQL nếu bạn không muốn liên
kết nó.
1. Tại myDSDPrj, mở rộng pureQueryFolder. Nhấn đúp trên tệp
capture.pdqxml
2. Nhấn phím phải chuột trên câu lệnh SELECT ( SELECT id, name, dept,
job, years, salary, comm FROM staff WHERE id = ?)và chọn Edit. Đây là
câu lệnh SELECT mà bạn thấy ở Hình 3 phía trên. Chọn lược đồ mặc định
để cấp tên đủ phân biệt cho bảng của bạn.
Hình 4. Câu lệnh SQL hiện hữu để giảm bớt số lượng hàng được trả về
Cải thiện chất lượng dịch vụ cho OpenJPA và cho các ứng dụng .NET
Xác định vấn đề và chất lượng dịch vụ trở nên dễ dàng với JPA
Bây giờ bạn có thể có được kiến thức về bất kỳ SQL và JPAQL nào tạo ra bởi các
ứng dụng truy nhập dữ liệu DB2 dạng JPA hiện hữu hay mới. Bạn cũng có thể sử
dụng ngay SQL tĩnh mà không phải thay đổi bất kỳ mã ứng dụng nào. Nếu ứng
dụng của bạn sử dụng DB2, bạn hãy sử dụng bộ phát tĩnh (wsdb2gen) trong
WebSphere® Application phiên bản 7 để thu thập SQL. Đa số các lợi ích đã sẵn
có mà không phải chạy các ứng dụng. Đối với các trường hợp còn lại, hãy kết hợp
với tối ưu hóa phía khách. Data Studio Developer 2.1 bao gồm các hỗ trợ về công
cụ để làm cho quá trình sinh gói tĩnh dễ dàng hơn. Bạn cần phải có WebSphere 7
fixpack 3.
Hãy theo các bước đơn giản sau tại nơi cài đặt Data Studio Developer của bạn:
1. Thêm hỗ trợ pureQuery vào dự án JPA của bạn.
2. Thêm com.ibm.ws.jpa.jar từ nơi cài đặt WebSphere của bạn vào đường dẫn
xây dựng (build path).
3. Nhấn phím phải chuột trên persistence.xml và chọn pureQuery >
Generate pureQueryXml file.
4. Nhấn phím phải chuột trên project và chọn pureQuery->Show
pureQuery outline.
5. Xem tất cả các CRUDs có thể phát sinh từ các thực thể, các namedQueries
và namedNativeQueries từ các thực thể cũng như các tệp ánh xạ.
6. Nhấn đúp trên bất kỳ SQL nào để đi sâu vào trong mã nguồn JPA đã khởi
sự truy vấn SQL.
7. Như một bước tùy chọn, bạn có thể sử dụng sự tối ưu hóa phía khách để bắt
giữ các lệnh SQL mà chỉ có sẵn trong chế độ chạy thực (ví dụ các câu lệnh
JPAQL động). Chạy ứng dụng của bạn với pdq.Properties captureMode
được bật ON và thu thập bất kỳ JPAQL và SQL nào lưu lại từ ứng dụng của
bạn.
Dù ứng dụng của bạn đang sử dụng DB2 hay không, hãy tối ưu hóa ứng dụng JPA
Hãy theo các bước sau tại nơi cài đặt Data Studio Developer của bạn:
1. Nhấn phím phải chuột trên myDSDPrj và chọn Show pureQuery outline.
2. Tại cửa sổ chính pureQuery, nhấn vào nút Toggle Profile
3. Chọn phiếu Database. Lưu ý rằng các câu lệnh Cập nhật và Xóa mà chưa
được thực hiện, sẽ hiện ra tại cửa sổ chính. Nhấp đúp chuột vào DELETE
statement để tới vị trí của nó trong tệp Java. Trong hình ở dưới, bạn có thể
thấy rằng nguồn Java phát sinh lệnh DELETE là câu lệnh executeUpdate. Hình 7. Xem nhanh tự động vào trong câu lệnh SQL – Phiếu Cơ sở dữ
liệu
4. Nhấn chuột vào phiếu Java. Mở rộng myDSDPrj và gói có tên là
db2jcc.example. Lưu ý rằng các câu lệnh DELETE và UPDATE mà chưa
được thực hiện, sẽ hiện ra trong cửa sổ chính. Lần này, bạn nhấn đúp lên
câu lệnh Update và tới vị trí của nó trong tệp Java (trường hợp này sẽ tới
câu lệnh JDBC được chuẩn bị sẵn). Bạn lưu ý rằng vị trí thực thi cho câu
lệnh được chuẩn bị sẵn cũng được hiện ra tại lệnh executeUpdate của
JDBC. Hình 8. Nhìn nhanh tự động vào trong câu lệnh SQL – Phiếu Java
Nếu bạn thật sự đang chạy ứng dụng, độ chính xác của vị trí của SQL được cải
thiện. Hơn nũa, nó bao gồm bất kỳ SQL nào được xây dựng động.
Bạn theo các bước sau tại Data Studio Developer :
1. Mở TutMod.java và xóa dấu chú thích trước lệnh gọi basicUpdate trong
phương thức main.
2. Để chạy ứng dụng :
1. Mở pdq.properties đặt captureMode thành ON và thêm
3. Đặt tên gói và chọn Generate annotated style. Nhấn Next. Hình 10. Sinh mã pureQuery từ hai bảng
4. Đối với bảng DEPARTMENT, chọn phiếu SQL Statements. Chọn Create
row by parameters, và Create row by object như hình ở dưới. Nhấn
Finish. Hình 11. Sinh mã pureQuery - Chọn câu lệnh SQL
5. Bây giờ mã truy nhập dữ liệu có thể được sinh ra cho một số lớn bảng rất
nhanh chóng! Chú ý rằng các câu lệnh CRUD của SQL được tạo ra riêng rẽ
cho mỗi bảng; điều đó có nghĩa là, mối quan hệ giữa các bảng không được
xem xét.
6. Nhấn phím phải chuột trên dự án và chọn Show pureQuery outline để đi
sâu vào trong cơ sở dữ liệu và đi sâu vào trong ứng dụng đối với mỗi lệnh
SQL. Tìm câu trả lời cho các câu hỏi như: SQL nào sử dụng bảng
DEPARTMENT và nó được sử dụng ở đâu trong mã Java? Hình 12. SQL nào sử dụng một lược đồ hay bảng nhất định và nó được
sử dụng ở đâu trong mã Java – Phiếu Cơ sở dữ liệu
7. Nhấn vào phiếu Java; và như bạn muốn, tất cả các dự án đều được nhìn
thấy tại cửa sổ chính pureQuery. Bạn có thể đi sâu xuống để tìm mối tương
quan từ lớp Java tới SQL trên cơ sở dữ liệu trong ứng dụng của bạn. Tìm
câu trả lời các câu hỏi như: SQL nào được lớp Java DepartmentData tạo ra
và ở đâu?