Return-Path: Delivered-To: apmail-incubator-empire-db-dev-archive@minotaur.apache.org Received: (qmail 52505 invoked from network); 13 Apr 2011 18:04:47 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 13 Apr 2011 18:04:47 -0000 Received: (qmail 93864 invoked by uid 500); 13 Apr 2011 18:04:47 -0000 Delivered-To: apmail-incubator-empire-db-dev-archive@incubator.apache.org Received: (qmail 93833 invoked by uid 500); 13 Apr 2011 18:04:47 -0000 Mailing-List: contact empire-db-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: empire-db-dev@incubator.apache.org Delivered-To: mailing list empire-db-dev@incubator.apache.org Received: (qmail 93825 invoked by uid 99); 13 Apr 2011 18:04:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Apr 2011 18:04:47 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of marciomazza@gmail.com designates 74.125.83.175 as permitted sender) Received: from [74.125.83.175] (HELO mail-pv0-f175.google.com) (74.125.83.175) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Apr 2011 18:04:42 +0000 Received: by pvc30 with SMTP id 30so330358pvc.6 for ; Wed, 13 Apr 2011 11:04:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:from:date:message-id:subject:to :content-type; bh=8+zkTCAZ4uRd22CHokvdRoBLc3C03p3xX77LIrYaDnM=; b=n6D2T4Euzk8ME7SrwzvnI3/6n3Wab0VgJGvx1Ikh8YlllbagZCW1nsTo70CxrAf+Oe YvA9OhazxSKRpUXHkaWgq1YWCDFnhkZeYsIs7ba9npNQT1EOCkVcgjLVVCw5ZMNTuSDA /K6KnxtAt06IjEazgPkJuPEHX3sYa8DtFMZ2Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=MvfhgLYYioz08ZEgZyk5UjceIOIWEZJPIJkaE0obiC7ycwf7Ork9xROW8QjPve4zku 7phVc7xnNn4MjeJSZx5B/MlJszc8eqTeuS+UIXdPbiCfV3F4pi14rO7x6xsApvys/0X2 I8Hcl9JJrRNmdnhdCnUxGM3V3P2PKgBAi5y9A= Received: by 10.142.149.20 with SMTP id w20mr4019552wfd.137.1302717862087; Wed, 13 Apr 2011 11:04:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.68.52.226 with HTTP; Wed, 13 Apr 2011 11:04:02 -0700 (PDT) From: Marcio Mazza Date: Wed, 13 Apr 2011 15:04:02 -0300 Message-ID: Subject: An excercise inspired by empire-db To: empire-db-dev@incubator.apache.org Content-Type: multipart/alternative; boundary=000e0cd22fe8698b6f04a0d0a307 --000e0cd22fe8698b6f04a0d0a307 Content-Type: text/plain; charset=ISO-8859-1 I recently took a a 2 week vacation to make a little exercise inspired by empire-db. It is here: https://github.com/marciomazza/miniquery Everything is experimental, but maybe you can see some of the design through. I do not have much time to work on that anymore... so I bring this to you now. My motivation was to make a minimal API (much smaller than that of empire-db). It borrows from empire-db the idea of expressing the database metadata in code, which I think is really great. Try to see the differences in design, though. Now... the *feedback*: One may wonder why didn't I stick to empire-db, instead of trying to write something on my own. Two main reasons come to my mind now: 1) Empire-db's scope is much bigger than what I wanted. I indeed think you could have a smaller kernel, with just the basic SQL operations, leveraging just the idea of "metadata in code" and nothing more. Everything else should be pluggable and optional. 2) Empire-db's kernel is not strictly portable between the supported vendors. (One of the key advantages of Hibernate :P... oh... that name revolves my stomach). 3) Empire-db does not have good automated test coverage. Although Donald Knuth does not consider this to be a problem, I do believe that an open source project that wants to really gather new contribution cannot succeed without it. The reason is simple. Once a contribution is made, everything should be tested. The knowledge of what should be tested, and how, should be readly available to that very contributor. And, to be nice and inviting, that test knowledge should be automated. Actually I saw very little tests. You have to go much further and dive to the degree of deep integration testing, to run the same tests against different database instances automatically. That's an interesting thing. 4) Empire-db didn't have simple and direct pagination support. I see you've been implementing that. This is too basic a thing for web apps and I think should be a priority. Those are my opinions and my feedback. They were written in very good will. The success of Empire-db is in my best interest. The java community needs this approach. []'s Mazza. --000e0cd22fe8698b6f04a0d0a307--