Tải bản đầy đủ (.pdf) (80 trang)

Khóa luận tốt nghiệp Sử dụng NHIBERNATE (OQL - OBJECT QUERY LANGUAGE) để thực hiện chương trình quản lý việc mua bán sách cho một cửa hiệu sách

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (961.44 KB, 80 trang )


Trang 1
TRƯỜNG CAO ĐẲNG NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN



GIANG BỘI LINH



SỬ DỤNG NHIBERNATE (OQL -OBJECT
QUERY LANGUAGE) ĐỂ HIỆN THỰC
CHƯƠNG TRÌNH QUẢN LÝ VIỆC MUA BÁN
SÁCH CHO MỘT CỬA HIỆU SÁCH



KHOÁ LUẬN TỐT NGHIỆP



TPHCM 7 - 2009

Trang 2
TRƯỜNG CAO ĐẲNG NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN

GIANG BỘI LINH - 206205325

SỬ DỤNG NHIBERNATE (OQL -OBJECT


QUERY LANGUAGE) ĐỂ HIỆN THỰC
CHƯƠNG TRÌNH QUẢN LÝ VIỆC MUA BÁN
SÁCH CHO MỘT CỬA HIỆU SÁCH

KHOÁ LUẬN TỐT NGHIỆP


GIÁO VIÊN HƯỚNG DẪN: Ths.NGUYỄN DUY THÁI

KHOÁ 2006 – 2009






Trang 3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN






















Tp.HCM, Ngày Tháng Năm
Giáo viên hướng dẫn


Trang 4
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN






















Tp.HCM, Ngày Tháng Năm
Giáo viên phản biện


Trang 5
MỤC LỤC

LỜI CẢM ƠN 8
ĐỀ CƯƠNG CHI TIẾT 9
LỜI NÓI ĐẦU 13
TÓM TẮT KHÓA LUẬN 14
CHƯƠNG 1TÓM LƯỢC NHIBERNATE 16
1.1-Khái niệm Persistence: 17
1.2-Khái niệm Nhibernate: 17
1.3-Lịch sử phát triển Nhibernate: 18
1.4-Các đặc tính 19
1.5-Kiến trúc Nhibernate: 20
1.6-Các bước xây dựng ứng dụng NHibernate: 21
1.7-Các khái niệm: 24
CHƯƠNG 2PHÂN TÍCH ỨNG DỤNG WEBSITE BÁN SÁCH 42
2.1.Nhận diện tác nhân, mục tiêu của từng tác nhân (actor): 43
2.2.Sơ đồ Use Case: 45
2.3.Mô tả các Use Case: 47
2.3.1.Đăng nhập: 47

2.3.2.Đăng ký: 48
2.3.3.Quản lý chủ đề: 48
2.3.4.Quản lý loại sách: 50
2.3.5.Quản lý nhà xuất bản: 51
2.3.6.Thêm sách: 53
2.3.7.Cập nhật sách: 53
2.3.8.Xem thông tin phiếu nhập: 54
2.3.9.Lập phiếu nhập: 55
2.3.10.Xem thông tin hóa đơn: 56
2.4.Sơ đồ Domain Model: 57

Trang 6
2.5.Mô tả các lớp trong Domain – Model: 57
2.5.1.Lớp Sach: 57
2.5.2.Lớp NhaXuatBan: 58
2.5.3.Lớp Nguoi_Dung: 58
2.5.4.Lớp Phan_Quyen: 59
2.5.5.Lớp Phieu_Thu: 59
2.5.6.Lớp ChuDe: 59
2.5.7.Lớp LoaiSach: 59
2.5.8.Lớp PhieuNhap: 60
2.5.9.Lớp ChiTietPhieuNhap: 60
2.5.10.Lớp TinhTrang: 60
2.5.11.Lớp QuyDinh: 60
2.5.12.Lớp HoaDon: 60
2.5.13.Lớp ChiTietHoaDon: 61
2.5.14.Lớp KhuyenMai: 61
2.5.15.Lớp DonGia: 61
2.5.16.Lớp Tac_Gia: 62
2.5.17.Lớp Sach_TacGia: 62

