- 6 - TÌM HIỂUVÀVẬNDỤNGMỘTSỐCÔNGNGHỆTIÊNTIẾNTRONG PHÁT TRIỂN PHẦNMỀMHƯỚNGĐỐITƯỢNG Thực hiện: Trương Công Ái (0122259) Nguyễn Phương Chính (0122260) Giáo viên hướng dẫn: ThS.Đặng Đức Hạnh 1. Mở đầu Xây dựngphầnmềm theo phương pháp hướngđốitượng là một kỹ thuật tiêntiến để phát triển hệ thống. Phương pháp này phù hợp cho các hệ thống lớn, phức tạp và đã được cụ thể hóa trong nhiều quy trình phát triển phầnmềm (tiêu biểu là RUP). Tuy nhiên khi áp dụng phương pháp này vào các loại ứng dụng trên nền Web cũng như các ứng dụngđòi hỏi nhu cầu truy cập dữ liệu lớn, chúng ta sẽ gặp phải các khó khăn trongvấn đề thiết kế. Hiện này, đây là những lớp ứng dụng rất quan trọngvà phổ biến. Do đó đòi hỏi phải có côngnghệ chuyên sâu giải quyết vấn đề này. Mộttrongsố các côngnghệ này là Struts và Hibernate. Trong đề tài này, chúng tôi tập trung vào việc tìm hiểu nội dungvà khả năng vậndụng của côngnghệ Struts và Hibernate. Trong đó, côngnghệ Struts giải quyết vấn đề thiết kế hướngđốitượng cho ứng dụng Web; côngnghệ Hibernate giải quyết vấn đề tổ chức lưu trữ dữ liệu lâu bền cho các hệ thống hướngđối tượng. 2. Nội dung 2.1 Struts – Giải pháp cho ứng dụng Web Quá trình chuyển từ phân tích sang thiết kế là bước quan trọngtrong việc xây dựngphầnmềmhướngđối tượng. Hoạt động chủ yếu của giai đoạn này là làm mịn các đốitượng thuộc mô hình phân tích, và chuyển chúng thành các lớp thiết kế có thể cài đặt trên một kiến trúc nào đó. Việc xây dựng các ứng dụng trên kiến trúc Web có những điểm khác biệt so với việc xây d ựng trên các kiến trúc khác. Kiến trúc Web làm việc theo cơ chế hoạt động của CGI (Common Gateway Interface) tỏ ra không phù hợp cơ chế hoạt động các hệ thống hướngđốitượng là truyền thông điệp. Có nhiều giải pháp được đưa ra để giải quyết vấn đề của CGI trong đó có mộtsốcôngnghệ được sử dụng khá phổ biến như ASP (Active Server Page), JSP (Java Server Page), hay Servlet nhưng tất cả đều có những nhược điểm nhất định. Do đó đòi hỏi phải có một mô hình mới ra đời phù hợp quy trình xây dựng các ứng dụng cho Web theo hướngđối tượng. Struts là một mô hình như vậy. Structs được thiết kế với mục đích cung cấp một khung làm việc mã nguồn mở nhằm tạo ra những ứng dụng Web có khả năng dễ dàng tách rời tầng trình diễn và cho phép nó tr ừu tượng hoá so với các tầng thực thi và dữ liệu. Struts cài đặt trên mẫu thiết kế MVC bao gồm các thành phần : − Model: Miêu tả các đốitượng dữ liệu. Model là những cái đang được tính toán và đưa ra cho người dùng. − View: Là các dịch vụ như màn hình hiển thị của Model. Nó là những đốitượng đưa ra những trạng thái hiện tại của các đốitượng dữ liệu. − Controller: Xác định cách mà giao diệ n người dùngphản ứng lại thông tin vào . Thành phần Controller là đốitượng tính toán Model hoặc đốitượng dữ liệu. 2.2 Hibernate – Giải pháp cho vấn đề tổ chức lưu trữ lâu bền Trong các ứng dụng ngày nay vấn đề truy cập và duy trì dữ liệu có ý nghĩa rất quan trọngvà nó cũng tiêu tốn rất nhiều thời gian của các nhà phát triển. Ngoài ra với các ứng dụng được thiết kế theo phương pháp hướngđối tượng, việc duy trì các đốitượng vào trong các bảng của cơ sơ dữ liệu quan hệ gặp rất nhiều khó khăn. Hibernate là côngnghệ ánh xạ đốitượng tới quan hệ, nó cho phép làm giảm tới 95% các câu lệnh trong việc - 7 - duy trì dữ liệu. Bằng cách kết hợp các lớp Java với các miêu tả XML, Hibernate cung cấp một khung nhìn hướngđốitượng của một cơ sơ dữ liệu quan hệ. a. Tổ chức thông tin ánh xạ Để ánh xạ các lớp trong Java tới các bảng trong cơ sơ dữ liệu Hibernate sử dụngmột tệp ánh xạ có tên trùng với tên lớp và có phần mở rộng là *.hbm.xml. Hibernate sử dụng các thẻ để xác định các bảng tương ứng với các lớp bền vững, các cột tương ứng với các thuộc tính của lớp. Ngoài ra Hibernate còn định nghĩa các ràng buộc giữa các lớp và tự động cập nhật vào các bảng trong cơ sơ dữ liệu. b. Quản lý liên kết Quản lý các liên kết giữa các lớp và mối quan hệ giữa các bảng là trọng tâm của Hibernate. Phần lớn các vấn đề khó mắc phải khi thi hành giải pháp để giải quyết việc quản lý các liên kết. Hibernate cung cấp đầy đủ các giải pháp để xây dựng các liên kết, từ các liên kết một chiều đơn giản như liên kết một-nhiều đến các liên kết hai chiều như nhiều-nhiều. c. Quản lý dữ liệu Hibernate cung cấp một giao diện cho phép quản lý các dữ liệu lâu bền, nó gồm các dịch vụ sau: − Các hành động cơ bản CRUD (Create, Read, Update, Delete) − Sự thi hành các truy vấn − Điều khiển sự thực thi − Quản lý các mức thực thi Trong Hibernate chúng ta sử dụng HQL (Hibernate Query Language) để truy vấn các đối tượng, nó là một ngôn ngữ truy vấnhướngđối tượng. HQL rất dễ học với những người đã biết về SQL. HQL không phải là ngôn ngữ thi hành dữ liệu như SQL, nó chỉ sử dụng cho việc lấ y về các đốitượng mà không dùng cho việc cập nhật, thêm hay xóa dữ liệu. 2.3 Áp dụngcôngnghệ Struts và Hibernate vào bài toán xây dựng khung chương trình Bài toán được phân tích thiết kế dựa trên phương pháp hướngđốitượng sử dụng UML kết hợp với Rational Rose. Bài toán là ứng dụng được xây dựng trền nền web cho phép người dùng tạo ra các khung chương trình đào tạo. Trong quá trình dựng ứng dụng Struts được sử dụng vào quá trình tạo ra các khung nhìn với người dùng, tạo các điểu khiển của chương trình. Hibernate được sử dụng để duy trì các dữ liệu vào trong các bảng của cơ sơ dữ liệu. 3. Kết luận Việc áp dụng phương pháp phân tích hướngđốitượng trong xây dựng bài toán mang lại lợi ích: nâng cao khả năng tái sử dụng, tận dụng được sức mạnh của phânmềm Rose trong quá trình phân tích và sinh mã. Áp dụngcôngnghệ Struts giúp thiết kế những khung nhìn tách rời khỏi các điều khiển khiến bài toán trở nên rõ ràng hơn khi cài đặt và thuận tiện hơn trong bảo trì, sử dụngphần mềm. Ứng dụng Hibernate làm đơn giản quá trình duy trì dữ liệu, thuận tiệntrong việc truy cập và xử lý dữ liệu, nâng cao hiệu quả của chương trình. Tuy nhiên bài toán đưa ra còn khá đơn giản, chưa thể hiện được tất cả khía cạnh của công nghệ. Trong quá trình phát triển ứng dụng còn gặp phải mộtsố khó khăn nhất định. 4. Tài liệu tham khảo [1] Christian Bauer & Gavin King, Hibernate in Action , 2003 [2] James Elliott Hibernate A Developer’s Notebook , O’Reilly, 2004 [3] Chuck Cavaness, Jakarta struts, O’reilly, 2002 [4] James Goodwill, Mastering Jakarta Struts , Willey, Canada, 2002. [5] Will Iverson, Hibernate.A J2EE Developers Guide , Addison Wesley, 2004 . - 6 - TÌM HIỂU VÀ VẬN DỤNG MỘT SỐ CÔNG NGHỆ TIÊN TIẾN TRONG PHÁT TRIỂN PHẦN MỀM HƯỚNG ĐỐI TƯỢNG Thực hiện: Trương Công Ái (0122259) Nguyễn. trung vào việc tìm hiểu nội dung và khả năng vận dụng của công nghệ Struts và Hibernate. Trong đó, công nghệ Struts giải quyết vấn đề thiết kế hướng đối tượng