안드로이드 개발을위한 좋은 ORM 툴? [닫은]


285

Android ( 'gPhone')에서 일하는 사람이라면 좋은 ORM 도구를 찾을 수있는 곳이 있습니까? 코드는 Java로 작성되었으며 데이터베이스는 SQLite입니다. 내가 찾고 싶은 것은 객체 정의가 주어진 도구, 테이블과 CRUD 함수를 자동 생성하거나 (굉장히 좋을 것입니다) 또는 테이블 정의를 취할 수있는 도구, 객체 정의, CRUD 기능을 자동 생성합니다. 문제는 데이터베이스 액세스의 작동 방식에 대한 자체 규칙이있는 Android 프레임 워크 내에서이 모든 것이 발생해야한다는 것입니다.


현재 사용할 수있는 제품이 없다고 생각합니다.
mparaz

2
그 2014 년 나는 뿌리 (언급 할 것이다 생각 github.com/emilsjolander/sprinkles을 아무도 그것을 언급하지 않았기 때문에) ... 500 별을 GitHub의에 meaven 중앙, 내용 관찰자, 가치 확인에
AndroidGecko

Software Tree는 최근 간단하지만 강력하고 유연한 Android 용 ORM 인 JDXA 를 출시했습니다. 상속, 일대일, 일대 다, 다 대일 및 다 대다 관계를 지원합니다. JDXA의 POJO (Plain Old Java Objects) 친화적 비 침입 프로그래밍 모델에서는 Java 클래스를 어떤 방식 으로든 변경할 필요가 없습니다.-기본 클래스에서 도메인 클래스를 서브 클래스화할 필요가 없습니다. DAO 클래스에 대한 필요가 없습니다 - 아니 소스 코드 생성
Damodar Periwal

JDXA ORM에 관한 이 훌륭한 튜토리얼을 확인하십시오 .
Damodar Periwal

추가 라이브러리 종속성없이 일반 자연 Android 코드를 선호하는 경우 SQLite 피어 클래스 코드 생성기 예제를 살펴보십시오 . 주석 기반이며 결합 된 기본 키, 결합 된 고유 제한 조건 및 색인 작성을 지원합니다.
RookieGuy

답변:


111

ORMLite 패키지 에 대해 여기에 $ 0.02를 추가한다고 생각했습니다 .

Hibernate를 경량으로 대체하고 기본 Android OS 데이터베이스 호출을 사용하여 Android에서 SQLite를 지원합니다. 또한 다른 아키텍처에서 JDBC를 사용하여 다른 많은 데이터베이스 유형을 지원합니다. 우리는이 안드로이드 메일 링리스트 ORMLite의 질문을.


1
ORMLite는 (일 | 일)-대-(일) | 일 관계를 기본적으로 지원합니까? 나는 그것에 대해 많은 정보를 찾을 수 없습니다 ... 그렇지 않다면, 이것에 대한 계획이 있습니까?
ferdystschenko

1
"지원"의 의미에 따라 다릅니다. 일대 다 방법 인 "외부 개체"를 사용하는 방법에 대한 예제 코드가 있으며 조인 테이블을 사용하여 다 대다 ( ormlite.com/docs/examples ) 를 수행하는 방법에 대한 예제가 있습니다 . 추가 질문이있는 사용자 목록에 게시하십시오 ( groups.google.com/group/ormlite-user ).
그레이

7
예, 확실히 ActiveAndroid보다 큽니다. 물론 훨씬 더 많은 기능. AA의 라이센스와 달리 프리웨어도 있습니다. 그러나 크기가 목표라면 ORMLite가 적합하지 않습니다.
그레이

4
@Lite "이기 때문에 @Gray Ironic : P
Salman von Abbas

5
실제로 @SalmanPK. 다양한 정도의 라이트가 있지만. :-)
회색

66

