NHibernate query analyzer

Wednesday, March 25, 2009

(Bài viết này dành cho những ai đã từng sử dụng NHibernate)

Để test những câu Hibernate query, mọi người thường sử dụng Unit test để kiểm tra hoặc viết một app đơn giản để thử nghiệm. Tuy nhiên, có một công cụ khá hữu hiệu để ta có thể làm việc này một cách dễ dàng: NHibernate Query Analyzer. Công cụ này được phát triển bởi Ayende Rahien.
Mọi người có thể download nó về tại đây: http://www.assembla.com/wiki/show/NHibernateQueryAnalyzer


Mình sử dụng NHibernate Query analyzer từ những ngày đầu tiên nó được phát triển (cách đây gần 2 năm). Qua một thời gian, tool này được upgrade lên khá nhiều và cập nhật với phiên bản của NHibernate mới (2.1).

Tool này khá hữu hiệu. Tuy nhiên hơi bị khó xài. Mà hình như tool nào do developer tự phát triển cũng đều khó xài (just funny). Đặc biệt là lúc config ở giai đoạn đầu dễ gặp nhiều vấn đề.

Dưới đây là một số step cơ bản mọi người có thể làm theo để chạy được nó:
1. Add vào assembly dll chứa các entity cần map.

 


2. Add file hibernate config vào. File này mặc định là: hibernate.cfg.xml chứa những tham số để thiết lập connection đến database và config cho việc query.


Dưới đây là một file config sample để mọi người tham khảo. Lưu ý là file này phải đặt tên có extension là cfg.xml thì sẽ giúp bạn add nó vào Hibernate Query Analyzer tool dễ dàng hơn.

Vì NHibernate Query Analyzer đã upgrade để tương thích với NHibernate 2.1 nên schema của file config cũng khác đi => dễ gặp báo lỗi invalid xml syntax. Tốt nhất bạn nên sử dụng sample dưới đây (sửa lại db connection string)

 
  True=1;False=0
  true
  NHibernate.Driver.SqlClientDriver
  NHibernate.Dialect.MsSql2005Dialect
  NHibernate.Connection.DriverConnectionProvider
  Data Source=TIGER\SQLEXPRESS;Database=TinyERP;User ID=sa;Password=1234;
 


3. Add các file mapping.
Lưu ý đặc biệt: nếu như bạn đã build mapping files như embeded resources trong các assembly, thì không cần làm bước này. NHibernate query analyzer sẽ tự detect trong các assembly. Nếu bạn vẫn add vào thì sẽ bị báo lỗi: duplicate entity declaration.

4. Build project.

5. Tạo query
Trong ví dụ này mình tạo 2 bảng: User và UserGroup. 1 User liên kết với 0-1 UserGroup.
Câu query mẫu để lấy thông tin user và sort theo group name:
select user from User user left outer join user.UserGroup order by user.UserGroup.Name
Có thể xem câu sql sinh ra do NHibernate ở bottom textbox.
Click F5 để run và xem kết quả:

Nếu bạn gặp vấn đề với cấu hình để chay NHibernate Query Analyzer thì có thể contact mình.


---------------------------------------
Đang chuẩn bị cho một khóa training về NHibernate. Có ai đặt hàng hông? :)

0 phản hồi: