2009-02-04 8 views
8

Tôi đang cố gắng tìm cách tốt nhất để lưu trạng thái của một ứng dụng đơn giản. Từ điểm nhìn của DB, có 4/5 bảng với các trường ngày và các mối quan hệ không được thực hiện.Cách tốt nhất để lưu dữ liệu trong một ứng dụng Java là gì?

Vì ứng dụng rất đơn giản và tôi muốn người dùng có tùy chọn di chuyển dữ liệu xung quanh (bút usb, hộp kéo thả, v.v ...), tôi muốn đặt tất cả dữ liệu vào một tệp.

Cách/lib tốt nhất để làm điều này là gì?

XML thường là định dạng tốt nhất cho điều này (khả năng đọc & tính mở), nhưng tôi không tìm thấy bất kỳ lib tuyệt vời nào cho điều này mà không thực hiện SAX/DOM.

Trả lời

11

Nếu bạn muốn sử dụng XML, hãy xem XStream để tuần tự hóa đơn giản các đối tượng Java vào XML. Đây là "Two minute tutorial".

Nếu bạn muốn một cái gì đó đơn giản, tiêu chuẩn Java Properties format cũng có thể là một cách để lưu trữ/tải một số dữ liệu nhỏ.

+1

java.util.Properties cũng thực hiện XML. –

+0

XStream dường như chỉ là những gì tôi đang tìm kiếm. Bạn có biết về bất kỳ mã nào có sẵn để tối ưu hóa các bài viết trong lib này không? Tôi không nên ghi vào đĩa trên mọi thay đổi. – fabiopedrosa

+0

Bạn hoàn toàn có thể bắt đầu viết. XStream sẽ không thực hiện bất kỳ thao tác tiết kiệm tự động nào cho bạn. –

0

2 lựa chọn khác mà bạn có thể cân nhắc -

  • HSQLDB là một db sql nhỏ viết bằng java. Có liên quan khác cho mục đích của bạn, nó có thể được cấu hình để chỉ đơn giản là viết vào một tập tin csv như nó lưu trữ dữ liệu, vì vậy bạn có thể hình dung sử dụng nó ra văn bản như một kho dữ liệu di động và vẫn sử dụng sql, nếu đó là những gì bạn thích .
  • Tùy chọn thứ hai có thể là viết trực tiếp kho dữ liệu vào một tệp được tuần tự hóa trực tiếp hoặc thông qua thư viện như prevayler. Rất tốt hiệu suất và đơn giản để thực hiện, điểm yếu là độ mỏng manh và độ mờ của định dạng.

Nhưng nếu dữ liệu đủ nhỏ, xml có thể ít phiền toái hơn nhiều.

1

xem xét sử dụng chú thích JAXB đơn giản đi kèm với JDK:

@XmlRootElement 
private class Foo { 
    @XmlAttribute 
    private String text = "bar"; 
} 

đây là một blog-post of mine cung cấp cho biết thêm chi tiết về cách sử dụng đơn giản này của JAXB (nó cũng mentiones một "sang trọng" cách tiếp cận JAXB dựa trên hơn - trong trường hợp bạn cần kiểm soát tốt hơn lược đồ XML của mình, ví dụ để đảm bảo khả năng tương thích ngược)

+0

Sự khác biệt với XStream là gì? – lony

0

Nếu bạn không cần cung cấp ý nghĩa ngữ nghĩa cho dữ liệu của mình thì XML có thể là một lựa chọn sai. Tôi khuyên bạn nên sử dụng giải pháp thay thế không có chất béo JSON, được xây dựng tự nhiên hơn cho cấu trúc dữ liệu.

+0

JSON đau khổ để deserialize. Không gõ mạnh có nghĩa là bạn cần phải biết cấu trúc dữ liệu.Thực sự là một bộ ngắt trò chơi, nhưng cảm thấy yếu khi tôi thử nó để giữ lại dữ liệu Java. – Tim