이 질문은 노화 될 수 없지만 제안 된 프레임 워크는 가능합니다. 그래서, 먼저 비교를 위해 그러한 프레임 워크에서 중요하게 생각하는 목록이 있습니다.

  • Maven 또는 Gradle 아티팩트가 있습니까? (확실히 maven을 사용하는지 gradle을 사용하는지에 따라 큰 장점입니다)
  • 활동을 판단하기 위해 커밋에 대한 빠른 개요를 포함하여 쉬운 방법으로 코드에 액세스 할 수 있습니까? (github에서 호스팅되는 코드는 그 문제에 대한 확실한 플러스입니다)
  • 릴리스 관리 : 릴리스 / 릴리스 태그 및 아티팩트가 있습니까? (github에서 호스팅되고 git clone이 필요하거나 다운로드를 위해 마스터 타르볼을 제공하는 것이 있습니다-릴리스 태그조차도 README에서 설정되고 해결되지 않은 경우 큰 마이너스입니다)
  • 크기가 중요하기 때문에 쉽게 얻을 수있는 힌트를 얻었습니다 (아무 것도 다운로드하지 않았으므로 릴리스 아티팩트를 제공하지 않는 프로젝트에서는 크기가 없습니다)

그리고 위의 요점을 메모 한 프레임 워크 목록이 있습니다. 나는 aBatis 와 Hadi 처럼 더 많이 찾았 지만 2011 년 이후에 활동이 있었던 것들만 추가했습니다.

나는 그 중 하나를 시도하지 않았지만 현재 활동중인 프로젝트를 나열하여 현재 독자에게 약간의 시간을 절약 할 수 있습니다. 위의 요점 중 일부를 만족하고 (시간이 지남에 따라) 진지한 개발이 진행중인 다른 프로젝트에 대해 알고 있다면 의견을 추가하십시오.

편집 (2013 년 11 월) : 목록을 프로젝트의 현재 상태로 업데이트했습니다. 이들 중 일부는 Maven / Gradle 지원뿐만 아니라 github 저장소에 릴리스 태그를 추가했습니다. 잘 했어!

편집 (2015 년 4 월) : 목록을 업데이트하고 Sprinkles (@AndroidGecko의 의견에 따라)와 Realm.io를 추가했습니다.


Realm을 사용하는 것이 좋습니다. 정말 빠르고 유연합니다.
Crono

39

성능 및 코드 크기가 중요한 경우 greenDAO를 확인하십시오 . 나는 그것의 저자이고, 또 다른 ORM을 창조하려는 동기는 핫스팟에서 반사를 피하는 것이 었습니다. greenDAO는 ORMLite보다 최대 4 배 빠릅니다. 자세한 내용 은 기능 페이지 를 확인하십시오.


5
꽤 좋아 보이지만 Dao를 생성
해야하는

4
예. 코드 생성은 개발자에게 추가 단계이지만 앱에서 많은 성능을 절약합니다. 부트 스트랩 및 구문 분석 데이터베이스 결과는 모두 훨씬 빠릅니다. 다른 툴은 리플렉션에 의존하는데, 안드로이드에서는 매우 느리다.
Markus Junginger

1
프로젝트에서 greenDao를 사용하고 있으며 매우 기쁘게 생각합니다.
mabac

3
@greenrobot lib를 사용하는 "큰 앱"의 쇼케이스가 있습니까?
StErMi

1
@StErMi Path는 greenDAO를 사용하고 있습니다. 1M 이상 설치되어 있습니다. github.com/greenrobot/greenDAO/issues/20#issuecomment-13278922
Markus Junginger를

10

나는 정확히 당신이 요구하는 것을 알지 못하지만 아키텍처 요구 사항이 유연하다면 SQLite에 대한 대안이 유용 할 수 있습니다. db4o를 확인하는 것이 좋습니다 .


난 ... 액티브 안드로이드 불구하고 체크 아웃 싶어 ... DB40와 함께 좋은 결과를 가지고

1
activeandroid.com 멋지다, 나는 그것을 스핀 기대하고있다
slf

