Hibernate의 경량 대안? [닫은]


113

Derby 또는 Sqlite와 같은 경량 데이터베이스에 데이터를 저장하고 싶은 단일 사용자 Java 프로그램이 있습니다. 내 프로그램에서 데이터 추상화 계층을 사용하고 싶습니다. Hibernate는 많은 구성이 필요한 것처럼 보이며 내가 필요한 것을 과도하게 사용합니다. Hibernate에 대한 경량 대안은 무엇입니까?


2
여기에서 사용 예제 (및 Spring을 사용한 예제 구성)와 함께 대안을 확인할 수 있습니다. github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr

CMobileCom JPA는 Java 및 Android 용 경량 JPA 구현입니다. 크기는 약 380K입니다. 가볍고 빠릅니다. cmobilecom.com

답변:


142

주석을 사용하는 경우 Hibernate는 0에 가까운 구성이 필요합니다. 클래스 경로에서 매핑 된 빈을 자동 검색 할 수도 있습니다! 나는 단순성 파워의 관점 에서 그것에 대한 대안을 보지 못합니다 .

또한 자신을 JPA (IMHO)로 더 간단하게 노출 할 수도 있습니다.


32
0 옆은 0이 아닙니다.
njzk2

12
P : 또한 외부 라이브러리가 안드로이드에 그것을 사용하려고 많이 필요
보안관

4
Hibernate에 대한 더 간단한 대안을 찾으려고 노력했습니다. 개인 프로젝트에서 나는 MyBatis (끔찍한 이름)를 사용했습니다. Hibernate보다 훨씬 더 많은 작업이었습니다. Hibernate는 실제로 많은 SQL 코딩을 절약하고 부모-자식 관계를 돕습니다. 또한 Java 용 ActiveRecord 스타일 ORM 몇 가지를 살펴 보았습니다. Hibernate보다 성숙하거나 쉬운 것 같지는 않았습니다. 그래서 저는 Hibernate로 돌아갈 것입니다.
devdanke 2012 년

56
대안에 관한 질문이 아니 었습니까?
Łukasz Gruner 2013 년

8
Hibernate는 Hiberernate의 가벼운 대안이 아닙니다
cosbor11

55

ORMLite 라이브러리는 그러한 대안 중 하나입니다. MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB 및 Sqlite를 지원하며 다른 사용자로 쉽게 확장 할 수 있습니다. 주석을 사용하여 클래스, 좋은 Spring 지원, 유연한 쿼리 작성기 등을 구성합니다.


OrmLite는 정말 유망 해 보입니다! 하지만이 프로젝트는 아직 살아 있습니까? 1 년 넘게 새 버전이 없으며 Github의 풀 요청 / 문제에 대한 답변이 없습니다.
Stefan

3
버전 5.0은 2016 년 6 월에 출시되었습니다.
Lauri Laanti

버전 5.1은 2018 년 2 월 19 일에 출시되었습니다. 그러나 Hibernate와 전혀 비교할 수 없으며 일부 JPA 주석 구현이 제대로 작동하지 않습니다.
M-Razavi

"Hibernate와 비교할 수있는"? 둘 다 ORM이지만 그렇지 않으면 크게 다릅니다. JPA 구현 측면에서 @ M-Razavi를 찾으면 버그 보고서를 작성합니다.
Gray

31

여전히 XML 구성이 필요하지만 MyBatis (이전의 iBatis)를 살펴보십시오 .


iBatis는 매우 가볍습니다. SQL 대 개체 매핑을보다 쉽게 ​​정의하고 제어 할 수 있습니다.
Berlin Brown

... iBatis에 대한 투표를해야하지만, Hibernate와 같은 경쟁자들과 경쟁하려고하지 않기 때문에 ORM 대안이 아닙니다. 약간 다른 종류의 동물이지만 무게 측면에서 찾고있는 것에 적합합니다.
벡터

1
: 이제 남은 MyBatis로의 mybatis.org
블라디슬라프 Rastrusny

3
i / MyBatis의 XML은 테스트를 위해 SQL 콘솔에 쉽게 복사 할 수있는 형식으로 복잡한 쿼리를 유지하기 때문에 실제로 이점이라고 생각합니다.
Peter Tillemans 2011 년

22

jOOQ 는 다음과 같은 주요 목표에 대한 부작용으로 Java에서 직접 SQL을 시뮬레이션하는 유창한 DSL과 함께 제공됩니다.

  • 소스 코드 생성
  • UNION, 중첩 SELECT, 모든 유형의 JOIN, 별칭 (예 : 자체 조인) 등과 같은 SQL 언어 기능을 포함한 표준 SQL에 대한 완벽한 지원
  • UDT, 저장 프로 시저, 공급 업체별 기능 등을 포함한 비표준 SQL에 대한 광범위한 지원

http://java.dzone.com/announcements/simple-and-intuitive-approach 기사에서 jOOQ에 대해 읽어 보거나 웹 사이트를 직접 방문하십시오 : http://www.jooq.org

(면책 조항, 나는 jOOQ 뒤에있는 회사에서 일합니다)


