Bất kỳ công cụ ORM tốt để phát triển Android? [đóng cửa]


285

Bất cứ ai làm việc trên Android ('gPhone') đều có hoặc biết nơi tôi có thể tìm thấy một công cụ ORM tốt cho nó? Mã được viết bằng Java và cơ sở dữ liệu là SQLite. Những gì tôi muốn tìm là một công cụ đưa ra định nghĩa đối tượng, có thể tự động tạo các bảng và các hàm CRUD (sẽ rất tuyệt), hoặc, chặn rằng, một công cụ có thể lấy định nghĩa bảng, định nghĩa đối tượng, và tự động tạo chức năng CRUD. Điều khó hiểu là tất cả những điều này phải xảy ra trong khuôn khổ Android, có các quy ước riêng về cách truy cập cơ sở dữ liệu hoạt động.


Tôi không nghĩ rằng có bất kỳ có sẵn bây giờ.
mparaz

2
nó năm 2014. Tôi nghĩ rằng tôi sẽ đề cập đến Sprinkles ( github.com/emilsjolander/sprinkles ) vì không có ai đã đề cập đến nó .. 500 ngôi sao trên github, trên meaven trung ương, các nhà quan sát nội dung, giá trị kiểm tra
AndroidGecko

Đó là 2015. Software Tree gần đây đã phát hành JDXA , một ORM đơn giản nhưng mạnh mẽ và linh hoạt cho Android. Hỗ trợ kế thừa, một đến một, một với nhiều, nhiều đến một, và nhiều đến nhiều mối quan hệ. Mô hình lập trình không xâm phạm thân thiện POJO (Các đối tượng Java thuần túy) của JDXA không yêu cầu bạn thay đổi các lớp Java của mình theo bất kỳ cách nào: - Không cần phải phân lớp các lớp miền của bạn từ bất kỳ lớp cơ sở nào - Không cần phải làm lộn xộn mã nguồn của bạn bằng các chú thích - Không cần các lớp DAO - Không tạo mã nguồn
Damodar Periwal


Nếu bạn thích mã Android tự nhiên đơn giản mà không cần phụ thuộc thư viện bổ sung, hãy xem ví dụ về trình tạo mã lớp ngang hàng SQLite . Nó dựa trên chú thích và hỗ trợ các khóa chính kết hợp, kết hợp các ràng buộc và lập chỉ mục duy nhất.
RookieGuy

Câu trả lời:


111

Tôi nghĩ rằng tôi chỉ cần thêm 0,02 đô la vào đây về gói ORMLite của mình .

Nó là một sự thay thế nhẹ cho Hibernate và sử dụng các cuộc gọi cơ sở dữ liệu hệ điều hành Android gốc để hỗ trợ SQLite trên Android. Nó cũng hỗ trợ nhiều loại cơ sở dữ liệu khác bằng cách sử dụng JDBC trên các kiến ​​trúc khác. Chúng tôi có một danh sách gửi thư Android cho các câu hỏi ORMLite.


1
ORMLite có hỗ trợ tích hợp cho các mối quan hệ (một | nhiều) -to- (nhiều | một) không? Tôi không thể tìm thấy nhiều thông tin về điều đó ... Nếu không, có kế hoạch nào cho việc này không?
Ferdystsunn

1
Phụ thuộc vào những gì bạn có nghĩa là "hỗ trợ". Có một số mã ví dụ về cách sử dụng "đối tượng nước ngoài", đó là cách bạn thực hiện một-nhiều và có những ví dụ về cách sử dụng bảng tham gia để thực hiện nhiều-nhiều ( ormlite.com/docs/examples ). Đăng lên danh sách người dùng với nhiều câu hỏi hơn ( Groups.google.com/group/ormlite-user ).
Xám

7
Vâng, nó chắc chắn lớn hơn ActiveAndroid. Tất nhiên nhiều chức năng hơn. Ngoài ra phần mềm miễn phí trái ngược với giấy phép của AA. Nhưng nếu kích thước là mục tiêu, ORMLite không dành cho bạn.
Xám

4
@Gray mỉa mai vì nó được coi là "Lite": P
Salman von Abbas

5
Thật vậy @SalmanPK. Mặc dù có mức độ khác nhau của lite. :-)
Xám

66

