Derby 또는 Sqlite와 같은 경량 데이터베이스에 데이터를 저장하고 싶은 단일 사용자 Java 프로그램이 있습니다. 내 프로그램에서 데이터 추상화 계층을 사용하고 싶습니다. Hibernate는 많은 구성이 필요한 것처럼 보이며 내가 필요한 것을 과도하게 사용합니다. Hibernate에 대한 경량 대안은 무엇입니까?
Derby 또는 Sqlite와 같은 경량 데이터베이스에 데이터를 저장하고 싶은 단일 사용자 Java 프로그램이 있습니다. 내 프로그램에서 데이터 추상화 계층을 사용하고 싶습니다. Hibernate는 많은 구성이 필요한 것처럼 보이며 내가 필요한 것을 과도하게 사용합니다. Hibernate에 대한 경량 대안은 무엇입니까?
답변:
주석을 사용하는 경우 Hibernate는 0에 가까운 구성이 필요합니다. 클래스 경로에서 매핑 된 빈을 자동 검색 할 수도 있습니다! 나는 단순성 과 파워의 관점 에서 그것에 대한 대안을 보지 못합니다 .
또한 자신을 JPA (IMHO)로 더 간단하게 노출 할 수도 있습니다.
내 ORMLite 라이브러리는 그러한 대안 중 하나입니다. MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB 및 Sqlite를 지원하며 다른 사용자로 쉽게 확장 할 수 있습니다. 주석을 사용하여 클래스, 좋은 Spring 지원, 유연한 쿼리 작성기 등을 구성합니다.
여전히 XML 구성이 필요하지만 MyBatis (이전의 iBatis)를 살펴보십시오 .
jOOQ 는 다음과 같은 주요 목표에 대한 부작용으로 Java에서 직접 SQL을 시뮬레이션하는 유창한 DSL과 함께 제공됩니다.
http://java.dzone.com/announcements/simple-and-intuitive-approach 기사에서 jOOQ에 대해 읽어 보거나 웹 사이트를 직접 방문하십시오 : http://www.jooq.org
(면책 조항, 나는 jOOQ 뒤에있는 회사에서 일합니다)
Apache Commons DBUtils 는 JDBC 프로그래밍에서 반복적 인 작업을 많이 수행합니다. 구성이 거의 필요하지 않으며 배우기 쉽습니다. ORM 프레임 워크는 아니지만 (Hibernate 및 여기에 언급 된 다른 프레임 워크와 같은 방식으로) SELECT 열을 Java 멤버 필드 및 기타 반복적 인 JDBC 프로그래밍 작업에 매핑하는 작업을 자동화합니다. 확실히 가볍습니다.
Ebean ORM을 살펴볼 수 있습니다 . -세션 없음-지연로드는 작동합니다-사용하고 배우는 더 간단한 API.
카이엔 은 저를 잘 섬겼습니다. 비교적 이해하기 쉽고 설치 및 실행이 쉽습니다. 리버스 엔지니어링 부분이 특히 매력적이라고 생각합니다. GUI로 구성 할 수 있습니다.
아파치 엠파이어 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);;
ORMAN 프레임 워크도 좋습니다. https://github.com/ahmetalpbalkan/orman
문서 : https://github.com/ahmetalpbalkan/orman/wiki
비교 : https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
파티에 조금 늦었을 수도 있지만 ActiveRecord 패턴의 ORM 구현 인 ActiveJDBC 를 2010 년에 출시 했습니다 . ActiveRecord 패턴의 ORM 구현 인 ActiveJDBC 는 종속성면에서 Hibernate보다 10 배 이상 가볍고 런타임시 최소 2 배 빠르며 구성이 필요하지 않습니다. 또는 주석.
나는 헤비급 ORM의 대안으로 sormula 를 만들었습니다 . CRUD 지원, POJO 친화적이며 사용, 구성 및 이해가 간단합니다. 제로 구성 사용이 가능합니다. www.sormula.org
Kiteframework는 또한 매우 가벼운 orm 프레임 워크입니다. 최소한의 구성으로 거의 모든 db 작업을 제공합니다.
http://deipakgarg.github.com/Kite-ORM/
공개 : 나는이 프로젝트의 저자입니다.