CHƯƠNG 3THIẾT KẾ 63
3.1.Sơ đồ cơ sở dữ liệu quan hệ: 64
3.2.Mô tả sơ đồ: 64
3.2.1.Bảng Sach: 64
3.2.2.Bảng Nha_Xuat_Ban: 66
3.2.3.Bảng Phan_Quyen: 66
3.2.4.Bảng Nguoi_Dung: 66
3.2.5.Bảng Loai_Sach: 67
3.2.6.Bảng Chi_Tiet_Phieu_Nhap: 68
3.2.7.Bảng Phieu_Nhap: 68
3.2.8.Bảng Tinh_Trang: 69

Trang 7
3.2.9.Bảng Qui_Dinh: 69
3.2.10.Bảng Hoa_Don: 69
3.2.11.Bảng Chi_Tiet_Hoa_Don: 70
3.2.12.Bảng Khuyen_Mai: 71
3.2.13.Bảng Don_Gia: 71
3.2.14.Bảng Chu_De: 72
3.2.15.Bảng Phieu_Thu: 72
3.2.16.Bảng Tac_Gia: 73
3.2.17.Bảng Sach_TacGia: 73
3.3.Giao diện một số màn hình: 74
CHƯƠNG 4CÀI ĐẶT, ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 76
4.1.Môi trường cài đặt: 77
4.2.Đánh giá kết quả: 77
4.2.1.Kết quả đạt được: 77
4.2.2.Việc chưa làm được: 78
4.3.Hướng phát triển: 78
DANH MỤC TÀI LIỆU THAM KHẢO 79














Trang 8
LỜI CẢM ƠN
Em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin Trường Cao Đẳng
Nguyễn Tất Thành, đã tạo điều kiện tốt cho chúng thực hiện tốt đề tài tốt nghiệp
này.
Em xin chân thành cảm ơn thầy Nguyễn Duy Thái đã tận tình hướng dẫn, chỉ
bảo em trong suốt thời gian thực hiện đề tài. Mong thầy nhận ở em lời cảm ơn sâu
sắc.
Chúng em xin chân thành cảm ơn quý thầy cô trong khoa đã tận tình giảng
dạy, trang bị cho chúng em những kiến thức quý báu trong những năm học vừa qua.
Chúng tôi xin chân thành cảm ơn các bạn bè, người đồng hành tốt đã chân
thành đóng góp ý kiến để chúng tôi hoàn chỉnh khóa luận này.
Chúng con xin gởi lời cảm ơn sâu sắc đến ba mẹ, ông bà đã sinh thành, nuôi
dưỡng, giáo dục chúng con thành người. Chúng con nghĩ hàng triệu lời cảm ơn
cũng không bù đắp được công lao ấy. Chúng con hứa sẽ cố gắng hết sức để luôn là
niềm tự hào của ba mẹ.
Mặc dù chúng em đã cố gắng hoàn thành khóa luận trong phạm vi và khả năng

cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu xót, kính mong sự cảm
thông và tận tình chỉ bảo của quý thầy cô và các bạn.

Tp.HCM, ngày 25 tháng 07 năm 2009
Sinh viên thực hiện
Giang Bội Linh



Trang 9
ĐỀ CƯƠNG CHI TIẾT

Tên đề tài: SỬ DỤNG NHIBERNATE (OQL -OBJECT QUERY LANGUAGE) ĐỂ
HIỆN THỰC CHƯƠNG TRÌNH QUẢN LÝ VIỆC MUA BÁN SÁCH CHO MỘT CỬA
HIỆU SÁCH (ỨNG DỤNG WEB)
Giáo viên hướng dẫn: Thầy Nguyễn Duy Thái
Thời gian thực hiện: từ 09/03/2008 đến cuối 21/06/2008
Sinh viên thực hiện: Giang Bội Linh MSSV : 206205325
Loại đề tài: Ứng dụng Web