Câu hỏi này không thể tuổi nhưng các khung đề xuất có thể. Vì vậy, đây là danh sách những gì tôi thấy quan trọng trong các khung như vậy để so sánh:

  • Có một tạo tác Maven hoặc Gradle? (đó là một điểm cộng lớn tùy thuộc vào việc bạn sử dụng maven hay gradle, rõ ràng)
  • Mã có thể truy cập một cách dễ dàng bao gồm tổng quan nhanh về các cam kết để đánh giá hoạt động không? (mã được lưu trữ trên github là một điểm cộng nhất định đối với tôi, trong vấn đề đó)
  • Quản lý phát hành: có phát hành / phát hành thẻ và tạo tác cho nó không? (có một số được lưu trữ trên github và yêu cầu git clone hoặc cung cấp tarball chính để tải xuống - đối với tôi một điểm trừ lớn nếu thậm chí không phát hành thẻ được đặt và xử lý trong README)
  • vì vấn đề kích thước tôi đưa ra một số gợi ý nơi dễ dàng có được (Tôi không tải xuống bất cứ thứ gì, vì vậy từ những dự án không cung cấp tạo tác phát hành, không có kích thước)

Và đây là danh sách các khung có ghi chú về các điểm trên. Tôi đã tìm kiếm một số giống như aBatis và Hadi nhưng tôi chỉ thêm những người có một số hoạt động sau năm 2011.

Tôi chưa từng thử bất kỳ thứ nào trong số đó nhưng có lẽ tôi có thể dành cho độc giả hiện tại một chút thời gian bằng cách liệt kê các dự án đang hoạt động hiện nay. Vui lòng thêm một nhận xét nếu bạn biết về các dự án khác đáp ứng một số điểm trên và có một số phát triển nghiêm túc (trong một thời gian) đang diễn ra.

EDIT (2013 tháng 11): cập nhật danh sách về tình trạng hiện tại của các dự án. Một số trong số này đã thêm các thẻ phát hành vào repos github của họ cũng như hỗ trợ Maven / Gradle. Làm tốt lắm!

EDIT (2015 tháng 4): đã cập nhật danh sách, thêm Sprinkles (theo nhận xét của @AndroidGecko) và Realm.io.


Tôi thực sự khuyên bạn nên sử dụng Realm, nó rất nhanh và hiệu quả!
Crono

39

Nếu hiệu suất và kích thước mã có vấn đề, hãy kiểm tra greenDAO . Tôi là tác giả của nó và động lực của tôi để tạo ra một ORM khác là để tránh sự phản chiếu trong các điểm nóng. Hóa ra greenDAO có thể nhanh hơn ORMLite tới 4 lần. Kiểm tra trang tính năng để biết chi tiết.


5
Trông khá tốt, nhưng phải tạo ra Dao là một
bước ngoặt

4
Đúng, tạo mã là một bước bổ sung cho các nhà phát triển, nhưng nó giúp bạn tiết kiệm rất nhiều hiệu suất trong ứng dụng. Cả bootstrapping và phân tích kết quả cơ sở dữ liệu đều nhanh hơn đáng kể. Các công cụ khác dựa trên sự phản chiếu, vốn rất chậm trong Android.
Markus Junginger

1
Tôi đang sử dụng greenDao trong các dự án của mình và tôi rất hài lòng với nó.
mabac

3
@greenrobot bạn có một số chương trình giới thiệu "ứng dụng lớn" bằng lib của mình không?
StErMi

1
@StErMi Path đang sử dụng greenDAO. Họ có> 1 M cài đặt. Xem github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger

10

Tôi không biết bất cứ điều gì chính xác là những gì bạn đang yêu cầu, nhưng có một sự thay thế cho SQLite mà bạn có thể thấy hữu ích nếu các yêu cầu kiến ​​trúc của bạn linh hoạt. Có thể đáng để kiểm tra db4o :


tôi đã có kết quả tốt với DB40 ... muốn kiểm tra Active Android mặc dù ...
Ben

1
activeandroid.com trông rất tuyệt, tôi mong muốn được quay nó
slf

9

ActiveAndroid ($ 20) có vẻ như chính xác những gì bạn cần.


14
Tôi biết bạn không thử bất cứ điều gì nhảm nhí ở đây, nhưng bạn có thể vui lòng tiết lộ sự liên kết của bạn trong các bài đăng của bạn khi bạn đề cập đến một trong những sản phẩm của riêng bạn trên SO không? Tôi biết tên của bạn là ở chân của trang liên kết, nhưng chúng tôi đang cố gắng để crack xuống trên lợp cỏ giả (mà điều này không phải là), vì vậy chúng tôi đang yêu cầu tất cả mọi người làm theo hướng dẫn tiết lộ như vậy. Cảm ơn.
Lập hóa đơn cho thằn lằn

4
Chỉ cần ngẩng cao đầu, ActiveAndroid không miễn phí.
gak

7
ActiveAndroid hiện miễn phí và là nguồn mở - pardom.github.com/ActiveAndroid
Michael Pardo

7

