เครื่องมือ ORM ที่ดีสำหรับการพัฒนา Android? [ปิด]


285

ทุกคนที่ทำงานบน Android ('gPhone') มีหรือรู้จักสถานที่ที่ฉันสามารถหาเครื่องมือ ORM ที่ดีได้หรือไม่ รหัสถูกเขียนใน Java และฐานข้อมูลคือ SQLite สิ่งที่ฉันต้องการค้นหาคือเครื่องมือที่ให้คำจำกัดความของวัตถุสามารถสร้างตารางและฟังก์ชั่น CRUD อัตโนมัติ (ที่ยอดเยี่ยม) หรือยกเว้นว่าเป็นเครื่องมือที่สามารถใช้คำจำกัดความของตารางนิยามวัตถุ และสร้างฟังก์ชั่น CRUD อัตโนมัติ rub คือสิ่งทั้งหมดนี้จะต้องเกิดขึ้นภายใน Android framework ซึ่งมีอนุสัญญาเป็นของตัวเองว่าการเข้าถึงฐานข้อมูลทำงานอย่างไร


ฉันไม่คิดว่าจะมีให้บริการในตอนนี้
mparaz

2
มัน 2014 ฉันคิดว่าฉันจะพูดถึง Sprinkles ( github.com/emilsjolander/sprinkles ) เนื่องจากไม่มีใครพูดถึงมัน .. 500 ดาวบน GitHub บน Meaven กลางผู้สังเกตการณ์เนื้อหาคุ้มค่าการตรวจสอบ
AndroidGecko

ต้นปี 2015 Software Tree เพิ่งเปิดตัวJDXAซึ่งเป็น ORM ที่เรียบง่าย แต่ทรงพลังและยืดหยุ่นสำหรับ Android สนับสนุนการสืบทอดแบบหนึ่งต่อหนึ่งหลายต่อหลายหลายต่อหลายและหลายความสัมพันธ์ POJO ของ JDXA (วัตถุ Java เก่าธรรมดา) รูปแบบการเขียนโปรแกรมที่เป็นมิตรที่ไม่ก้าวก่ายไม่ต้องการให้คุณเปลี่ยนคลาส Java ของคุณในทางใดทางหนึ่ง: - ไม่จำเป็นต้องซับคลาสคลาสโดเมนของคุณจากคลาสพื้นฐานใด ๆ - ไม่จำเป็นต้องถ่วงซอร์สโค้ด ไม่ต้องการคลาส DAO - ไม่ต้องสร้างซอร์สโค้ด
Damodar Periwal

ตรวจสอบที่ดีนี้กวดวิชาใน JDXA ออม
Damodar Periwal

หากคุณต้องการธรรมดารหัส Android ตามธรรมชาติโดยไม่ต้องพึ่งพาห้องสมุดเพิ่มเติมดูที่ที่เพียร์ระดับ SQLite ตัวอย่างเช่นรหัสเครื่องกำเนิดไฟฟ้า มันขึ้นอยู่กับคำอธิบายประกอบและสนับสนุนคีย์หลักรวมข้อ จำกัด ที่ไม่ซ้ำกันและการจัดทำดัชนี
RookieGuy

คำตอบ:


111

คิดว่าฉันต้องการเพียงแค่เพิ่มฉัน $ 0.02 นี่เกี่ยวกับฉันแพคเกจ ORMLite

มันเป็นการทดแทนที่มีน้ำหนักเบาในการไฮเบอร์เนตและใช้การเรียกฐานข้อมูลระบบปฏิบัติการ Android เพื่อสนับสนุน SQLite บน Android นอกจากนี้ยังสนับสนุนประเภทฐานข้อมูลอื่น ๆ อีกมากมายที่ใช้ JDBC ในสถาปัตยกรรมอื่น ๆ เรามีรายชื่อผู้รับจดหมาย Androidสำหรับคำถาม ORMLite


1
ORMLite มีการสนับสนุนในตัวสำหรับความสัมพันธ์ (หนึ่ง | หลาย) - ถึง - (หลาย | หนึ่ง) ความสัมพันธ์หรือไม่ ฉันไม่สามารถหาข้อมูลได้มากนัก ... ถ้าไม่มีแผนสำหรับสิ่งนี้หรือไม่?
ferdystschenko

1
ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "สนับสนุน" มีโค้ดตัวอย่างบางส่วนเกี่ยวกับวิธีการใช้ "วัตถุแปลกปลอม" ซึ่งเป็นวิธีการแบบหนึ่งต่อหลายคนและมีตัวอย่างเกี่ยวกับวิธีใช้ตารางการเข้าร่วมเพื่อบรรลุเป้าหมายหลายต่อหลายคน ( ormlite.com/docs/examples ) โพสต์ไปยังรายการผู้ใช้พร้อมคำถามเพิ่มเติม ( groups.google.com/group/ormlite-user )
สีเทา

