2010-12-03 5 views
25

마지막으로 나는 최대 절전 모드에 대해 많은 불평을 들었다. 그리고 실제로 나는 동면과 고통스러운 경험을했습니다. 그래서 나는 EbeanSiena에 대해 읽었습니다.Ebean 또는 Siena는 얼마나 성숙합니까?

두 가지 모두 흥미로운 접근 방식을 가지고 있습니다. 유감스럽게도 데이터베이스 액세스 계층은 매우 쉽게 작성할 수 있지만 프로젝트가 커지고 훌륭한 데이터베이스 테이블을 처리해야하는 경우 데이터베이스 액세스가 좋은지 아닌지 알 수 있습니다. 그런 도구를 평가하는 것은 정말로 어렵습니다. 최대 절전 모드는 잘 알려져 있으며 문제를 해결할 수 있는지 확신 할 수 있습니다. 언젠가 당신은 많은 것을 배울 필요가 있지만 그것을 해결할 수 있습니다.

Ebean과 어떤 관계입니까? 실제 응용 프로그램이 있습니까? 어떤 데이터베이스가 지원됩니까? 믿을만한가요?

조금 더 검색 한 후에는 더 많은 ORM 프레임 워크가 있으므로 적어도 하나의 신뢰할 수있는 프레임이 있습니까?

+0

당신은 당신이 Hibernate에서 어떤 문제점을 발견했는지에 관해서 몇 가지 세부 사항을 추가 할 수 있습니까? 이는 동일한 제한 사항으로 ORM 프레임 워크를 제거하는 데 도움이됩니다. – mlschechter

+0

많은 쓰기 작업을했던 batchjobs에서는 Hibernate가 어려워진다. 또한 Hibernate는 종종 놀라운 효과를 가지고있다. 예를 들어, 객체를 생성하거나 변경하면 자동으로 저장된다. 명확하게하기 위해, Hibernate는 좋은 프레임 워크이지만 복잡하고 복잡합니다. 만약 당신이 최대 절전 모드라면 전문가가 될 것입니다. 그렇지 않으면 때때로 행동을 이해하려고 노력함으로써 전체 개발자의 날을 풀 수도 있습니다. Siena와 Ebean은 (증명하기 쉽고) 신뢰성이 있고 (아무도 확인하지 않는) 신뢰할 수 있다고 약속합니다. – niels

답변

15

여기 롭 (Ebean 커미터) 시에나는 사용자 경험에 의해 구동되는 실용적인 API 내가 그것을 좋아하는 이유입니다.

Ebean은 이제 약 4 세 이상입니다. 지금은 상당히 성숙한 상태라고 말할 수 있습니다. 지원되는 DB에는 Oracle, MySql, Postgres, H2 및 SQL Server (및 최근 SQLite)가 있습니다. Ebean은 Autofetch (자동 쿼리 튜닝)와 같은 다른 ORM이 아니므로 '적합성 평가'에 적합하지 않습니다.IMO는 Ebean 커뮤니티가 비교적 작기 때문에 Ebean Google 그룹을 방문해야합니다.

실제 응용 프로그램이 있습니까? 그렇습니다.하지만 Ebean 공동체에 그 사실을 물어 보는 것이 가장 좋습니다. 물론 배치 처리 (배치 크기, 트랜잭션에 대한 연속적인 계단식 지속) 및 JPA 등에서 볼 수없는 대형 쿼리 지원 (Hibernate의 Sessionless 지원과 비슷한 것을 얻을 수 있음)에 대한 지원이 확실합니다.

이렇게하면 질문의 일부 작은 부분에 어쩌면 대답 할 수 있기를 바랍니다.

Cheers, Rob.

+0

감사합니다. 실제로 도움이되었습니다. – niels

+0

안녕하세요 롭, github에 저장소를 유지하는 것을 보았습니다. 그리고 Ebean의 높은 유용성에 감사드립니다. 그러나 최신 문서를 찾는 데 문제가 있습니다. http://www.avaje.org/의 내용은 꽤 오래된 것 같습니다. 최근 Java-docs 또는 가이드가 있습니까? – area5one

+1

@ area5one 문서는 현재 WIP입니다. http://ebean-orm.github.io/에서 현재 상태를 볼 수 있습니다. 아직 완료되지 않았지만 다음 달에 새로운 docs/웹 사이트. –

1

MyBatis은 실제로 ORM이 아니지만 다른 유형의 지속성 관리자 인 SQL 매퍼입니다. SQL 문을 사용하여 결과 행을 POJO에 매핑하는 방법에 대해 설명합니다. 내부적으로 진행되는 많은 마술과는 개념적으로 이해하고 조정하기 쉽습니다. SQL에 익숙하거나 기존 스키마로 작업해야하는 경우 이상적입니다.

+1

네, 전 iBatis와 함께 일한 적이 있는데 믿을 만하다고 생각합니다. 한계는 데이터베이스 시스템에서 누락 된 추상화입니다. Oracle과 같은 여러 데이터베이스 시스템을 지원해야한다면 Hibernate와 같은 DB2, Postgres 및 H2 프레임 워크가 정말 유용합니다. – niels

