Đề án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” bao gồm các nội dung như sau: e© Tìm hiểu về các ngôn ngữ XML, XSLT và Xpath e Tim hiéu vé cong nghé JDBC va Database Meta
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 2ĐẠI HỌC KỸ THUẬT CÔNG ĐỘC LẬP - TỰ DO - HẠNH PHÚC
Khoa: Công nghệ thông tin NHIEM VỤ THỰC HIỆN LUẬN VĂN
Bộ môn: Công nghệ phần mềm TOT NGHIEP CUOI KHOA
Họ và tên : Đặng Văn Anh Tài MSSV: 103109014
Trang 34 Ngày hoàn thành nhiệm vụ:
5 Họ tên giáo viên hướng dẫn:
Th.s Nguyễn Chánh Thành
Nội dung và yêu cầu đồ án tốt nghiệp đã
thông qua GIÁO VIÊN HƯỚNG DẪN CHÍNH
1P.HCM, ngày thang năm 2007 (Ký và ghỉ rõ họ tên)
Trang 4KHOA CONG NGHE THONG TIN ĐỘC LẬP - TỰ DO - HẠNH PHÚC
000
NHAN XET DANH GIA CUA GIANG VIEN HUONG DAN
DE TÀI: Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm
Sinh Viên: Đặng Văn Anh Tài Chuyên ngành: Công nghệ phần mềm
Trang 5000
NHẬN XÉT ĐÁNH GIÁ CỦA GIẢNG VIÊN PHẢN BIỆN
ĐỀ TÀI: Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm
Sinh Viên: Dang Van Anh Tai Chuyén nganh: Céng nghé phan mém
Diém LANG SO! oe eee eee ee ete ee eteeeete teens
Trang 6Lời đâu tiên em xin chân thành cảm ơn thầy Nguyễn Chánh Thành, người đã trực tiếp hướng dẫn em hoàn thành đô án này Nếu không có những lời chỉ dẫn, những tài liệu,
những lời động viên khích lệ của Thây thì đồ án này khó lòng hoàn thiện được
Chúng con xin chân thành cảm ơn ba mẹ, các anh chị và những người thân trong gia đình
đã nuối day, tao moi diéu kién tot nhất cho chúng con học tập và động viên chúng con
trong thời gian thực hiện đô án
Em xin chân thành cảm ơn thây Nguyễn Nghiệm đã động viên tinh thần và nhiệt tình hỗ
trợ em Irong quá trình thực hiện dé an
Em cũng xin chân thành cảm ơn các thây cô trong khoa Công nghệ thông tin, Trường Đại Học Kỹ Thuật Công Nghệ Tp Hồ Chí Minh đã tận tình chỉ bảo và giúp đỡ cho em trong
suốt thời gian em học đại học và trong quá trình em thực hiện đề án
Mặc dù em đã cô găng hoàn thành đồ án với tất cả sự nỗ lực của bản thân, nhưng đồ án chắc chắn không tránh khỏi những thiếu sót nhất định, kính mong sự cảm thông và lận tình chỉ bảo của quỷ Thầy Cô và các bạn
Tp Hồ Chí Minh, tháng 1 năm 2008
Sinh viên thực hiện, Đặng Văn Anh Tài
Trang 7LOI NOI DAU
Ngày nay, với sự phát triển nhanh chóng của Công Nghệ Thông Tin, việc ứng dụng các sản phẩm tin học quản lý vào các nghiệp vụ của công ty là cần thiết và mang lại lợi ích thiết thực Do đó, các ứng dụng quản lý đã xuất hiện ngày càng nhiều trong các công ty, doanh nghiệp có quy mô vừa và lớn Điều này dẫn đến các công ty Tin Học luôn nhận được nhiều các đơn đặt hàng về phan mém quản lý Trong quá trình hình thành nên các ứng dụng tin học quản lý, các lập trình viên luôn phải thực hiện một số công việc mang
tính chất lặp Lý đo vừa nêu dẫn đến hiệu quả trong việc hình thành ứng dụng là không
cao, lãng phí thời gian mà chỉ phí hoàn thành sản phẩm lại lớn
Đồ án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” do chính em
thực hiện, đã ra đời để phần nào giải quyết khó khăn trên Đúng như tên gọi của nó, Đồ án
tập trung vào việc tự động hóa khâu sinh mã nguồn tự động giúp giảm thiểu thời gian
thực hiện dự án phần mềm cũng như tránh các sai sót do con người gây nên
Đề án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” bao gồm các nội dung như sau:
e© Tìm hiểu về các ngôn ngữ XML, XSLT và Xpath
e Tim hiéu vé cong nghé JDBC va Database MetaData va ResultSet MetaData
e Tim hiéu vé CMP Entity Bean
© Tìm hiểu cơ chế sinh mã nguồn tự động
e Triển khai việc sinh mã nguồn tự động để hình thành nên các CMP Entity Bean va
các đoạn mã DHTML trong việc thao tác đữ liệu thông qua cầu ndi JDBC
Tóm lại, ở phần thực nghiệm của Đồ án, em đã hiện thực được các công việc sau:
© Kết nổi thành công đến cơ sở dữ liệu để hình thành nên các tài liệu XML chứa các
thông tin cần thiết về Database MetaDafa cho ứng dụng
Trang 8Thay đổi được các nội dung vé Database MetaData bén trong cha tài liệu XML cho phù hợp với nhu cầu sử dụng băng các công cụ chỉnh sửa thân thiện
Hình thành nên mã nguồn và các tập tin cầu hình, giúp việc đóng gói tạo nên các CMP Entity Bean triển khai trên máy chủ Jboss
Tạo ra các tập tin mã nguồn có giao diện web (DHTML) để thao tác các thông tin với cơ sở đữ liệu thông qua SQL Server
Trang 9MUC LUC rales of.) 09 8n i I9)8\)(9)827.\EHdddddddẢẢ ii MỤC LỤC 0 S21 22212212121121211211211111111.21 1111212111212 1011101111 dkg iv CHUONG L TONG QUAN BE TAL oo cccccccccccececesscsseseesseccseseseeescsesesesescscacecesieneseeenenenees 1
In 1
12 Hurdng gidi quyét ooo 2
1.4 Các chức năng chính của chương trình RiceBox cneHeree 3
1.5 M6i trong thurc W060 oo 4
90:0019)/680/01083in)28601609001 C0177 5 II.1 Mô hình tổng quát s25 S2222522121212112121512211121211111121111111 111211 5
IIL2 Mô hình chỉ tiết ứng dụng RiceBoX 5 22: 22t 222E2121 112122 111k 6
I3 Mô hình chỉ tiết ứng dụng RiceBox khi tạo ra CMP Entity Bean §
IIL4 Mô hình chi tiết ứng dụng RiceBox khi tạo ra DHTML ¿5525555552 11 CHƯƠNG II: CONG NGHE VA UNG DUNG wo cccccccccccccessecsesneseeeeneeeeseeeeeneneeneeneaneans 14
IH.1 JDBC (Iava Database ConnectIVITy) ch HH hot 14
III.1.1 Khái niệm 2-5 S21 2222521221221221215121717127151 7171111211221 re 14 III.1.2 Các đặc điểm của JDBC API -©22: 22222 2222212211221 21221212 trree 14 HI.1.2.1.Các sán phẩm của IDBC -5-52222 522221221212 ETxrrEr.rrrerree 14
08/219 0i.0) 16
Trang 10TULA XPath ốc 34
IIL4.1 Giới thiệu Xpath 22s tnhhhhhhhhhhhhhrrhHrrddtdrrrtrrrieiree 34
11.4.2 Cac thuat ngir trong Xpath 0 cee eee eee eee reese terrane tenes 34
IHI.4.3 Cú pháp Xpathe ccc cece eeeseeeeeees eee eseseesseseeseseseseeeeaeasenaeaceseneeees 37 VIDS DOI y oo ốố ộaann 39
IS 4 6 2 nh ố an 39
IIIL5.2 Các thuận lợi khi sử dụng Dom4[ -‹ -cs-snssehhhtttrrrtrrrrre 39
IIL5.3 Các tính năng chính 2+ nnnnhhhhthtrhtrdtrrrrttrtrrrrrrrrrrerrre 40
THL.5.3.1 Parsing XML oo .aaaa 40
II.5.3.2 Sử dụng [terators: 0.0 ccc cece ee eee te reese neces cesses teceecteneserensne rts 41
III.5.3.3 Tăng cường khả năng duyệt cây với Xpath . -: cccseo 41
IIL5.3.4 Nhanh chóng khi thực hiện thao tác lặp -nnnnrtte 42
II.5.3.5 Khả năng tạo mới một tài liệu XML -:-:s+scc‡rrrrtehiet 42
IHI.5.3.6 Lưu trữ một Document xuống tập ti1 - ete etter 43 II.5.3.7 Tạo dáng cho một Document khi kết hợp với XSLT 43
CHUONG IV: LY THUYET VE CMP VA JBOSS SERVER -s 45
IV.1.1 Định nghĩa Entity Bean - -csnnnhhrhhrtrrrrrrrdrrrdtrrrrrrrrrrt 45
IV.1.4 Thiết kế CMP Entity Bean 5: 22s 22222 tt .rrtttrrrrrrre 49
IV.1.4.1 Home Inferface - Ă 5S 2211223 3 vn 2222k tk ng h* 9911 kh he he 50
Trang 11lIN VAN: ono Ji n ‹ố 50
l8 8ccc s‹ n — nao 55
CHƯƠNG V: HƯỚNG DẪN SỬ DỰNG -cstntHhethrrrrrrrrrrrrrri 57
MăNGr co ềnaan 57
V.2 Giao diện tạo mới một Proj€cf - - ccncéhnhhhhờthhhưhhhdHHrrdrrhtrrtrrtrdirire 59
V.2.1 Hộp thoại chọn loai Project reer esis nesses eens recat ene rentesineneiees 59
V.2.2 Hộp thoại chọn tên và nơi Jur trik Project eee ete reer reer eens 60
V.2.3 Hộp thoại cấu hình kết nối với cơ sở dit HU eee eee erence 61
V3 Giao diện chỉnh sửa CMP Entity Bean -.-. senhnrhhrrredtrrrdrrrrrree 63
V.3.1 Giao điện chỉnh sửa Entity khi vừa tạo mới P7oJeCt cceie 63
V.3.2 Hộp thoại tạo phương thức tìm ra ec ccccccccscecceceveeceeceesececcseccesceereeennenes 64
V.3.3 Hộp thoại thêm tham số cho phương thức tìm kiểm -5cscsrsrererree 65
V.3.4 Hộp thoại tạo mới phương thức tìm kiếm khi không có lỗi 66 V.3.5 Giao điện chỉnh sửa Entity sau khi chỉnh sửa và thêm phương thức tìm kiếm.
Trang 12CHUONG VI: HUGNG PHAT TRIEN 1077 71
8 ‹ sa a 71
pc nh 71
Trang 13I.1 Thực trạng
Hiện nay, các ứng dụng quản ly đã trở thành những trợ thủ đắc lực cho việc kinh doanh của các doanh nghiệp vừa và lớn Vì vậy nhu cầu sử dụng phần mềm tin học vào việc quản lý cho doanh nghiệp là rat lớn Nắm bắt được điều này, các công ty Tin Học đã phần nào đáp ứng được những nhu cầu cấp bách ấy Tuy nhiên trong quá trình hiện thực sản phẩm, các công ty Tin Học luôn phải băn khoăn một số vấn để sau:
« Làm việc với cơ sở dữ liệu luôn tồn tại trong mọi ứng dụng quản lý Thay vì trước kia chúng ta luôn phải bù đầu với kho tài liệu khi cần phái tìm kiếm hay thông kê một thông tin nào đó thì giờ này công việc ây chỉ được thực hiện ngay bằng vai thao tác nhắn chuột
© Mot time dung quan lý luôn đòi hỏi làm sao cho ứng dụng phải có độ chính xác cao và luôn ổn định Điều này bắt buột các lập trình viên luôn phải tập trung chú ý vào công việc mình đang làm, nhưng thực tế đôi khi không xảy ra như ý muốn, các lập trình viên mắc phải một số lỗi nào đó dẫn đến những sự sai sót đáng tiếc
e Công việc thường nhật của các lập trình viên trong quá trình tạo ra sản phẩm phần mềm tin học quản lý luôn phải thực hiện các công việc có tính chất lặp đi lặp lại như: thêm, cập nhật, xóa sửa, truy vấn, thống kê cho mỗi loại thông tin quản lý (như: sản phẩm, khách hàng, loại sản phẩm, hóa đơn ) Nguyên nhân này đã dẫn đến sự nhàm chán của các lập trình viên khi phải thực hiện các công việc lặp lại, điều đó có thể dẫn đến các sai sót mang ý nghĩa tính thần có thê xây ra
e_ Một số lý do trên đã đưa ra một hệ quả không thể nào tránh khỏi là các công ty Tin Học sẽ phải tốn nhiều thời gian cho các công việc vô ích như vậy và thêm vào đó là khoảng thời gian để sửa những sai sót đó (thường mất nhiều thời gian) Điều này cũng đồng nghĩa là chỉ phí để làm ra một sán phẩm Tin Học quán lý cũng sẽ phải cao hơn và lợi nhuận của các công ty sẽ giảm lại
Có thể nói nhìn ra được các yếu điểm cần thiết khi hình thành nên một sản phẩm Tin Học
quan lý là điều không đễ dàng nhưng để giải quyết van dé 4 ay lại là một khó khăn thực sự
Dưới đây là một hướng giải quyết có thê đem lại hiệu quả thiết thực
Trang 14Các công việc như thêm, xóa, sửa và tìm kiếm nay sẽ không cân phải thực hiện thủ
công bởi các lập trình viên nữa Thay vào đó công việc trên sẽ được thực hiện bởi ứng
dụng hỗ trợ sinh mã tự động
Để có được mã tự động cho việc tạo ra một số mô-đun làm việc với cơ sở đữ
liệu, điều chúng ta phải làm trước tiên là phải hình thành nên một số tài liệu khuôn
mẫu chuẩn (hiện thực vấn để này là các tệp tin XSL trong ứng dụng, chúng ta có thê hiểu rõ hơn vấn đề này qua các chương IIT) Tùy theo từng loại tài liệu khuôn mẫu mà
ứng dụng hỗ trợ sinh mã tự động sẽ kết hợp với các thông tin Database MetaData tạo
ra các đoạn mã lập trình khác nhau
I3 Giới thiệu về Đề Tài
Nhìn rõ được các khó khăn đã được đề cập bên trên, em nhận thấy việc cho ra đời ứng dụng sinh mã nguồn tự động (có tên là RiceBox 1.0) là một giải pháp Là chủ nhân của ứng dụng RiceBox và sẽ là một lập trình viên trong tương lai, em mong muốn ứng dụng của mình sẽ giái quyết được phần nào khó khăn trong quá trình tạo dựng phần mềm quản
ly
Hiện thực cụ thể các vấn đề trên, ứng dụng RiceBox có các chức năng tạo ra các đoạn mã
hình thành nên CMP EntityBean để làm việc với database thông qua cầu nối JDBC trên
nên Server Jboss và các ứng dụng DHTML truy xuất dữ liệu đến với SQL Server
Các công nghệ tiên tiến như IDBC (lý thuyết về JDBC đã được để cập ở chương
II) và EIB (cụ thể trong RiceBox là CMP) là các công nghệ đang được sử dụng rộng rãi khi xây dựng các ứng dụng có quy mô lớn (được gọi là ứng dụng J2EE)
Một ứng dụng 2 lớp khi ứng dụng khách truy xuất dữ liệu sẽ đưa ra một lời yêu
cầu trực tiếp đến máy chủ (là hệ quản trị cơ sở dữ liệu của ứng dụng), việc này rõ ràng là không nên vì nhiều ly do, có thể đưa ra một vài lý do như sau: nếu có rất nhiều lời gọi
trong cùng một lúc gửi đến database, khi ứng dụng khách đang thao tác với đữ liệu thì hệ
Trang 15quan tri dit liệu không hoạt động nữa, hoặc khi truy xuất nhiều lần với một đối tượng nào
đó trong database thì mỗi lần thao tác là mỗi lần gọi truy xuất dén database Cac ly do vừa nêu có thể được giải quyết triệt để khi chúng ta chọn một ứng dụng server và giao cho
nó quản lý các céng viée nhu connection pool (quan lý các kết nối), persistence, state (trang thai) Diéu nay cho ching ta thay viéc sir dung cac Enterprise Bean dé thao tac
với cơ sở đữ liệu thông qua server là một thuận lợi rất lớn, nhưng cùng với thuận lợi ấy là
các lập trình viên phải bỏ ra nhiều công sức hơn khi thao tác với dữ liệu
Như vậy để có thể triển khai các ứng dụng lớn có hiệu qua, chúng ta cần có máy
chủ (Server) hỗ trợ cho các thao tác nên Và việc mà chúng ta phải làm là chỉ tập trung hình thành nên các phương thức nghiệp vụ Các máy chủ có thé chon là Jboss hay WebLogic
Công việc thủ công khi hình thành nên các Enterprise Bean đòi hỏi các lập trình viên phải thực hiện rất nhiều công đoạn phức tạp như: hình thành nên cac Homelnterface,
Remotelnterface, BeanClass Cac cong doan nay phai thuc hién nhiéu 1an khi co so dit
liệu có nhiều đối tượng cần quản lý Sau đó các lập trình viên sẽ thêm vào các phương thức nghiệp vụ cho các Bean này Để có thể hình thành nên các Bean hoàn chỉnh, công
việc không thể thiếu là phải cấu hình lại các tập tin mở rộng như: ejb-jar.xml, jboss.xml,
mssql-ds, jbosscmp-Jdbc.xml (Ở đây đề cập các ứng dụng lớn khi cần sự hỗ trợ Server
Jboss)
Tóm lại, ứng dụng RiceBox được hình thành với mục đích hỗ trợ việc sinh mã
nguồn Trong khuôn khô phạm vi của đề tài, em chỉ hiện thực việc hình thành nên các mã
nguồn về CMP Entity Bean và DHTML
I.4 Các chức năng chính của chương trình RiceBox
Các chức năng chính của chương trình không năm ngoài mục đích xử lý các vân đề đã nêu bên trên Có thể nêu ra một vài chức năng như sau:
Trang 16Tao méi project vé viée sinh ma CMP Entity Bean để thao tác với cơ sở đữ liệu
thông qua cầu nối JDBC
Tạo mới project khi cần quản lý cơ sở dữ liệu trên nên Web, các đoạn mã sinh ra
có giao diện đơn giản thực hiện các thao tác như thêm, xóa, sửa và tìm kiểm đối
tượng cần quản lý Các đoạn mã được simh ra có thể được thao tác lại đễ dàng thông qua cdc céng cu tao tmg dung web nhu: Dreamweaver, Front Page
Ứng dụng bao gồm chức năng thay đổi nội dung bên trong các tài liệu Meta và thêm phương thức tìm kiếm cho các CMP Entity Bean thông qua các công cụ có giao điện trực quan và dễ sử dụng
Cho phép mở lại ứng dụng đã tạo trước đó và tiếp tục các công việc chỉnh sửa cần
thiết
Tạo ra các tập tin chứa các đoạn mã lập trình để hình thành nên CMP Entity Bean
hay DHTML
Có thể đóng gói các tập tin liên quan để hình thành nên CMP Entity Bean, công
việc cuối cùng các lập trình viên cần làm là đeploy (triển khai) nó bang Jboss
Server
L5 Môi trường thực hiện
Hệ điều hành: Windows XP, Win 2000, Win Server 2003
Ứng dụng chạy trên nên Java jdk1.6.0_03 của Sun Microsytems
Ngôn ngữ lập trình: Java
Hệ quản trị cơ sở đữ liệu: Microsoft SQL Server 2005
Server triển khai CMP là Jboss Server phiên bản jboss-4.0.5.GA
Giao điện lập trình ứng dụng là NetBeans IDE 6.0
Trang 17IH.1 Mô hình tổng quát ,
Thông qua cầu nói JDBC, ứng dụng RieeBox nhận các thông tin về database như: tên các khóa chính, khóa ngoại của bảng đữ liệu (table), tên các cột và loại dữ liệu (data type) của cột đó hay các thông tin về kết nối (các thông tin này thường được gọi là Database Metadata) Sau đó các thông tin MetaData này sẽ được kết hợp với các tài liệu XSL thông qua ứng dụng RiceBox để hình thành nên các tập tin mã nguồn
Hình 2.1 minh hoa cho quá trình trên
Database Management
Hình 2.1: Mô bình tông quát ứng dụng RiceBox
Mô tả:
Thông qua hình 2.1 chúng ta thây được mô hình tổng quát của ứng dụng RiceBox Ban
đầu dữ liệu vào là một cơ sở dữ liệu quan hệ, trong khi thực hiện chức năng sinh mã nguồn, RiceBox cần biết mình cần tạo ra loại mã nguồn nào, việc nhận biết này là do chúng ta đưa vào các tài liệu XSL Kết quả cuối cùng là các đoạn mã lập trình được tạo
ra Quá trình ứng dụng RiceBox thao tác với các thông tin MetaData trải qua mấy bước, chúng ta có thê thấy rõ hơn khi xem mô hình chỉ tiết ứng dụng RiceBox ở phía dưới
Trang 18Hình 2.2 bên dưới, phần bên trong hình chữ nhật với các nét đứt đoạn là mô tả chỉ tiết các
thành phần bên trong ứng dụng RiceBox
Database
XML
Generator
Ngoài các tài liệu mẫu về việc sinh mã tự động như các tài liệu XSL Ứng dụng RiceBox
bao gồm ba thành phần chính Mỗi thành phần đảm nhiệm từng chức năng riêng biệt và
được mô tả bên dưới:
- _ XML Generator (Máy sinh XML): Có chức năng nhận thông tin cần thiết về cơ sở
đữ liệu như các thông tin về database Metadata từ đó tạo ra các tài hiện XML, mỗi
Trang 19một thông trn metadata sẽ được lưu trữ bên trong tài liệu XML với thể hiện là các Node của một cây
- _ Edit Tool (Công cụ chỉnh sửa): Đây là một thành phần khá quan trọng trong ứng dụng RiceBox, thành phần này có chức năng chính là thay đổi các thông tin
database Metadata được lưu trữ bên trong tài liệu XML bằng các thao tác với giao
diện
- Code Generator (May sinh ma nguén): Thanh phần cuối cùng luôn được sử dụng sau khi chúng ta thực hiện xong các thành phần trên là sinh ra các mã nguồn và các
tập tin cấu hình đề hình thành nên một mô-đun của một ứng dụng quản lý
Quy trình thực hiện việc sinh các tệp tin mã lập trình như sau:
- _ Sau khi ứng dụng kết nỗi thành công với database théng qua JDBC, May sinh XML tap hop cac théng tin Metadata cần thiết về đữ liệu và chuyển các thông tin này xuống một tài hiệu XML đã có sẵn trong ứng dụng (chúng ta không lưu hết các thông tin meta vé database ma chi lay các thông tin cần thiết cho ứng dụng)
- _ Tài liệu XML trên là một tài liệu thô (chưa qua thao tác xử lý) chứa các thông tin
về database Metadata Thông qua bước hai này, các tài liệu XML sẽ được các công
cụ chỉnh sửa thay đổi nội dung bên trong Nội dung sau khi đã được thay đổi và sẽ
được lưu lại vào chính tài liệu XML này
-_ Bước cuối cùng của quy trình làm việc là sự kết hợp giữa tài liệu XML và cac XSL
thông qua Máy tạo mã nguồn Công việc này khi sử dụng thì có vẻ rất đơn giản
nhưng sẽ là rất cực khi lập trình viên phải tạo ra các mẫu XSL để có được kết qua
đó Qua đó hình thành nên các tệp tin mã nguồn cần thiết cho ứng dụng quản lý.
Trang 20Hình minh họa 2.3 là phần chỉ tiết cụ thể của ứng dụng RiceBox trong việc tạo ra các tập
tin về mã lập trình (* java) cũng như các tập tin mở rộng (*.xml, * properties) dé anh xa với database Server thông qua máy chủ Jboss
& Entity xsl, EntityEJB-xsl ejb-jar.xsl, jboss.xsl
Generator XML
Code Generator
Mô hình này hoạt động tương tự như mô hình 2.2 nhưng chỉ khác ở chỗ là các
thành phần như: Bộ máy tạo XML, Công cụ chỉnh sửa và Máy tạo mã nguồn chỉ dành riêng cho việc tạo ra các CMP Entity Bean và các tệp tin mã nguồn mẫu XSL được thay
Trang 21thế cụ thể bằng Entity.xsl, EntityEJB.xsl Và các tệp tin mã nguồn là các file có phần
mở rộng là *.java, *.xml và *.properties
Tài liệu XML trong hình 2.2 sẽ được thay béi ejb-jar-ex.xml, day 14 nơi chứa toàn
bộ các thông tin về đatabase (các thông tin này là những thông tin cần thiết được lấy có chọn lọc) như tên table, tên ñeld, kiểu dữ liệu và các thông tin kết nối sau khi đã đi qua
may tao XML
Cac thong tin trong ejb-jar-ex.xml tiếp tục thay đổi sau khi đã được chỉnh sửa bới các Công cụ chỉnh sửa, cụ thể ở đây là Công cụ chỉnh sửa CMP Công cụ này sẽ cho phép thay đổi nội dung các field trong CMP, tạo ra các truy vấn tìm kiếm CMP và một số chức năng khác
Bước cuối cùng là Máy sinh mã tự động sẽ trộn nội dung cac tép tin XML va XSL
dé sinh ra các tập tin mã nguồn cần thiết để hình thành nên một CMP Entity Bean Công
việc cụ thể như việc kết hợp XML và XSL bởi Máy sinh mã nguồn CMP (bạn có thê
tham khảo thêm các chương về Lý Thuyết XML và XSL)
Ví du cu thể cho mô hình 2.3 được hiện thực trong ứng dụng như sau:
Khi chúng ta có được thông tin Database Metadata về Produet (Sản phẩm) của một cơ sở
đữ liệu nào đó được lưu trữ bên trong tài liệu XML ejb-jar-ex.xml có nội dung như sau:
e»Product: vết Đập :
Trang 22Hình thành nên một tài liệu mẫu mã nguồn XSL (XSL Template) voi tén goi EntityHome.xsl có nội dung như sau:
” byte 1
ects java tee
"1"
Bằng cách kết hợp 2 tập tin này, ứng dụng RiceBox có thể sinh ra mã một tập tin
ProductHome.java như sau:
package ricebox.ejb; ˆ
import java.rmi.RemoteExcept
Cimport java.util, Collection
import Javax: che i 4
i public interface ProductHome ext
: “throws RemoteException; Find
public Collection findALLy
throws RemoteException,
r exception sản
pa sue rees clon:
Với cách làm như vậy, lần lượt các bảng đữ liệu trong tài liệu ejb-jar-ex.xml sé duge chuyên thành các tập tin java
Trang 23IL4 Mô hình chỉ tiết ứng dụng RiceBox khi tạo ra DHTML
Hình minh họa 2.4 là phần chỉ tiết cụ thể của ứng dụng RiceBox trong việc tạo ra các tập
Cũng tương tự như mô hình 2.3 khi sinh ra CMP EntityBean, mo hình sinh mã
lệnh DHTML này chỉ khác nhau vài điểm như: Bộ máy tạo XML, Máy tạo mã nguồn sẽ
chi dành riêng cho việc tạo ra các mã nguồn DHTML và các tệp tin mở rộng XML và
XSL được thay thế cụ thé bang html-ex.xml, EntityBinder.xsl, HEntity.xsl Và các
Trang 24tệp tin mã lệnh sẽ có phần mở rộng là *.html và *.js Điều khác biệt nữa là khi sinh mã
lệnh DHTML thì không có giao điện chỉnh sửa nội dung
Tài liệu XML ở trong hình 2.2 sẽ là html-ex.xml, đây là nơi chứa toàn bộ các
thông tin vé database nhu tén table, tén field, kiểu dữ liệu và các thông tin kết nỗi sau khi
đã đi qua máy tao XML
Bước cuối cùng là Máy sinh mã tự động sẽ trộn nội dung các tệp tin XML và XSL
để sinh ra các tập tin mã nguồn cần thiết triển khai một ứng dụng DHTML Công việc cụ
thể như việc kết hop XML va XSL bởi ứng dụng Java bạn có thể tham khảo thêm các chương về Ly Thuyết XML và XSL
Vi du minh hoa cu thé cho mô hình trên được hiện thực trong ứng dụng:
Đữ liệu vào là thông tin về đatabase, sau khi thao tác với Bộ máy sinh XML ta có
được tập tin tài liệu XML có tên html-ex.xml Trong phần này em xin đề cập đến bảng dữ liệu Product(sản phẩm) có nội dung như sau:
Trang 25entity Pro wet = = document “forms [0 Product ID valu
;enEiE.Name := - đocumenrt #ormal0] Name value?
-entity:Price = document: forms [0] Price.value; : entity-CategoryiD = document forms [0] tát cạp tư
Trang 26
CHƯƠNG HI: CÔNG NGHỆ VÀ ỨNG DỤNG
IH.1 JDBC (Java Đatabase Connectivity)
ULI Khai niém
Mỗi hệ quản trị đatabase có cách lưu trữ dữ liệu khác nhau cùng với cơ chế bảo đảm tính toàn vẹn dữ liệu Vì thế một ứng dụng muốn tương tác với dữ liệu trong database cần phải
biết định dạng của database này Đây là một diéu kho khan vi méi DBMS (DataBase Management System) cé định dạng khác nhau Java cũng như các ngôn ngữ khác đều cung cap cac DataBase Connectivity API (Application Programming Interface — cong cụ
lập trình ứng dụng cho việc kết nối với database) được gọi là JDBC nhằm chuẩn hóa qúa
trình tương tác với database của các ứng đụng Mô hình chung như sau:
Hình 3.1: Ủng dung database 2 I6p (two-tier Application)
1II 1.2 Cae dc diém cia JDBC API
- Puogc JavaSoft Inc phat triển
- Chứa một tập các class va interface duoc dung cho viéc ket nôi với mọi
DBMS/RDBMS
- Cho phép dua ra cac truy van SQL, trich di liệu từ database, xử lý tập kết quá từ truy vấn SQL
- _ Cho phép chỉ định các SQL ngay trong chương trình Java
- _ Cho phép sử dụng cấu trúc ứng dụng database 2-lớp (two-tier) và 3 lớp (three-tier)
HIL.1.2.1.Các sản phẩm của IDBC
Gồm 3 thành phần:
- _ Gói Java.sql
Trang 27Hai vẫn đề được đặt ra:
-_ Các DBMS đều phải tuân thủ SQL và chỉ hiểu các phát biểu SQL, không hiểu các
phát biểu lava (hay các ngôn ngữ lập trình khác) Do vậy cần 1 cơ chế địch các
phát biéu Java sang phát biéu SQL > JDBC cé chire nang Java-to-SQL translator
Mỗi nhà cung cấp lại hỗ trợ các interface va cu phap truy xuất đữ liệu riêng nên có thể có các driver riêng
- Cé qua nhiều DBMS/RDBMS khác nhau trên thị trường như MS Access, SQL
Server, Oracle, Sybase Làm sao ứng dụng Java có thể tương tác với mọi hệ? Một
ứng dụng được viết chỉ cho tương tác với 1 DBMS (MS Access chăng hạn) thì ứng
dụng này làm sao có thể tương tác được với DBMS khác (SQL Server database
chăng hạn) mà không cần phải hiệu chỉnh gì cả? > IDBC cần có đặc điểm độc lập
DBMS.
Trang 28IL1.2.3 Cơ chế độc lập DBMS của JDBC
Ị '
1
Hình 3.2: Cấu trúc của JDBC
HL1.2.4 Trình quản lý JDOBC
Là xương sống của cầu trúc JDBC, làm nhiệm vụ đuy trì 1 danh sách các driver được tạo
ra cho các database khác nhau và kết nối 1 ứng dụng lava với driver phù hợp đã đặc tả trong ứng dụng java
(i) JDBC-ODBC bridge driver: Microsoft ding céng nghé ODBC (Open DataBase
Connectivity) nhing vao cc RDBMS cia minh (Access, SQL Server, viét bang C ,
dùng pointer và các cấu trúc khác với Java, JDBC API không thể tương tác với
ODBC) Do vậy JDBC-ODBC bridge driver làm nhiệm vụ cầu nối chuyển đôi IDBC
API sang ODBC API ODBC là 1 thư viện chuẩn chứa 1 tập các chương trình con
giúp truy xuất các database khác nhau Khi DBMS được nâng cấp, chỉ ODBC cần
nâng câp còn ứng dụng không can
JDBC-ODBC Bridge driver 14 mét phan cia JDBC, Sun Microsystem cung cap driver nảy giúp truy xuất các nguồn đữ liệu ODBC từ JDBC JDBC-ODBC Bridge driver được
THE VIEN
: * l
\
'số —_ A032, —j ea
Trang 29hiện thực bằng JdbcOdbc.class và một thư viện phụ thudc hé théng (native library) dé
truy xuất ODBC driver Trong hệ thống chạy Windows OS, thư viện này là
JDBCODBC.đdll
Application SQL-Server [| - MS SQL
Database
Hình 3.3: Cấu trúc 1 ứng dụng JDBC sử dụng JDBC-ODBC Bridge Driver (2) Native API partly Java driver: Mot số DBMS/RDBMS như DB2, Informix có một
JDBC đriver được hỗ trợ bởi nhà cung cấp (có khi cài đặt) dành cho ngôn ngữ Java
Nhờ vậy, JDBC API có thể gọi trực tiếp Các driver này là thư viện chứa các hàm truy xuất database và được gọi là CLI (Call Level Interface, thường được viết bằng ngôn ngữ C) Các bước của qúa trình truy cập database
Bước 1- Client Java App dua ra 1 yéu cầu truy cập database
Bước 2- JDBC dịch yêu cầu thành lời gọi hàm đến CLI
Bước 3- Native CLI thực thi yêu cầu lây kết quả đưa cho JDBC
Bước 4- Client Java App nhận kết qua tir JDBC
Cient Java JDBC CLI „| Network [LL Database App "| Interface
Hình 3.4: Cấu trúc I ứng dụng JDBC sit dung Native API partly Java Driver (3) JDBC-Net-All Java Driver: Chia làm 2 phần: Phần Java được download về Client,
phan CLI dé 6 Server
Trang 30
Hinh 3.5: Cau tric 1 ứng dụng JDBC sử dụng JDBC-Net-All Java Driver (4) Native protocol pure Java driver: Là một driver thuần túy của Java (không dùng CLJ giúp kết nối 1 ứng dụng client hay 1 applet với database qua kết nỗi TCP/IP (Tranfer Control Protocol/ Internet Protocol),
HL1.3 Se dung JDBC
HI.1.3.1, Bảy bước truy xuất database từ một ứng dụng java
Các bước như sau:
Bước 1- import java.sql.*;
Bước 2- Nap Driver
Bước 3- Thiết lập 1 kết nối đến đatabase server thông qua đối tuong Connection Bước 4- Tạo 1 đối tượng Statement giúp thực thi phat biéu SQL
Bước 5- Thực thi phát biểu SQL để lấy dữ liệu vào đối trong ResultSet
Bước 6- Xử lý dữ liệu trích xuất được (Xuất record lên các phần tử trên GUI )
Buéc 7: Dong Statement, dong Connection
Trang 31M6 hinh 1 img dung co két néi database va thé hién record lén GUI
Class : forname “Em sun jdbc -odbe:; JdbcOdbcDriver” 1
Để nap driver, cần thực thi hành vi forname của lớp Class Thí dụ trên minh họa việc nạp
JDBC-ODBC Bridge driver
Bước 2: Thiết lập một kết nối đến với database
Trong gói sql có lớp Connecflon giúp kết nối ứng dụng với đatabasc Thông qua 1 đỗi tượng thuộc lớp này, việc kết nối được thực hiện để cho phép truyền các truy van tir img dung sang database ciing nhu lay về tập kết quả truy vẫn Nếu ứng dụng cần tương tác với nhiéu database thì cần nhiều đối tượng Connection Phương thức getConnecfionQ của lớp DriverManager (trong gói Java.sql) giúp khởi động việc kết nối với đatabase thông qua mét ten JOBC URL ( JDBC Uniform Resource Locator- tên xác định tài nguyên thông
nhất) Một JDBC URL là 1 chuỗi ký tự gồm 3 phần:
Trang 32<protocol>:<subprotocol>:<subname>
Trong đó:
- protocol: tén dinh vi tai nguyén cia JDBC ( JDBC URL) va luôn luôn là “ydbce”
-_ sưbprotocol: tên của cơ chế kết nỗi Nếu là cơ chế JDBC-ODBC Bridge thì chuỗi
này phải là “odbc”
- subname: Được dùng để nhận dạng database subname cũng được dùng để nhận dạng DSN (data source name chứa thông tin nhận dạng database trong hệ thông server bao gồm: tên đafabase, username, password và tên log file lưu trữ các thông tin về qúa trình truy vấn (lịch sử các câu sql))
Thi du:
‘String url = “jdbc: odbe: :MyDataSource”; Connection con = DriverManager -getConnection(url, ten đăng nha
IlI.1.3.2 Tao va thie thi cac phat biéu SQL
Dùng một đối tượng thuộc lớp Statement để gửi 1 truy vẫn đơn giản sang RDBMS Các
hành vi cúa đối tượng Statement dùng để truy vấn:
- boolean execute(String Sq!) dé yéu cầu thực thi 1 truy vân bất kỳ, thường dùng cho
việc tạo bảng
- ResultSet executeQuery(String SelectSql) để yêu cầu thực thi 1 ty van SELECT
và trả về 1 đối tuong ResultSet Tur đối tượng ResultSet, ứng dụng Java sẽ thể hiện,
xử ly đữ liệu
- int executeUpdate(String Sql) để thực thi các truy van SQL: INSERT, UPDATE,
DELETE va tra vé I gia tri int mé ta sé dòng bị ảnh hưởng ( kết quả là trị 0 nếu truy vẫn không trả trị)
Thí dụ vé tao bảng:
Trang 33Sgl1= 5gl1 + ®tuọ '.inE; maPhong int Luong double) ”
Statement stmt = Con ckeateStatement ();_ hye
String sql = “Select * From Nnanvien
Sql = Sql-+-" Order by maNV” / `
Statement stmt = Con: chedtestatement (1) aft
String: Sql = “select * From’ NhanVien Where Ten like &
Statement stmt = Con createStatement (); j ụ
Trang 34_ String sql = “Update Nhanvie
Statement! stmt = Con GreateStatement (); cee
ảnt AffectedRow:= ustmt executeUpdate (Sql)3
Sal S Sal ` + —¬- Nhacc Macc = Phieuthan maCC”;
"Statement stmt = Con createStatement ( de fi Conde
HI.1.3.3 Thao tác trên ResultSet
Đối tượng ResultSet chứa tập kết quả truy vẫn được từ database ( kết quá của SELECT là
1 tập các record- có cấu trúc dòng-cột) ResultSet lưu trữ vị trí của record hiện hành (gọi
là cursor, pointer) trong tập record Ban đầu, cursor đặt ở vị trí ngay trước record đầu tiên
Cấu trúc nội của ResultSet ngoài tập record thực sự còn có thêm 1 record trồng ở đầu
(BOF-Begin Of File) va 1 record trống ở cuối (EOF- End Of File) giip quan ly cursor không vượt ra khỏi vùng nhớ dữ liệu này
a) Di chuyén cursor trong ResultSet
- Cac phuong thirc boolean first(), previous(), next(), last() sẽ di chuyén cursor sang record vé record dau/vé record trước/về record sau/vé record cudi trong ResultSet
có kiểm tra BOF va EOF
Trang 35- Cac phuong thirc boolean isAfterLast(), isBeforeFirst(), isFirsrt(), sé kiém tra vi
tri cursor hién hanh
- int getRow() lay chỉ số cursor
b) Thao tac doc đữ liệu của record hién hanh: Cac phuong thie getXXX (int ChiS6C6t), petXXX(String TênCột) giúp đọc dữ liệu của 1 cột của record hiện hành Các phương thức sau đây là các phương thức thông dụng:
String getString: Lấy chuỗi, tương thích với kiéu char(n), varchar(n) cha SQL int petInt: Lấy trị kiểu int, tương thích với kiểu tinyint, smallint, int cha SQL float getFloat : Lay tri float, trong thích với kiéu float va money cia SQKL double getDouble: Lay tri double
Date getDate: Lay dir liéu thành đối tượng java.sql.Date, tương thích với kiểu DateTime SQK
time getTime: Lay dir liéu thanh đối tượng java.sqÏ.Time
array getArray: Lây dữ liệu của cả I cột thành 1 mảng
c) Thao tác cập nhật / xóa dữ liệu trong ResultSet
- Các phương thức updateXXX cho phép cập nhật dữ liệu của 1 cột thuộc dòng hiện hành hoặc cả 1 cột bằng 1 array
- Phuong thire deleteRow() sé x6a dòng hiện hành và dữ liệu tương ứng trong
Trang 36Cac thao tác thông dụng
(1) Lấy đối tượng ResultSetMetaDatfa của 1 ResultSet
md = ResultSetObj.getMetaData(); a
ResultSetMetaData ˆ
Từ đối tượng ResultSetMetaData Rsmd, chúng ta có thể:
(2) Lấy số recors hiện hành của ResultSet:
“int Recordcount= rsmd.getColumnCount () 7
(3) Lấy tên cột thứ int ¡ :
-String ColumaName = xzsmd getColumnName (1)7
(4) Lấy kiểu đữ liệu của cột thứ int ¡ của resuliset trong câu SQL (tên cột trong SQL có thé la alias)
String DataType i
(5) Lay kiéu đữ liệu của cột thứ int ¡ trong thiết kế database :
String Datatype i = remd,getCoiunn7ybeName (1];-
IH.1.3.5 Thao tác với thú tục lưu trữ của database
a) Thủ tục lưu trữ - Stored Procedure?
- _ Là một nhóm phát biểu SQL được xem như 1 đơn vị tắc vụ (tương tự 1 hàm)
- _ Là công cụ bao gói 1 tập các truy vần trên database => Tang kha nang bao mat trén database thong qua việc cấp quyên thực thi trên các user khác nhau
- Có thể có tham số nhập/xuất hoặc cả nhập lẫn xuất
- _ Có thể cho ra nhiều kết quả (nhiều result set)
- - Mỗi DBMS có cú pháp khác nhau về việc tạo thủ tục lưu trữ.
Trang 37- Có 2 loại thủ tục lưu trữ: Thủ tục lưu trữ mức hệ thống ( thủ tục làm sẵn của
DBM®) và thủ tục lưu trữ do user định nghĩa
b) Cú pháp tạo thủ tục lưu trữ (user đefined) trong SQL Server
‘Name, Address From | Supplier ộ
c) Tạo thú tục lưu trữ cho database bằng JDBC
Thủ tục lưu trữ được định nghĩa bởi I chuỗi Như vậy, với JDBC, có thể tạo 1 thủ tục lưu trữ như sau:
String ProcStr.= “Create Procedure getNameaddofSuppliers As” Me
- procStr 45 “Select” Name, “Address From eee Order by Name”
Statement Štmt =: Con: createStatement () 7 vực wong Ce
StmE: executeUpadate (ProcStr); ;
Gọi thủ tục lưu trữ từ JDBC
Để có thể gọi I thủ tục lưu trữ trong database, Java xây dựng lớp CallableStatement Lớp này có hành vi executeQuery sẽ gọi 1 thủ tục lưu trữ trong database Để có đối tượng CallableStatement, sử dụng hành vi prepareCall với
tham số là tên thủ tục lưu trữ đã biết của đối tượng Connection
Thí dụ: Với Con là đối tượng Connection đã có
Trang 38Đối tượng DatabaseMetadata chứa các thông tin mở rộng(metadata) vé database Cac thông tin mở rộng của 1 database bao gồm: thông tin về các bảng đữ liệu, các cầu trúc của
nó, các lưu trữ thủ tục v.v
Ví dụ:
DatabaseMetaData dbmt = conn.getMetaData()// conn: Kết nối dén database
Khi đã có sẵn đối tượng DatabaseMetaData, chúng †a có thể có được thông tin mở rộng của database Đối tượng được trả về là một ResultSetMetaData chứa một tập hợp các kết
quả chỉ tiết được trả về như: có bao nhiêu table trong 1 đatabase? Hoặc có bao nhiêu stored procedure trong 1 database?
Một số phương thức thao tác với DatabaseMetaData:
STT | Tên hàm Giá trị trả về
Trả về ResultSet chứa toàn bộ các thông tin
vé cac database trong 1 DBMS
Trả về ResultSet chứa toàn bộ các thông tin
về các bản dữ liệu trong 1 database
Trả vé ResultSet chứa toàn bộ các thông tin
về các khóa ngoại trong bảng dữ liệu z
Trả về ResuliSet chứa toàn bộ các thông tin
về các khóa chính trong bảng đữ liệu z
Ví dụ lây các tên các khóa chính trong 1 bảng đữ liệu:
ArrayList pkevs:= new ArravList(}; - 5ô 5 SỐ,
“RegultSet rset = DBUtilS-open().,getMetaData().getPrimaryxXeys (null,
table)? PEt a SEs hi ae ae ee số : lộ
while (rset next ()){
: pkeys-add(rset.getString ("COLUMN }
Trang 39
111.2 XML (EXtensible Markup Language)
HHI2.L Khái nệm XML
XML (EXtensible Markup Language) là một ngôn ngữ đánh đấu tựa như HTML, hầu hết
các file XML đều đùng để mô tả dữ liệu Các thẻ XML không được định nghĩa trước,
XML str dung DTD (Document Type Definition) hay XML Schema để mô tả dữ liệu
Một điều rất quan trọng là XML dùng lưu trữ, thay đổi dữ liệu chứ hoàn toàn không hiển thị đữ liệu XML được phát triển bởi W3C và được cấp phép miễn phí
HH2.2 Sử dụng XML
HI.2.2.1 XML dùng để tách dữ liệu từ HTML
Trong khi HTML được sử dụng để hiển thị dữ liệu, và những dữ liệu đó được chứa
bên trong HTML Với XML, dữ liệu có thể được tách rời để lưu trữ thành những tập tin riêng biệt Điền này giúp bạn tập trung hơn khi sử dụng XML với các mục đích sắp xếp
và hiển thị đữ liệu và chắc chắn rằng khi có một sự thay đôi đữ liệu thi sẽ không làm ánh hưởng đến HTML
Ngoài ra, XML cũng có thể nằm bên trong HTML như là một “Data Islands”, khi đó
bạn vẫn có thể làm việc bình thường với HTML dùng để hiển thị dữ liệu
HL2.2.2 XML dùng đề thay đổi dữ liêu
Trong thế giới thật của chúng ta, các hệ thống máy tính và các trình quản lý dữ liệu
luôn lưu trữ các loại dữ liệu có định dạng khác nhau Một trong những vấn để khó khăn là
làm thế nào để thay đôi đữ liệu từ định dạng này sang định dạng khác giữa các hệ thống thông qua internet
Bang cach chuyén dé liéu sang XML có thể làm giảm đi sự phức tạp của đữ liệu Sau
đó ta có thể đọc lại từ XML mà khôi phục lại thành nhiều định dạng đữ liệu có định dạng
khác nhau
Trang 40II2.2.3 XLM có thể tạo ra ngôn ngữ mới
XML có thể được xem là cha đẻ của WML (The Wireless Markup Language), một ngôn ngữ internet của các thiết bị đi động như PPC, handheld, Smartphone
THỊ 2.3 Cú pháp của XML
Cú pháp của XML khá đơn giản và dễ sử dụng nhưng lại khá chặc chẽ Chính vì lẽ đó,
việc tạo ra một ứng dụng dé tương tác với XML là một công việc khá dễ dàng
Dòng đầu tiên mô tả phiên bản của XML và việc sử dụng Encoding nao Kế đến thẻ
<note> được xem như là thẻ gốc (root) Bốn hàng kế đến là các phần tử của thẻ gốc này Cuối cùng </note> được xem như là thẻ kết thúc
Các điểm cân lưu ý:
- _ Tất cả các thê trong XML đều có thẻ đóng Sẽ là không hợp lệ nếu một thẻ thiếu đi
thé dong (closing tag)
- Không giống như HTML, XML phân biệt chữ hoa và chữ thường khi sử dụng thẻ
<Message>This is incorrect</message> sẽ không hợp lệ
- Tất cả các tài liệu XML đều phải có thẻ gốc (root element) va tất cả các thẻ con phải lồng trong thẻ này
- _ Trong XML khoảng trắng sẽ được giữ lại