7
ใช่มันใหญ่กว่า ActiveAndroid อย่างแน่นอน ฟังก์ชั่นอื่น ๆ อีกมากมายเช่นกันแน่นอน ยังฟรีแวร์ซึ่งต่างจากใบอนุญาตของ AA แต่ถ้าขนาดเป็นเป้าหมาย ORMLite ไม่เหมาะกับคุณ
สีเทา

4
@Gray Ironic เนื่องจากมันควรจะเป็น "Lite": P
Salman von Abbas

5
แน่นอน @SalmanPK แม้ว่าจะมีองศาของไลต์ที่แตกต่างกัน :-)
สีเทา

66

คำถามนี้ไม่สามารถอายุ แต่กรอบงานที่แนะนำสามารถ ดังนั้นนี่คือรายการแรกของสิ่งที่ฉันพบว่ามีความสำคัญในกรอบดังกล่าวเพื่อเปรียบเทียบ:

  • มีสิ่งประดิษฐ์ Maven หรือ Gradle หรือไม่? (นั่นเป็นข้อดีที่มากขึ้นอยู่กับว่าคุณใช้ maven หรือ gradle, ชัด ๆ )
  • รหัสสามารถเข้าถึงได้ในวิธีที่ง่ายรวมถึงภาพรวมที่รวดเร็วในการตัดสินกิจกรรมหรือไม่? (รหัสที่โฮสต์บน GitHub นั้นเป็นข้อดีสำหรับฉันแน่นอน)
  • การจัดการปล่อย: มีแท็กปลด / วางจำหน่ายและสิ่งประดิษฐ์หรือไม่ (มีบางอย่างที่โฮสต์บน github และต้องการ git clone หรือเสนอ tarball หลักสำหรับการดาวน์โหลด - สำหรับฉันลบใหญ่ถ้าไม่มีแท็กปล่อยถูกตั้งค่าและแก้ไขใน README)
  • เป็นเรื่องขนาดฉันใส่คำแนะนำบางอย่างที่มันเป็นเรื่องง่ายที่จะได้รับผ่าน (ฉันไม่ได้ดาวน์โหลดอะไรเลยดังนั้นจากโครงการเหล่านั้นที่ไม่มีสิ่งประดิษฐ์ปล่อยไม่มีขนาด)

และนี่คือรายการของกรอบงานที่มีหมายเหตุเกี่ยวกับประเด็นข้างต้น ฉันค้นหา aBatisและ Hadi มากกว่านี้ แต่ฉันเพิ่มเฉพาะผู้ที่มีกิจกรรมหลังจาก 2011

ฉันไม่ได้ลองสิ่งเหล่านี้ แต่ฉันสามารถสำรองผู้อ่านปัจจุบันได้สักเล็กน้อยโดยการแสดงรายการโครงการที่มีอยู่ในปัจจุบัน กรุณาเพิ่มความคิดเห็นหากคุณรู้ว่าโครงการอื่น ๆ ที่ตอบสนองบางจุดดังกล่าวและมีการพัฒนาอย่างจริงจัง (ในช่วงเวลา) ที่เกิดขึ้น

แก้ไข (2013 พฤศจิกายน): อัปเดตรายการเป็นสถานะปัจจุบันของโครงการ บางส่วนของแนวหินเหล่านี้ได้เพิ่มแท็กปล่อยไปยัง repos GitHub รวมถึงการสนับสนุน Maven / Gradle การทำงานที่ดี!

แก้ไข (2015 เม.ย. ): อัปเดตรายการเพิ่ม Sprinkles (ตามความคิดเห็นโดย @AndroidGecko) และ Realm.io


ฉันขอแนะนำให้ใช้ Realm มันเร็วและลื่นไหลจริงๆ!
Crono

39

หากประสิทธิภาพการทำงานและเรื่องขนาดรหัสตรวจสอบgreenDAO ฉันเป็นผู้เขียนและแรงจูงใจของฉันในการสร้าง ORM อื่นก็เพื่อหลีกเลี่ยงการสะท้อนในฮอตสปอต ปรากฎว่า greenDAO สามารถเร็วกว่า ORMLite ได้ถึง 4 เท่า ชำระเงินที่หน้าคุณสมบัติสำหรับรายละเอียด


