Bài viết được sự cho phép của tác giả Kiên Nguyễn
1. MyBatis là gì?. Con chim ngáo ngơ này là gì?.
MyBatis là một persistence framework mã nguồn mở. Được tạo ra nhằm đơn giản hóa việc kết nối đến CSDL của JDBC. Ngoài ra nó còn cung cấp các API để giúp việc thao tác với Database được dễ dàng hơn.
Tất nhiên, để hiểu được về MyBatis, các bạn cần có một chút kiến thức về JDBC (Java Database Conectivity), hãy tham khảo bài viết này.
2. Những ưu điểm nổi bật.
2.1 Viết code JDBC ít đi.
Thật sự đây là một trong những điểm mình thích nhất ở MyBatis. Nhớ trước đây làm 3 dựa án convert từ Database từ Oracle sang Postgres. Mở đống source sử dụng JDBC toàn cộng chuỗi String bằng “+”, nhìn vào thôi là chả muốn cơm nước gì nữa. Dự án như là cực hình, phải thật cố gắng mới kết thúc dự án được (rất may không lỗ).


Trớ trêu thay, việc Concat String kiểu này lại chỉ là nỗi ám ảnh cho người maintanance code, chứ người phát triển dự án từ đâu lại không có vấn đề gì =))).
2.2 Dễ hiểu, dễ sử dụng.
Một khi đã nắm chắc kiến thức về SQL và Java, rất dễ dàng để sử dụng MyBatis. Ngoài một lượng lớn document, chỉ có một số ít kiến thức mới cần phải học thêm.


2.3 Dễ tích hợp cho Spring và Guice framework
Mặc dù các dự án Spring thường được “đính kèm” sử dụng với Hibernate. Tuy nhiên, cả Eclipse và IntelliJ đều hỗ trợ cài đặt con chim ngáo ngơ như là một plugin. Không jar, không file download, rất tiện. Ngoài ra, việc thay đổi giữa các phiên bản cũng không quá khó khăn.


2.4 Hiệu năng truy vấn cao (High perfomance)
Với cơ chế cache và polling connection. MyBatis cho hiệu năng truy vấn cao hơn hẳn so với JDBC. Tuy nhiên, khi thực hiện Select ở lần đầu tiên, JDBC vẫn chưa hề tìm ra đối thủ, nó chỉ hụt hơn do lần nào SELECT cũng phải gọi tới Database, tất nhiên không thể bằng lấy kết quả từ cache.


Hiệu năng chính là vấn đề chính chúng ta tìm hiểu ở bài viết này. Có 3 yếu tố làm tăng perfomance, chi tiết sẽ có ngày sâu đây.
3. Performance (hiệu năng).
Vậy tại sao sử dụng mybatis lại làm tăng hiệu suất của hệ thống?. Có 3 yếu tố ảnh hưởng trực tiếp:
3.1 Hỗ trợ connection polling.
Đối với các biện chưa biết về polling có thể tham khảo thêm bài viết về http polling và connection pool. Bình thường mỗi request yêu cầu mở kết nối tới database sẽ được tạo connection riêng. Khi sử dụng Mybatis, với cơ chế polling (sau khi một kết nối được tạo và sử dụng xong nó sẽ không đóng lại mà sẽ duy trì trong connection pool để dùng lại cho lần sau và chỉ thực sự bị đóng khi hết thời gian timeout). Chính việc sử dụng polling đã giảm bớt đáng kể chi phí khởi tạo connection, qua đó tăng perfomance của application.


Cấu hình polling trong MyBatis tương đối đơn giản. Kiểu của dataSource chỉ cần thiết lập type = “POOLED”.
3.2 Sử dụng cache cho query trùng lặp.
Cùng xem xét ví dụ sau đây:
Khi thực hiện, Mybatis sẽ chỉ thực hiện firstSelectWithCache. Tuy nhiên, khi gặp câu SQL thứ 2 giống hệt SQL1 và trong cùng sqlsession, nó sẽ lấy kết quả trực tiếp từ cache. Việc này tuy nhỏ, nhưng đối với những ứng dụng cần query dữ liệu nhiều lần, trùng lặp từ database, sử dụng Mybatis giúp tăng hiệu năng lên đáng kể.


- The results of all queries are stored in the cache. Tất cả kết quả của queries đều được lưu vào cache.
- End a transaction (or at the end of a query configured with autoCommit = true). Cache chỉ được xóa khi kết thúc transaction (hoặc khi query được thiết lập autoCommit = true).
- Whenever an insert / update / delete query is made. Khi thực hiện các câu insert/ update/ delete.
Chi tiết hơn, Mybatis hỗ trợ 2 tầng cache. Thứ nhất là session cache, hai là global cache. Vấn đề này sẽ được tìm hiểu sâu hơn ở bài viết tiếp theo.
3.3 Không sử dụng proxy.
4. Kết luận.


5. Tham khảo.
Bài viết gốc được đăng tải tại kieblog.vn
Có thể bạn quan tâm:
- Mybatis separator – tiện lợi và nguy hiểm
- Làm thế nào để tìm được những “nhân tài” DevOps phù hợp nhất?
- Những Polyfill được sử dụng nhiều
Xem thêm Việc làm IT hấp dẫn trên TopDev