Nội Dung Đề Tài:
SỬ DỤNG NHIBERNATE (OQL -OBJECT QUERY LANGUAGE) ĐỂ HIỆN
THỰC CHƯƠNG TRÌNH QUẢN LÝ VIỆC MUA BÁN SÁCH CHO MỘT CỬA HIỆU
SÁCH (ỨNG DỤNG WEB)
Phương pháp thực hiện:
 Hệ thống lại kiến thức về ngôn ngữ lập trình C#, ASP.NET, SQL Server 2005
và phương pháp lập trình hướng đối tượng theo kiến trúc 3 tầng.
 Tìm hiểu ngôn ngữ truy vấn NHIBERNATE.
 Khảo sát hiện trạng, xác định các yêu cầu của đề tài:
 Yêu cầu chức năng

 Yêu cầu phi chức năng
 Phân tích các yêu cầu
 Thiết kế chương trình
 Hiện thực chương trình
 Chạy thử ( demo )
 Viết báo cáo
Yêu cầu:
 Nắm vững ngôn ngữ lập trình C#,ASP.NET và cơ sở dữ liệu SQL Server 2005

Trang 10
 Hiểu phương pháp lập trình hướng đối tượng theo kiến trúc 3 tầng.
 Hiểu được cách thức truy vấn trên nền NHIBERNATE.
Kết quả đạt được:
 Viết báo cáo
 Trình bày kết quả đạt được
 Trình bày chương trình thực tế.

Kế hoạch thực hiện:
Tuần Nội Dung Sinh Viên Thực
Hiện
1 (23/3 – 28/3) 1. Nhận mô tả đề tài.
2. Tìm hiểu các trang web bán sách.
3. Tìm hiểu NHIBERNATE.
4. Xây dựng đề cương chi tiết.
GIANG BỘI
LINH
2 (29/3 – 4/4) 1. Điều chỉnh lại kết quả tuần 1.
2. Xác định các actor, mục tiêu của
từng actor.
3. Xác định các use case trong hệ

thống.
4. Vẽ sơ đồ use case.
5. Mô tả cho các use case quan
trọng.
6. Xây dựng sườn khóa luận.
GIANG BỘI
LINH
3 (5/4 – 11/4) 1. Điều chỉnh lại kết quả tuần 2.
2. Tìm hiểu Domain model.
3. Xây dựng domain model(sơ đồ
lớp quan niệm).
4. Bắt đầu viết quyển báo cáo.
GIANG BỘI
LINH
4 (12/4– 18/4) 1. Điều chỉnh lại kết quả tuần 3. GIANG BỘI

Trang 11
2. Điều chỉnh lại Domain Model và
use case.
3. Viết quyển báo cáo
LINH
5 (19/4– 25/4) 1. Điều chỉnh lại kết quả tuần 4.
2. Thiết kế cơ sở dữ liệu.
3. Viết quyển báo cáo.
GIANG BỘI
LINH
6 (26/4– 2/5) 1. Điều chỉnh lại kết quả tuần 5.
2. Thiết kế giao diện.
3. Viết quyển báo cáo.
GIANG BỘI LINH


7 (3/5–9/5) 1. Điều chỉnh lại kết quả tuần 6.
1. Hoàn chỉnh các thiết kế.
2. Bổ sung vào quyển báo cáo.
GIANG BỘI LINH

8(10/5 – 16/5) 1. Cài đặt cơ sở dữ liệu.
2. Lập trình.
GIANG BỘI LINH

9 (17/5 – 23/5) 1. Điều chỉnh lại kết quả tuần 8.
2. Lập trình.
3. Bổ sung kết quả vào quyển báo
cáo.
GIANG BỘI LINH

10(24/5– 30/5) 1. Điều chỉnh lại kết quả tuần 9.
2. Lập trình.
3. Bổ sung kết quả vào quyển báo
cáo
GIANG BỘI
LINH

11(31/5-6/6) 1. Điều chỉnh lại kết quả tuần 10.
2. Lập trình.
3. Bổ sung kết quả vào quyển báo
cáo
GIANG BỘI
LINH
12(7/6-13/6) 1. Điều chỉnh kết quả tuần 11.

2. Lập trình.
3. Bổ sung vào quyển báo cáo.
GIANG BỘI
LINH

Trang 12
13(14/6 –
20/6)
1. Điều chỉnh lại kết quả tuần 12.
2. Lập trình.
3. Bổ sung kết quả vào quyển báo
cáo.
GIANG BỘI
LINH
14(21/6- 27/6) 1. Cài đặt thử nghiệm, chỉnh sửa GIANG BỘI
LINH
15(28/6- 4/7) 1. Nộp báo cáo cho Khoa.
2. Báo cáo PowerPoint
3. Chuẩn bị bảo vệ.
GIANG BỘI
LINH


Xác nhận của GVHD Ngày……tháng……năm……
SV Thực hiện

GIANG BỘI LINH








Trang 13
LỜI NÓI ĐẦU
Trên thị trường kinh tế cạnh tranh, quảng cáo, thời gian và hiệu quả kinh
doanh là các vấn đề mà doanh nghiệp cần quan tâm.Việc ứng dụng thương mại điện
tử để xậy dựng website bán sách là hình thức khá phổ biến hiện nay.Làm sao để
quảng cáo sản phẩm một cách bắt mắt, rộng rãi mà không cần mất nhiều chi phí ?
Làm sao để khách hàng có thể tham gia mua sản phẩm ở bất cứ nơi nào mà không
cần phải đến trực tiếp cửa hàng ? Làm sao để doanh nghiệp có thể đáp ứng các yêu
cầu đặt hàng của khách hàng một cách nhanh chóng và chính xác đó là các mục tiêu
của ứng dụng : WEBSITE QUẢN LÝ CỬA HÀNG BÁN SÁCH.Bên cạnh đó,
trang web còn trợ một số chức năng sau:
 Quản lý nhà xuất bản.
 Quản lý loại sách.
 Quản lý chủ đề sách.
 Quản lý sách.
 Quản lý phiếu nhập, chi tiết phiếu nhập.
 Quản lý người dùng.
 Quản lý hóa đơn, chi tiết hóa đơn.
 Quản lý thông tin khuyến mãi (tiền mặt).
 Thống kê.









Trang 14

TÓM TẮT KHÓA LUẬN
I-HƯỚNG GIẢI QUYẾT
-Xây dựng ứng dụng theo kiến trúc 3 tầng.
-Khảo sát các website bán sách.
-Xây dựng sơ đồ Use Case và đặc tả Use Case
-Xây dựng Domain Model.
-Cài đặt cơ sở dữ liệu và ứng dụng.
II- YÊU CẦU CHỨC NĂNG VÀ PHI CHỨC NĂNG
1.Yêu cầu chức năng:
 Đăng nhập.
 Tìm kiếm sách: chi tiết,đơn giản.
 Đặt mua hàng.
 Thay đổi thông tin cá nhân, mật khẩu.
 Đăng ký tài khoản.
 Xem lịch sử mua hàng.
 Quản lý nhà xuất bản.
 Quản lý loại sách.
 Quản lý chủ đề sách.
 Quản lý sách.
 Quản lý phiếu nhập, chi tiết phiếu nhập.
 Quản lý người dùng.
 Quản lý hóa đơn, chi tiết hóa đơn.
 Thống kê.


Trang 15

2.Yêu cầu phi chức năng:
 Chương trình phải đảm bảo đáp ứng các yêu cầu: lưu trữ và khai thác dữ
liệu.
 Thông tin được cung cấp chính xác.
 Giao diện hài hòa.













Trang 16
CHƯƠNG 1
TÓM LƯỢC NHIBERNATE