9

ActiveAndroid ($ 20) 는 정확히 필요한 것 같습니다.


14
나는 당신이 여기서 교묘 한 일을 시도하지 않는다는 것을 알고 있지만, 당신이 당신의 제품 중 하나를 언급 할 때 당신의 게시물에 당신의 소속을 공개 할 수 있습니까? 귀하의 이름이 링크 된 페이지의 바닥 글에 있다는 것을 알고 있습니다. 그러나 Googleastroturfing 을 단속하려고 노력하고 있습니다 (그렇지 않은 경우). 감사.
Bill the Lizard

4
ActiveAndroid는 무료가 아닙니다.
gak

7
ActiveAndroid는 이제 무료이며 오픈 소스입니다 -pardom.github.com/ActiveAndroid
Michael Pardo

7

ActiveAndroid를 좋아했습니다. 그것은 안드로이드 용으로 특별히 작성된 것 같습니다. 그것은 나에게 플러스 느낌입니다.

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 2016 년


6

Android에서 ORM을 찾고 있습니다. ActiveAndroid , NeoDatisdb4o 테스트 했으며 마지막 두 가지 중 하나를 사용한다고 생각합니다.

NeoDatis와 db4o는 실제로 유사하므로 가장 좋은 것을 선택하기 위해 조언을 원합니다. 누군가 그의 프로젝트에서 그들 중 하나를 사용하고 있습니까? 무료 및 유료 앱으로 사용하지만 둘은 Android의 라이센스 제한이없는 것 같습니다.

이 벤치 마크입니다 여기 NeoDatis 빨리 db4o는보다 말을 보이지만, 우리는이에 내 의견을 기반으로 할 수 있을지 모르겠어요.


Db40과 NeoDatis는 객체 데이터베이스이며, 이것의 크기는 안드로이드에서 사용하기가 완전히 금지되어 있습니다
Bostone

@ DroidIn.net 댓글을 유지하는 링크를 제공 할 수 있습니까?
세르지오


2

Aptana의 ActiveRecordJS 는 gPhone에서 실행되는 Javascript ORM입니다. Jaxer 및 Gears와 작동하도록 설계되었습니다. Jaxer 어댑터를 사용하면 SQLLite에 연결할 수 있습니다.

업데이트 : 분명하지는 않지만 ActiveRecordJS는 클라이언트 측을 실행하는 ORM이므로 gPhone에서 이점을 얻을 수 있습니다.


자바 코드에서? 아니면 JavaScript 코드에서?
GWLlosa

나는 당신이 말하는 것이 순수하게 브라우저 기반 (웹) 응용 프로그램을위한 Javascript 솔루션이라는 것을 확신합니다. Android 용 기본 앱 개발과 어떤 관련이 있는지 모르겠습니다.
Brian Lacy


1

Android 용 JPA ORM의 자체 구현을 개발했습니다. 아직 완전한 기능은 아니지만 @Entity, @Id, @Column 주석으로 클래스에 주석을 달 수 있으며 SQLite 데이터베이스에서 저장 및 검색 할 수있는 JPA 엔티티를 얻을 수 있습니다. 대중에게 게시하기 전에 더 많은 기능과 정리가 필요하지만 관심이 충분하면 노력을 가속화 할 수 있습니다.


흥미로운 것 같습니다. 이미 s.th가 있습니까? 보고 / 볼까? 건배, 마틴
MartinGrotzke

1 년 이상 후, 이것의 진행 상황은 어떻습니까? Android의 JPA + 주석은 훌륭합니다!
Spidey



0

db4o (v. 8)에 부정적인 경험이 있습니다 : 인덱싱이 제대로 작동하지 않았습니다 (예외 등). 그래서 객체 구조에 객체가있을 때 외래 테이블에 중복을 피하는 방법을 관리하지 않았습니다. 내 질문에 대한 자세한 설명 . 언젠가 더 나아지기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.