About EoD SQL

EoD SQL Allows for fast, simple binding between a Relation Database Query and Java objects.
Key concerns of EoD SQL are:

LightweightJAR file is around 60k, with a very small memory footprint.
Very FastIntelligent caching of requests, but not data.
Easy to work withAnnotation based, no setup, config or XML files.
PowerfulWrite your own SQL rather than hope it generates what you want.

For a full set of features, check out the features page.
For an example of for to use EoD SQL, take a look at the code example of the about page.

Recent EoD SQL News:

1.0 Release and a Move Posted by: Jason

The EoD SQL Project has finally reached a 1.0 release. To coincide with this release, the project is moving to eodsql.dev.java.net. Please update your bookmarks!

New Site Look Posted by: Jason

I had some extra time on my hands today, and I figured the front-of-house EoD SQL site needed a new look and feel, so here you have it! Mostly CSS changes, but still: a little color is nice. I also updated the general content a little bit.

EoD SQL 0.9-beta Released Posted by: Jason

This news is very belated on the front page, since the actual release was made a while ago. There have been several major bug fixes in SVN for a while, and I havn't had time (other work) to work in a 1.0 release yet. So I've bundled up a 0.9-beta package instead, and released it.

There are some very large bug fixes in the 0.9-beta release, as well as a few behind the scenes enhancements to the API:

  • Validation of queries is now done when the query is generated
  • @SelectPrimitive can now handle collections and arrays of primitives
  • java.sql.Date; Time; and Timestamp are now known primitive-types
  • More detailed error messages in exceptions
  • JDBC 4 query strings work again, as they should
  • Query strings are not sanity-checked when the first implementation is requested
0.8-beta Known Bugs Report Posted by: Jason

As with any beta code, EoD SQL has a few bugs in the 0.8-beta release. The following know bugs have been fixed in the Subversion release (known currently as 0.82-beta).

  • When using JDBC 4 style queries an OutOfMemoryError is produced. This is due to the internally used Reader resetting the stream when asked to skip.
  • Using the @SelectPrimitive annotation produces an InvalidQueryException. This is due to the validation not knowing what a @SelectPrimitive is, as well as me not having set the RetentionPolicy to Runtime. My bad.

If anyone find these errors a real problem, please mail me, or join the mailing list and fire off and email. I'll be happy to make a 0.82-beta release if someone needs it.

I've been adding a few JUnit tests (more on the way) to test the code more thoroughly from now on, I really don't like that these sorts of bugs are making it into my releases. It's also the reason the API is in the state of an API freeze (to find and remove all the bugs... or as many as can be found).

If you find a bug, please report it on the mailing list, or on the project tracker.

1.0 Status Report Posted by: Jason

I thought it was about time to update what is going on with EoD SQL, and give some insight into the changes. Several improvements have been made to the api, including:

  • Massively improved error reporting
  • Improved support for the @SelectPrimitive annotation
  • Performance improvements
  • Some more internal refactoring to cope with the new error reporting

So far in the cycle there have been a few minor hickups (a weird NullPointerException resulting from a baddly formed Query-String was what prompted the more intensive error reporting), but so far nothing serious. I'm looking forward to releasing 1.0 before too long.

EoD SQL 0.8-beta released Posted by: Jason

The next version of EoD SQL will be 1.0 (potentially with some minor versions in between). This new version of EoD SQL completes the 1.0 API by adding support for

  • Informational SELECT's using the new @SelectPrimitive annotation
    @SelectPrimitive("SELECT COUNT(id) FROM users WHERE user_name = ?{1}")
    public Integer getUserCount(String username);
  • Transactional commits and rollbacks using the new TransactionQuery interface:
    public interface UserQuery extends TransactionQuery {

    public class MyClass {
        public void someDatabaseMethod() {
            UserQuery query = QueryTool.getQuery(UserQuery.class);

            // do some database work

  • Column names are now treated as case-insensitive to help when working with JDBC drivers that uppercase all their MetaData
  • QueryTool.createQueryImplementation(*) is now deprecated in favor of QueryTool.getQuery(*)
  • Much internal refactoring, and many bug fixes completed.
This version of EoD SQL marks an API freeze. Between 0.8-beta and 1.0 only internal changes will be made in order to fix bugs as they are found, 1.0 will look exactly the same from the outside, but will include:
  • New JUnit tests (some of which have been started and are included in 0.8-beta)
  • A new tutorial document, outlining the basics of how to use EoD SQL
  • A list of JDBC drivers EoD SQL has been tested on
  • A list of database engines that limit or alter the way EoD SQL works