Nội dung:
1.1.Khái niệm Persistence
1.2.Khái niệm NHibernate
1.3.Lịch sử phát triển NHibernate

1.4.Các đặc tính
1.5.Kiến trúc NHibernate
1.6.Các bước xây dựng ứng dụng NHibernate
1.7.Các khái niệm








Trang 17
1.1-Khái niệm Persistence:
Persistence là nói đến khả năng một đối tượng duy trì sự tồn tại sau thời gian
sống của chương trình tạo ra nó. Nếu không có khả năng này, dữ liệu chỉ tồn tại
trong bộ nhớ và sẽ mất đi khi bộ nhớ tắt hoặc máy tính shutdown.
Có một vài loại persistence, ví dụ: khi bạn hiệu chỉnh một file source thì file đó sẽ
được persist xuống đĩa để lần sau rút trích và sử dụng. Các file được lưu trên đĩa là
hình thức phổ biến nhất của persistence. Trong ứng dụng, ví dụ như shopping cart
thì persist dữ liệu trong một CSDL quan hệ.
CSDL quan hệ là một sự chọn lựa phổ biến để lưu dữ liệu vì dữ liệu dễ dàng
được tạo và truy cập bằng SQL. Mô hình được sử dụng bởi CSDL quan hệ được gọi
là mô hình quan hệ, biểu diễn dữ liệu dưới dạng bảng hai chiều. Các table có thể
liên quan nhau thông qua việc sử dụng khóa chính và khóa ngoại. Khóa chính đảm
bảo không có hai record trong bảng có cùng giá trị. Khóa ngoại tham chiếu đến
khóa chính được lưu trong một bảng khác.
CSDL quan hệ được thiết kế để quản lý dữ liệu theo mô hình quan hệ. Tuy
nhiên khi làm việc với các ứng dụng hướng đối tượng, bạn có thể gặp một số vấn đề
khi bạn cố gắng persist các đối tượng vào trong mô hình quan hệ. Với sự khác biệt

của hai mô hình, làm thế nào để chúng làm việc được với nhau. Để giải quyết vấn
đề này object/relational mapping (ORM) ra đời.

1.2-Khái niệm Nhibernate:
Nhibernate là một giải pháp Object-relational mapping (ORM) cho nền
.NET, được hiểu như là kỹ thuật ánh xạ từ mô hình đối tượng với các table trong cơ
sở dữ liệu quan hệ. Trong đó các đối tượng ánh xạ với các bảng và quan hệ trong
database sẽ được ánh xạ với sự ràng buộc liên quan trong đối tượng và làm giảm
công việc lập trình của người lập trình viên, cho phép người lập trình thao tác với
database một cách hoàn toàn tự nhiên thông qua các đối tượng.

Trang 18
Chức năng chính của Nhibernate là ánh xạ những lớp đối tượng xuống cơ sở
dữ liệu quan hệ. Ngoài ra Nhibernate còn cho phép người sử dụng có thể thực hiện
những câu truy vấn xuống cơ sở dữ liệu thông qua các đối tượng.

Hình 1 - Ứng dụng .NET với ADO.NET

Hình 2 - Ứng dụng .NET với NHibernate

1.3-Lịch sử phát triển Nhibernate:
Nhibernate là biến thể từ Hibernate bên Java, được bắt đầu bởi Tom Barrett
và hiện nay là một thư viện mã nguồn mở.
Phiên bản 1.0 gồm các tính năng của Hibernate 2.1 và một số tính năng của
Hibernate 3.0.
Nhibernate 1.2.1 phát hành vào tháng 11-2007, được giới thiệu với nhiều
tính năng của Hibernate 3.0 hỗ trợ cho .NET 2.0.
Nhibernate 2.0 được phát hành vào 8-2008. Nó tương đương với các tính
năng của phiên bản Hibernate 3.2. Với phiên bản này, Nhibernate không hỗ trợ cho
.NET 1.1


