2010-03-12 31 views
14

Tôi đang phát triển một ứng dụng Java Desktop và muốn có một light database có thể được sử dụng với Hibernate và có thể được đóng gói với một ứng dụng.Cơ sở dữ liệu nhẹ nhất được đóng gói với một ứng dụng

Tôi sẽ sử dụng cơ sở dữ liệu Derby. Kích thước của nó là gần 2 MB. Nhưng trước đó tôi muốn có quan điểm của các chuyên gia về SO.

Nó có hoạt động với Hibernate không?

Thực ra, tôi mới sử dụng Hibernate và đang nghiên cứu rằng nó yêu cầu Dialect cho một cơ sở dữ liệu để Hibernate có phương ngữ cho Derby?

+0

DerbyDialect: https://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/DerbyDialect.html – ewernli

+0

Xem http://stackoverflow.com/questions/271319/lightweight-sql-database- which-doesnt-require-installation cho tương đương trong .net world – nawfal

Trả lời

17

JavaDB (phân phối hỗ trợ của Sun Apache Derby nguồn mở), HSQLDB (không hoạt động) và H2 (số successor of HSQLDB) là tất cả các công cụ cơ sở dữ liệu nhúng 100% Java và có thể tất cả được sử dụng với Hibernate (tức là có phương ngữ cho họ). Tham khảo this pagethis one.

HSQLDB có dấu chân nhỏ nhất (~ 700 KB) của tất cả chúng. Nhưng tính năng khôn ngoan (xem this comparison), H2 là người chiến thắng rõ ràng và dấu chân của nó (~ 1 MB) vẫn nhỏ hơn của Derby (~ 2 MB).

Lựa chọn cuối cùng phụ thuộc vào những gì bạn cần nhưng H2 là sự thỏa hiệp tốt về các tính năng và kích thước (nói cách khác, một đối thủ cạnh tranh lớn). Hãy xem xét so sánh được đề cập.

+0

Câu trả lời rất thông tin .. Tôi sẽ sử dụng H2 nhưng trước đó dưới đây là vài câu hỏi nhanh: 1. Tôi có thể nhúng H2 vào ứng dụng thương mại của mình miễn phí không (I kiểm tra trang web và thấy rằng trang web miễn phí nhưng vẫn muốn xác nhận với bạn) 2. Quan điểm của bạn về SQLLite và Firebird đối với H2 –

+4

@Yatendra 1. Có bạn có thể (http://www.h2database.com/html/license.html) 2. Firebird và SQLite là những sản phẩm tốt nhưng không phải là 100% Java (ví dụ: 't chạy trong cùng một quá trình Java) và điều này sẽ làm cho mọi thứ phức tạp hơn. Tôi sẽ đi H2. –

+0

Tôi thích nó, tất cả những gì tôi cần – RayanFar

7

Tôi muốn giới thiệu HSQLDB. Nó là nhỏ và nhanh và chạy tốt với Hibernate. Hibernate có một phương ngữ cho Derby DB là tốt (đã không sử dụng nó mặc dù và tôi nghĩ rằng nó không được chính thức hỗ trợ bởi Hibernate chưa).

+0

Tôi đọc về HSQLDB. Họ nói rằng đó là cơ sở dữ liệu trong bộ nhớ mà không cần phải được cài đặt và cấu hình. Nếu nó vẫn còn trong bộ nhớ, thì nó sẽ tiêu tốn rất nhiều bộ nhớ cho chính máy chủ cơ sở dữ liệu và rất nhiều bộ nhớ cho dữ liệu mà chúng ta sẽ chèn vào nó. Tôi có thể giải thích câu nói trên là sai nhưng tôi không tìm thấy nhiều thông tin trên trang HSQLDB. Tôi đã tìm thấy thông tin trên trong hướng dẫn Hibernate. Đúng nếu tôi sai? Ngoài ra, nếu nó vẫn còn trong bộ nhớ, thì cách dữ liệu tồn tại giữa các lần chạy mulitple của ứng dụng. –

+3

Không HSQLDB * có thể * chạy như một bộ nhớ trong DB nhưng bạn cũng có thể lưu dữ liệu của bạn trên đĩa (về cơ bản nó chỉ là một thiết lập cấu hình). – Daff

4

Một giải pháp thay thế khác sẽ là SQLite.

Hibernate and SQLite

+0

Có phiên bản SQLite thuần Java không? Hoặc là phiên bản gốc dễ dàng triển khai? – Thilo

+0

Có một dưới http://sqljet.com/ hoặc nếu bạn không thích cái này, bạn có thể sử dụng Trình điều khiển JDBC sau: http://www.zentus.com/sqlitejdbc/ – Aurril

1

Bạn cũng có thể thử Firebird

Có một phiên bản nhúng và một phiên bản client/chế độ máy chủ

Dưới đây là một liên kết đến ngủ đông supported database

+0

Tôi sẽ nói không. firebird là tuyệt vời, nhưng không phải là ánh sáng.Một con chim lửa nhúng hiện đại với các tập tin yêu cầu tối thiểu cơ bản đến abt 6mb mà không có bản thân db – nawfal

Các vấn đề liên quan