Tôi thích ActiveAndroid. Nó dường như được viết riêng cho Android. Đó là một điểm cộng với tôi.

Tôi có một số kinh nghiệm về Ruby on Rails và nếu bạn thích cách Rails của ActiveRecord, bạn có thể nhanh chóng di chuyển với thư viện này.

https://www.activeandroid.com/


Khung công tác đẹp, nhưng nó xung đột với thư viện org.codehous.jackson, vì vậy nếu bạn sử dụng nó trong dự án của mình, bạn sẽ không thể sử dụng ActveAndroid
endryha

1
Làm thế nào để nó xung đột? Bạn đã báo cáo đó là một lỗi trong tracker.activeandroid.com ?
Michael Pardo

Có lẽ hãy xem androrm.the-pixelpla.net nó có hầu hết các tính năng và tôi sẽ nói thêm một số tính năng nữa. Thêm vào đó: nó là nguồn mở và miễn phí.
philgiese


6

Tôi cũng đang tìm kiếm một ORM trên Android. Tôi đã thử nghiệm ActiveAndroid , NeoDatisdb4o và tôi nghĩ rằng tôi sẽ sử dụng một trong hai cái cuối cùng.

NeoDatis và db4o thực sự giống nhau, vì vậy tôi muốn một số lời khuyên để chọn cái tốt nhất. Có ai đó sử dụng một trong số họ trong dự án của mình? Tôi sẽ sử dụng nó cho ứng dụng miễn phí và trả phí, nhưng dường như cả hai không có bất kỳ giới hạn giấy phép nào cho Android.

Có một điểm chuẩn ở đây dường như nói rằng NeoDatis nhanh hơn db4o, nhưng tôi không biết liệu chúng ta có thể dựa trên ý kiến ​​của mình về điều này không.


Db40 và NeoDatis là cơ sở dữ liệu đối tượng, kích thước của những thứ này là hoàn toàn cấm sử dụng trên Android
Bostone

@ DroidIn.net bạn có thể cung cấp một liên kết duy trì bình luận của bạn?
Sergio

3

Thêm một người mới: android-active-record. Khung rất bền và dễ sử dụng cho Android được hỗ trợ bởi SQLite http://code.google.com.vn/p/android-active-record/


Có vẻ như nó vẫn còn trong giai đoạn đầu phát triển, nhưng đáng để mắt tới!
GWLlosa

Đã thử nó - đó là một khởi đầu tốt đẹp nhưng cần rất nhiều công việc để sẵn sàng cho thời gian chính
Bostone

2

ActiveRecordJS từ Aptana là một ORM Javascript nên chạy trên gPhone. Nó được thiết kế để làm việc với Jaxer và Gears. Khi bạn sử dụng Bộ điều hợp Jaxer, bạn có thể kết nối với SQLLite.

CẬP NHẬT: Tôi không nghĩ rằng tôi đã nói rõ, nhưng ActiveRecordJS là một ORM chạy phía máy khách, đây có thể là một lợi thế cho bạn trên gPhone.


Trong mã Java? Hoặc trong mã JavaScript?
GWLlosa

Tôi khá chắc chắn những gì bạn đang nói là một giải pháp Javascript hoàn toàn dành cho các ứng dụng dựa trên trình duyệt (Web). Tôi không thấy nó liên quan đến phát triển ứng dụng gốc cho Android.
Brian Lacy


1

Tôi đã phát triển triển khai JPM ORM cho Android của riêng mình. Nó chưa hoàn thành đầy đủ tính năng, nhưng bạn có thể chú thích lớp với các chú thích @Entity, @Id, @Column và bạn nhận được các thực thể JPA có thể được lưu trữ và truy xuất từ ​​cơ sở dữ liệu SQLite. Nó cần thêm một số tính năng & dọn dẹp trước khi tôi đăng nó ra công chúng, nhưng nếu có đủ sự quan tâm, nó có thể đẩy nhanh nỗ lực của tôi.


Nghe có vẻ thú vị, bạn đã s.th. để có một cái nhìn tại / để thử? Chúc mừng, Martin
MartinGrotzke

Hơn một năm sau, tiến độ thế nào về điều này? Chú thích JPA + trên Android nghe thật TUYỆT VỜI!
Spidey



0

Có trải nghiệm tiêu cực với db4o (câu 8): lập chỉ mục không hoạt động đúng (ngoại trừ, v.v.). Vì vậy, tôi đã không quản lý làm thế nào để tránh tạo các bản sao trong bảng nước ngoài khi có đối tượng trong cấu trúc đối tượng. Giải thích chi tiết hơn trong câu hỏi của tôi . Hy vọng một ngày nào đó sẽ tốt hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.