Trang 19
Nhibernate 2.1 hiện đang được phát triển và sẽ được phát hành vào giữa năm
2009.
Nhibernate 3.0 sẽ là phiên bản đầu tiên hỗ trợ .NET 3.5.

1.4-Các đặc tính
Hỗ trợ trên nhiều hệ quản trị cơ sở dữ liệu khác nhau.
Ánh xạ các đối tượng quan hệ xuống cơ sở dữ liệu : Sử dụng file xml để mô
tả cách thức mapping trực tiếp từ đối tượng tương ứng với các bảng trong cơ sở dữ
liệu.
Hỗ trợ tốt các kiểu quan hệ như one-to-many, many-to-many giữa các đối
tượng, quản lý các mối kết hợp, kế thừa giữa các đối tượng. Ngoài ra, Nhibernate
còn hỗ trợ các kiểu dữ liệu người dùng, truy xuất dữ liệu theo nhóm(Collection),
danh sách(List)….
Hỗ trợ ngôn ngữ truy vấn đối tượng (HQL - Hibernate Query Language) cho
phép người dùng thực hiện các câu truy vấn tương tự SQL.Ngoài ra, Nhibernate còn
hỗ trợ Criteria API thực hiện truy vấn theo cách của người lập trình hướng đối
tượng.














Trang 20
1.5-Kiến trúc Nhibernate:

Hình 3 – Sơ đồ kiến trúc Nhibernate.

ISession
Đây là giao diện chính được sử dụng trong hầu hết các ứng dụng Nhibernate, nó hỗ
trợ các phương thức như thêm, xóa, cập nhật và tìm kiếm các đối tượng.

ISessionFactory
Cung cấp các thể hiện Isession trong ứng dụng.

Configuration
Được dùng để cấu hình Nhibernate, các ứng dụng sử dụng đối tượng Configuration
để chỉ rõ vị trí của các tài liệu ánh xạ.

ITransaction

Trang 21
Có tác dụng nhóm nhiều thao tác vào trong một đơn vị làm việc. Nếu bất kỳ thao
tác nào thất bại thì tất cả các thao tác trước đều bị roll back và đơn vị làm việc đó sẽ
dừng lại.

IQuery và ICriteria
Hỗ trợ đa dạng hình thức truy vấn dữ liệu khác nhau. Các câu truy vấn được viết
bằng HQL hoặc SQL. Ngoài ra, chúng còn cho phép xây dựng các câu truy vấn
động, điều khiển tham số đầu vào, giới hạn số lượng kết quả trả về.


1.6-Các bước xây dựng ứng dụng NHibernate:
 Tạo bảng trong cơ sở dữ liệu.
 Tạo các lớp đối tượng cần persist.
 Tạo file ánh xạ có đuôi là hbm.xml cung cấp các thông tin để NHibernate
persist các thuộc tính trong đối tượng với các trường trong bảng dữ liệu
tương ứng, đồng thời chọn thuộc tính Build Action của file là EmBedded
Resource.
 Tạo file cấu hình có đuôi là config để Nhibernate kết nối với database.
 Xây dựng các câu truy vấn và sử dụng các phương thức Nhibernate hỗ trợ để
truy vấn trên các đối tượng.

Bước 1 : Tạo bảng

Bước 2: Tạo đối tượng .net
namespace DTO
{
public class ChuDe
{

Trang 22
private string _machude;
private string _tenchude;
private bool _xoa;

public string Id
{
get { return _machude; }
set { _machude = value; }
}


public string TenChuDe
{
get { return _tenchude; }
set { _tenchude = value; }
}

public bool Xoa
{
get { return _xoa; }
set { _xoa = value; }
}
}
}

Bước 3: Tạo file ánh xạ
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DTO.ChuDe,DTO" table="Chu_De" lazy="false">
<id name="Id" column="MaChuDe">
<generator class="assigned" />
</id>
<property name="TenChuDe" column="TenChuDe" />
<property name="Xoa" column="Xoa" />
</class>
</hibernate-mapping>
Bước 4: Tạo file cấu hình database
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">
NHibernate.Dialect.MsSql2005Dialect</property>