0

예를 들어 JBoss (www.jboss.org)와 함께 EB3을 사용하는 것은 어떻습니까?

+0

음 간단한 솔루션을 찾고 있습니다. JEE 환경은이 환경에 적합하지 않습니다. – niels

6

저는 현재 시에나의 개발자입니다. 이 프로젝트의 개발자가 된 이유를 설명해 드리겠습니다. 나는 Play + GAE를 사용하기를 원했기 때문에 시에나에 갔었고 Siena는 GAE DB의 좋은 출발점이었고 JDO/JPA를 피하고 싶었습니다. 그런 다음 간단하고 가볍고 쉬운 접근법과 간단한 API 덕분에 Siena에 대해 정말로 감사하기 시작했습니다. JDO와 같은 올인원 추상화 계층과 JPA와 같은 최고의 표준 DB API 인 척하지 않습니다. 정말 파이썬/루비의 DB API를 생각하게 만들었고 실제로 내 관점에 적합했습니다. 간단한 문제를 해결할 수있는 간단한 DB API를 원합니다. 더 복잡한 문제가있을 때 하위 레이어 API지만 절대로 최대 절전 모드와 같은 추상화 레이어가 아닙니다.

내 코드를 GAE DB 또는 JDBC에서 사용할 수있는 가능성 또한 좋은 측면이었습니다. 다시 한번, Siena는 SQL과 NoSQL이 실제로 호환되지 않기 때문에 (그러나 ORM은 실제로 SQL 모델과 호환되지 않기 때문에) 두 세계에서 정확히 동일한 것을 제공하는 척하지 않습니다. 그러나 다시 한번, 여러 DB에서 동일한 API를 사용할 수 있다는 것은 매우 실용적입니다.

마지막으로 라이브러리는 하나의 병이며 사용하기 위해 전체 유니버스를 검색 할 필요가 없습니다.

그래서 나는이 멋진 작은 모험에 참여하기를 원했기 때문에 점차 Siena에 커미터가되었습니다. 이제 siena 팀은 동일한 간단한 API를 유지하면서 새로운 흥미로운 기능을 가져오고 모든 백엔드 코드를 개선하여 새 DB 지원을 위해 더 쉽게 확장 할 수있는 새 버전을 개발 중입니다.)

파스칼

+0

성숙한 모습을 나타내지는 않았지만 경험을 공유해 주셔서 감사합니다. 왜 내가 왜 GAE와 JDBC간에 전환 할 수 없는지 이해할 수 없습니까? 나는 이것이 이것이 시에나의 큰 이익이라고 생각했다. 그렇지 않으면 특정 "ORM-Mapper"를 사용하는 것이 더 영리 해 보입니다. – niels

+1

Siena와 함께 GAE와 JDBC 사이를 전환 할 수 없다는 말은 결코하지 못했습니다. D ... 전환 할 수 있고 당신이 말했듯이 이것은 Siena의 큰 이익 중 하나입니다. 그러나 우리는 SQL과 NoSQL 사이에서 모든 것이 가능하지 않기 때문에 항상 둘 사이를 전환 할 수 있다고 말하지는 않습니다. 때로는 NoSQL 또는 SQL을 효율적으로 사용하도록 모델을 설계해야합니다 ... NoSQL과 SQL 사이의 모든 문제를 푸는 척하지 않을 수 있습니다. 그러나 대다수의 경우 스위치는 문제없이 작동합니다. – mandubian

+0

성숙에 관해서는, 나는 Siena를 당분간 코딩하고 있기 때문에 나는 옳은 사람이 아니다.) ... 그러나 나는 사람들이 그것을 생산에서 사용한다는 것을 알고 그들은 JDO/JPA 또는 다른 것들에 대해 순서대로 선택했다. 코드와 DB 사이에 얇은 레이어가있는 매우 간단한 API를 사용하는 것은 확실합니다. 코드가 매우 작고, 항아리가 하나 뿐이며 학습 곡선이 매우 짧습니다 ... 현재 코드를 정리하고 있습니다./디자인을 매우 조심스럽게 실행하고 테스트를 많이 실행하므로 Siena의 품질이 성장하고 성장할 것이라고 생각합니다. 필요한 것이 있으면 언제든지 siena 그룹에 직접 이야기하십시오! – mandubian

1

Ebean와 시에나 외에 :

당신은 불변의 객체를 CRUDing에 초점을 맞추고 JIRM을 시도 할 수 있습니다 (예 나는 저자 해요).

jOOQ 및 장조가 있습니다.

나는 JIRM이 도메인 객체가 불변이고 상속, 구현 및/또는 "강화/계측"되지 않기 때문에 DTO의 수를 최소화한다고 생각합니다. 그러한 것은 Siena와 Ebean과 동일하지 않습니다.

또한 객체가 Immutable이기 때문에 전체 객체 대신 칼럼 업데이트에 중점을 두었습니다. 이는 이전 AJAX 인터페이스 (이전의 전체 bean 모델과 비교)를 감안할 때 더욱 의미가 있습니다.

관련 문제