5
ดูค่อนข้างดี แต่การสร้าง Dao เป็นเรื่องที่ยากสำหรับฉัน :(
Chris.Jenkins

4
ใช่การสร้างรหัสเป็นขั้นตอนเพิ่มเติมสำหรับนักพัฒนา แต่มันช่วยให้คุณประหยัดประสิทธิภาพได้อย่างมากในแอป ผลการบูตฐานข้อมูลและการแยกวิเคราะห์จะเร็วขึ้นอย่างมาก เครื่องมืออื่น ๆ ใช้การสะท้อนซึ่งช้าใน Android อย่างทารุณ
Markus Junginger

1
ฉันใช้ greenDao ในโครงการของฉันและฉันก็พอใจมาก
mabac

3
@greenrobot คุณมีการนำเสนอบางส่วนของ "แอพขนาดใหญ่" โดยใช้ lib ของคุณหรือไม่?
StErMi

1
@StErMi Path ใช้ greenDAO มีการติดตั้ง> 1 M ดูgithub.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger

10

ฉันไม่รู้อะไรเลยว่าเป็นสิ่งที่คุณต้องการอย่างแน่นอน แต่มีทางเลือกอื่นสำหรับ SQLite ที่คุณอาจพบว่ามีประโยชน์หากความต้องการสถาปัตยกรรมของคุณยืดหยุ่น มันอาจจะคุ้มค่าที่จะลองdb4o :


ฉันมีผลดีกับ DB40 ... อยากจะชำระเงินที่ใช้งาน Android แต่ ...
เบน

1
activeandroid.comลักษณะเย็นฉันกำลังมองไปข้างหน้าเพื่อให้มันหมุน
SLF

9

ActiveAndroid ($ 20)ดูเหมือนว่าอาจเป็นสิ่งที่คุณต้องการ


14
ฉันรู้ว่าคุณไม่ได้พยายามอะไรที่นี่ แต่คุณช่วยเปิดเผยความเกี่ยวพันของคุณในโพสต์เมื่อคุณพูดถึงหนึ่งในผลิตภัณฑ์ของคุณเองใน SO? ฉันรู้ว่าชื่อของคุณอยู่ในส่วนท้ายของหน้าเชื่อมโยง แต่เรากำลังพยายามแยกแยะเรื่องastroturfing (ซึ่งไม่ใช่สิ่งนี้) ดังนั้นเราจึงขอให้ทุกคนปฏิบัติตามแนวทางการเปิดเผยข้อมูลแบบเดียวกัน ขอบคุณ
Bill the Lizard

4
แค่หัวขึ้น ActiveAndroid ไม่ฟรี
gak

7
ActiveAndroid ตอนนี้ฟรีและโอเพ่นซอร์ส - pardom.github.com/ActiveAndroid
Michael Pardo

7

ฉันชอบ ActiveAndroid มันเขียนโดยเฉพาะสำหรับ Android ดูเหมือนว่า มันให้ความรู้สึกที่เป็นบวกกับฉัน

ฉันมีประสบการณ์ Ruby on Rails บ้างและถ้าคุณชอบวิธี Rails ของ ActiveRecord คุณสามารถเคลื่อนที่อย่างรวดเร็วด้วยห้องสมุดนี้

https://www.activeandroid.com/


กรอบงานที่ดี แต่มันขัดแย้งกับไลบรารี org.codehous.jackson ดังนั้นถ้าคุณใช้มันในโครงการของคุณคุณจะไม่สามารถใช้ ActveAndroid ได้
endryha

1
มันขัดแย้งกันอย่างไร? คุณรายงานว่ามันเป็นข้อผิดพลาดในtracker.activeandroid.comหรือไม่?
Michael Pardo

อาจมีลักษณะที่androrm.the-pixelpla.netมันมีคุณสมบัติส่วนใหญ่และฉันจะพูดมากยิ่งขึ้น บวก: มันฟรีและโอเพนซอร์ส
philgiese


6

ฉันกำลังมองหา ORM บน Android ฉันทดสอบActiveAndroid , NeoDatisและdb4oและฉันคิดว่าฉันจะใช้หนึ่งในสองอันสุดท้าย

NeoDatis และ db4o มีความคล้ายคลึงกันดังนั้นฉันต้องการคำแนะนำในการเลือกที่ดีที่สุด มีใครบางคนใช้หนึ่งในนั้นในโครงการของเขาหรือไม่ ฉันจะใช้แอพฟรีและจ่ายเงิน แต่ดูเหมือนว่าทั้งสองไม่มีข้อ จำกัด สิทธิ์การใช้งานสำหรับ Android

มีเกณฑ์มาตรฐานอยู่ที่นี่ซึ่งดูเหมือนว่าจะบอกว่า NeoDatis เร็วกว่า db4o แต่ฉันไม่รู้ว่าเราสามารถแสดงความคิดเห็นได้หรือไม่


Db40 และ NeoDatis เป็นฐานข้อมูลวัตถุเพียงขนาดของสิ่งเหล่านี้เป็นสิ่งต้องห้ามโดยสิ้นเชิงที่จะใช้งานบน Android ใด ๆ
Bostone

@ DroidIn.net คุณสามารถให้ลิงค์ที่สนับสนุนความคิดเห็นของคุณได้หรือไม่?
Sergio

3

ผู้มาใหม่อีกหนึ่งคน: android-active-record มันมีน้ำหนักเบามากและใช้งานง่ายสำหรับกรอบการคงอยู่สำหรับ Android ที่ได้รับการสนับสนุนโดย SQLite http://code.google.com/p/android-active-record/


ดูเหมือนว่ามันจะยังอยู่ในช่วงการพัฒนา แต่ก็คุ้มค่าที่จะจับตามอง!
GWLlosa

พยายาม - มันเป็นการเริ่มต้นที่ดี แต่ต้องการงานจำนวนมากเพื่อเตรียมพร้อมสำหรับช่วงเวลาสำคัญ
Bostone

2

ActiveRecordJSจาก Aptana เป็น Javascript ORM ที่ควรรันบน gPhone มันถูกออกแบบมาเพื่อทำงานกับ Jaxer และ Gears เมื่อคุณใช้ Jaxer Adapters คุณสามารถเชื่อมต่อกับ SQLLite

อัปเดต: ฉันไม่คิดว่าจะทำให้ชัดเจน แต่ ActiveRecordJS เป็น ORM ที่รันฝั่งไคลเอ็นต์ซึ่งอาจเป็นประโยชน์กับคุณบน gPhone


ในรหัส Java? หรือในรหัส JavaScript?
GWLlosa

ฉันค่อนข้างแน่ใจว่าสิ่งที่คุณกำลังพูดถึงคือโซลูชัน Javascript สำหรับโปรแกรมประยุกต์บนเว็บเบราว์เซอร์ ฉันไม่เห็นความเกี่ยวข้องกับการพัฒนาแอปในเครื่องสำหรับ Android
Brian Lacy


1

ฉันได้พัฒนาการใช้งาน JPA ORM สำหรับ Android ของตัวเอง ยังไม่เสร็จสมบูรณ์ แต่คุณสามารถใส่คำอธิบายประกอบคลาสด้วยคำอธิบายประกอบ @Entity, @Id, @Column และคุณจะได้รับเอนทิตี JPA ที่สามารถจัดเก็บและดึงข้อมูลจากฐานข้อมูล SQLite ต้องมีคุณสมบัติเพิ่มเติม & การล้างข้อมูลก่อนที่ฉันจะโพสต์สู่สาธารณะ แต่ถ้ามีความสนใจเพียงพอมันอาจเร่งความพยายามของฉัน


ฟังดูน่าสนใจแล้วคุณมี s.th ไหม ลองดู / ลองดู? ไชโยมาร์ติน
MartinGrotzke

มากกว่าหนึ่งปีต่อมาความก้าวหน้าของสิ่งนี้เป็นอย่างไร JPA + คำอธิบายประกอบบน Android ฟังดูดีมาก!
Spidey

1

แม้ว่านี่จะเป็นการโพสต์เก่า แต่ก็ยังคงมีความเกี่ยวข้อง ดังนั้นฉันต้องการแบ่งปันบทความที่น่าสนใจและแนวทางที่ดีในการแก้ไขปัญหาส่วนใหญ่ที่กล่าวถึงในคำถาม:

http://blog.codecentric.de/en/2011/04/android-persistence-accelerated-small-inhouse-orm/

หวังว่าทุกคนจะพบว่าสิ่งนี้มีประโยชน์เหมือนตัวฉัน!


1

DroidPartsของฉันเอง/http://droidparts.org/เพิ่งมาถึง v0.5 มันเป็นห้องสมุด DI / ORM และอีกมากมาย
เอกสารไม่มาก แต่มีแอพตัวอย่าง


1
อาจเพิ่มเอกสารที่เหมาะสมเป็นความคิดที่ดี
Subin Sebastian

0

มีประสบการณ์ด้านลบกับ db4o (ข้อ 8): การจัดทำดัชนีทำงานไม่ถูกต้อง (ข้อยกเว้นอื่น ๆ ) ดังนั้นฉันจึงไม่ได้จัดการวิธีการหลีกเลี่ยงการสร้างรายการที่ซ้ำกันในตารางต่างประเทศเมื่อมีวัตถุในโครงสร้างวัตถุ คำอธิบายรายละเอียดอื่น ๆ ในของฉันคำถาม หวังว่าสักวันมันจะดีกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.