<property name="connection.provider">

Trang 23
NHibernate.Connection.DriverConnectionProvider</property>
<propertyname="connection.driver_class">
NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data
Source=GIANGBOILINH\SQLEXPRESS;Initial Catalog=BookDB;Integrated
Security=True</property>
<property name="connection.isolation">
ReadCommitted</property>
<property name="default_schema">BookDB.dbo</property>
<! HBM Mapping Files >
<mapping assembly="DTO"/>
</session-factory>
</hibernate-configuration>
Bước 5 : Truy vấn với Nhibernate

Using namepace Nhibernate
using NHibernate;
using NHibernate.Cfg;

Tạo đối tượng Configuration
Configuration cfg= newConfiguration();
cfg. AddAssembly ("NHibernate.Examples");
 Đối tượng Configuration sẽ tìm kiếm các file .hbm.xml trong assembly.

Tạo đối tượng session
Cho phép persist các đối tượng, truy vấn các đối tượng persistent.
ITransaction quản lý các Transaction trong Nhibernate

Sử dụng SessionFactory để tạo thể hiện của Session:
ISessionFactory factory = fg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();

Thêm đối tượng ChuDe vào database
ChuDe chude = new ChuDe();

Trang 24
chude.Id = "1";
chude.TenChuDe = “abc";
session.Save(chude);
transaction.Commit();
session.Close();

Select đối tượng ChuDe khi biết ID
session = factory.OpenSession();
ChuDe chude = (ChuDe) session.Load(typeof(ChuDe),"1");

Cập nhật ChuDe
chude.TenChuDe = “def";
session.Flush();

1.7-Các khái niệm:
File định nghĩa ánh xạ
Các định nghĩa ánh xạ được gọi là mapping document, được sử dụng để cung
cấp cho Nhibernate các thông tin để lưu trữ các đối tượng đến CSDL quan hệ. Các
file ánh xạ cung cấp các đặc tính như tạo lược đồ CSDL từ tập hợp các file ánh xạ.
Các định nghĩa ánh xạ cho các đối tượng persistent có thể được lưu chung
trong cùng một file hoặc mỗi đối tựơng lưu riêng một file và được đặt trong cùng

thư mục với các lớp đối tượng,đồng thời cho thuộc tính Build Action là Embedded
Resource.
Qui ước đặt tên cho các file ánh xạ là sử dụng tên của persistent class với
phần mở rộng hbm.xml Ví dụ: File ánh xạ cho lớp Event có tên là Event.hbm.xml.

<?xml version="1.0"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">

Trang 25
<class name="Event" table="events">
<id name="id" column="uid" type="long" unsaved-value="null">
<generator class="native"/>
</id>
<property name="name" type="string" length="100"/>
<property name="startDate" column="start_date" type="date"/>
<property name="duration" type="integer"/>
<many-to-one name="location" column="location_id" class="Location"/>
<set name="speakers">
<key column="event_id"/>
<one-to-many class="Speaker"/>
</set>
<set name="attendees">
<key column="event_id"/>
<one-to-many class="Attendee"/>
</set>
</class>
</hibernate-mapping>

File ánh xạ được bắt đầu bằng thẻ hibernate-mapping.
Thuộc tính set khai báo tên của các lớp persistent như: Speaker và Attendee.

Thẻ class định nghĩa ánh xạ cho lớp persistent xác định.
Thuộc tính table là tên của quan hệ (relational) được sử dụng để lưu các đối tượng.
Element <id> mô tả khóa chính của persistent class - tự động được phát sinh. Thuộc
tính name định nghĩa các thuộc tính của persistent class .
Element <generate> được sử dụng để xác định tên của lớp phát sinh khóa chính cho
record mới khi lưu nó. Ở đây chúng ta sử dụng lớp native.
Sau đây là danh sách các generator phổ biến được sử dụng trong Nhibernate:

×