Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng SerialBlob so với byte []

Bạn nói đúng rằng SerialBlob chỉ là một phần trừu tượng nhỏ xung quanh một byte[] , nhưng:

  • Bạn có đang làm việc theo nhóm không?
  • Đôi khi bạn có mắc lỗi không?
  • Bạn có lười viết bình luận không?
  • Đôi khi, bạn có quên mã của mình từ một năm trước thực sự có tác dụng gì không?

Nếu bạn trả lời bất kỳ câu hỏi nào ở trên với câu trả lời là , bạn có thể nên sử dụng SerialBlob .

Về cơ bản, nó giống với bất kỳ sự trừu tượng nào khác xung quanh cấu trúc dữ liệu đơn giản (hãy nghĩ đến ByteBuffer , chẳng hạn) hoặc một lớp khác. Bạn muốn sử dụng nó trên byte[] , bởi vì:

  1. Nó mang tính mô tả nhiều hơn. Một byte[] có thể là một số loại bộ nhớ cache, nó có thể là một bộ đệm tròn, nó có thể là một loại cơ chế kiểm tra tính toàn vẹn nào đó bị lỗi. Nhưng nếu bạn sử dụng SerialBlob , rõ ràng đây chỉ là một khối dữ liệu nhị phân từ cơ sở dữ liệu / được lưu trữ trong cơ sở dữ liệu.

    Thay vì xử lý mảng thủ công, bạn sử dụng các phương thức trên lớp, một lần nữa, dễ đọc hơn nếu bạn không biết mã. Ngay cả thao tác mảng nhỏ cũng phải được người đọc mã của bạn hiểu được. Một phương pháp có tên hay sẽ tự mô tả.

    Điều này hữu ích cho đồng đội của bạn và cho cả bạn khi bạn sẽ đọc mã này sau một năm.

  2. Đó là bằng chứng lỗi nhiều hơn. Mỗi khi bạn viết bất kỳ mã mới nào, rất có thể bạn đã tạo ra một lỗi trong đó. Nó có thể không được nhìn thấy lúc đầu, nhưng nó có thể ở trong đó. SerialBlob mã đã được kiểm tra bởi hàng nghìn người trên khắp thế giới và có thể nói rằng bạn sẽ không gặp bất kỳ lỗi nào liên quan đến nó.

    Ngay cả khi bạn chắc chắn rằng bạn đã xử lý đúng mảng byte của mình, bởi vì nó rất đơn giản, điều gì sẽ xảy ra nếu ai đó khác tìm thấy mã của bạn trong nửa năm và bắt đầu "tối ưu hóa" mọi thứ? Điều gì sẽ xảy ra nếu anh ta sử dụng lại một đốm màu cũ hoặc làm rối với phần đệm ma trận của bạn? Mỗi lỗi riêng lẻ trong thao tác lập chỉ mục sẽ làm hỏng dữ liệu của bạn và điều đó có thể không được phát hiện ngay lập tức (Bạn đang bạn đang viết bài kiểm tra đơn vị, phải không?).

  3. Nó hạn chế bạn chỉ với một số ít các tương tác có thể xảy ra. Điều này thực sự có thể trông giống như một điểm trừ, nhưng nó không phải! Nó đảm bảo bạn sẽ không sử dụng blob của mình như một biến tạm thời cục bộ sau khi bạn hoàn thành việc đó. Nó đảm bảo bạn sẽ không cố tạo String ra khỏi nó hoặc bất cứ điều gì ngớ ngẩn. Nó đảm bảo rằng bạn sẽ chỉ sử dụng nó như một đốm màu. Một lần nữa, sự rõ ràng và an toàn.

  4. Nó đã được viết sẵn và luôn trông giống nhau. Bạn không cần phải viết một triển khai mới cho mọi dự án hoặc đọc mười triển khai khác nhau trong mười dự án khác nhau. Nếu bạn từng thấy SerialBlob trong dự án của bất kỳ ai, cách sử dụng sẽ rõ ràng cho bạn. Mọi người đều sử dụng cùng một cái.

TL; DR: Một vài năm trước (hoặc có thể vẫn ở C), sử dụng byte[] Sẽ ổn thôi. Trong Java (và OOP nói chung), hãy cố gắng sử dụng một lớp cụ thể được thiết kế cho công việc thay vì cấu trúc nguyên thủy (cấp thấp) vì nó mô tả rõ ràng hơn ý định của bạn, tạo ra ít lỗi hơn và giảm độ dài mã của bạn về lâu dài. .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lưu chữ ký trong MySQL

  2. truy vấn cập nhật mysql với truy vấn phụ

  3. Đối tượng MySQLConverter 'không có thuộc tính' _tuple_to_mysql 'ngoại lệ với mysql-connector

  4. Cảnh báo # 1264:lỗi ngoài phạm vi trong mysql

  5. Lệnh không đồng bộ; bạn không thể chạy lệnh này bây giờ