3
jOOQ 바위! 우리는이를 통해 대규모 ETL 서비스를 구현했으며 더할 나위없이 행복했습니다. 나는 iBATIS를 사용해 왔고 jOOQ는 XML과 형식 안전성의 부족없이 저수준 SQL과 동일한 이점을 모두 제공합니다.
spieden

3
jOOQ의 가장 좋은 기능 중 하나를 언급하는 것을 잊었습니다. 복잡하거나 동적으로 생성 된 쿼리를 제어 된 방식으로 어셈블하고 Java 컴파일러로 확인할 수 있으므로 데이터베이스가 던지는 모호한 구문 오류로부터 사용자를 구하고 컴파일 타임 회귀를 제공합니다. 스키마가 변경 될 때 적용됩니다.
spieden

JOOQ는 놀랍지 만 분명히 Oracle과 Sybase에 무료가 아니므로 많은 사람들이이 프레임 워크를 피하고 MyBatis처럼 사용하고 있습니다
Makky

@Makky : 피드백 주셔서 감사합니다. 실제 가치 제안을 염두에두고 하나는 무료이고 다른 하나는 그렇지 않다는 사실에 근거하여 완전히 다른 프레임 워크로 전환하지 않기를 바랍니다. 이에 유도 할 유지 보수 비용 및 마이그레이션 당신의 소프트웨어는 ... 금지 훨씬 합리적인 상용 라이센스 넘어
루카스 에더

15

Apache Commons DBUtils 는 JDBC 프로그래밍에서 반복적 인 작업을 많이 수행합니다. 구성이 거의 필요하지 않으며 배우기 쉽습니다. ORM 프레임 워크는 아니지만 (Hibernate 및 여기에 언급 된 다른 프레임 워크와 같은 방식으로) SELECT 열을 Java 멤버 필드 및 기타 반복적 인 JDBC 프로그래밍 작업에 매핑하는 작업을 자동화합니다. 확실히 가볍습니다.


12

Ebean ORM을 살펴볼 수 있습니다 . -세션 없음-지연로드는 작동합니다-사용하고 배우는 더 간단한 API.


SQLite 및 Android와 호환됩니까?
endryha 2010

SQLite 지원이 추가되었습니다. 아직 Android에서 시도하지 않았습니다.
Rob Bygrave 2011 년

9

카이엔 은 저를 잘 섬겼습니다. 비교적 이해하기 쉽고 설치 및 실행이 쉽습니다. 리버스 엔지니어링 부분이 특히 매력적이라고 ​​생각합니다. GUI로 구성 할 수 있습니다.


6

아파치 엠파이어 DB를 제안 할 수 있습니다. http://incubator.apache.org/empire-db/

Apache Empire-db는 데이터베이스 공급 업체에 독립적 인 동적 쿼리 정의는 물론 안전하고 간단한 데이터 검색 및 업데이트를 허용하는 오픈 소스 관계형 데이터 지속성 구성 요소입니다. Hibernate, TopLink, iBATIS 또는 JPA 구현과 같은 대부분의 다른 솔루션과 비교할 때 Empire-db는 컴파일 시간 안전성 , 중복 감소 및 개발자 생산성 향상 에 특별히 초점을 맞춘 상당히 다른 접근 방식을 취합니다 .

예 :

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

파티에 조금 늦었을 수도 있지만 ActiveRecord 패턴의 ORM 구현 인 ActiveJDBC 를 2010 년에 출시 했습니다 . ActiveRecord 패턴의 ORM 구현 인 ActiveJDBC 는 종속성면에서 Hibernate보다 10 배 이상 가볍고 런타임시 최소 2 배 빠르며 구성이 필요하지 않습니다. 또는 주석.


1

(sourceforge에서) prevayler를 살펴보고 싶을 수도 있습니다. 지속성에 대한 다소 가벼운 접근 방식입니다. 아니면 DB에 대한보고를 고려하고 계셨습니까?


1

관계형 데이터베이스 사용이 필수가 아닌 경우 db4o를 사용해보십시오.


1

나는 헤비급 ORM의 대안으로 sormula 를 만들었습니다 . CRUD 지원, POJO 친화적이며 사용, 구성 및 이해가 간단합니다. 제로 구성 사용이 가능합니다. www.sormula.org


-2

Kiteframework는 또한 매우 가벼운 orm 프레임 워크입니다. 최소한의 구성으로 거의 모든 db 작업을 제공합니다.

http://deipakgarg.github.com/Kite-ORM/

공개 : 나는이 프로젝트의 저자입니다.


3
Stack Overflow에 오신 것을 환영합니다! 답변을 게시 해 주셔서 감사합니다! Self-Promotion에 대한 FAQ를 주의 깊게 읽어 보시기 바랍니다 . 또한 자신의 사이트 / 제품에 연결할 때마다 면책 조항을 게시 해야 합니다.
Andrew Barber

2
개발 중이 아니며 작성자의 새로운 현재 릴리스가 없습니다. 마지막으로 예상되는 릴리스는 2012 년이었습니다.
Barun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.