JLINQ: Runtime JDBC Generator for Eclipse
Azadeh Ahadian of IBM has published an article introducing JLINQ on IBM's developerWorks site. She bills it as "IBM's new paradigm for writing Java database applications". Despite the name, JLINQ does not have much in common with Microsoft's LINQ, rather it is an Eclipse plugin providing integration with a database and runtime DAO code generation. The plugin is part of IBM's Developer Workbench that is coming with Viper, the next release of DB2.
JLINQ is an Eclipse plugin that provides the ability to navigate databases and to generate Java objects from tables or SQL statements. There are three use cases outlined by Ahadian:
- Database-driven objectization (DDO): Select a table and to generate the objects for data access and manipulation, otherwise referred to as CRUD (create, replace, update, delete). This is where JLINQ generates the OO-based classes and interfaces required to perform the CRUD operations on the selected tables.
- Query-driven objectization (QDO): The JLINQ system, through a simple point-and-click selection of a query statement and in an intuitive GUI manner via a pop-up context menu, can easily be asked to generate the relevant object class hierarchies.
- Object-relational mapping (ORM): JLINQ provides an mechanism to perform a one-to-one mapping of a class name to a given table name residing in the underlying database, as well as the ability to map the class's protected (or public) variables to that table's columns.
JLINQ generates interfaces that have similar annotations to JPA at design time. At compile time, JLINQ generates implementations of those interfaces that handle CRUD operations of your objects. While Ahadian refers to JLINQ as an ORM tool, it does not appear to provide any of the advanced features taken for granted in a tool like Hibernate, including polymorphism, composition, and caching. There is not even mention of support for associations in the article or release notes. The integration into Eclipse is nice and will save some developer time, but with options like JPA and Hibernate, JLINQ will have trouble gaining much traction.
Initial reactions have been focused on the poor naming, as JLINQ is not similar to the functionality of Microsoft's LINQ. Jesse Davis describes the difference:
LINQ stands for Language INtegrated Query, which this clearly is not. I don't know if Microsoft has any rights to the name LINQ or not, but I think it very poor form of IBM to actually use the term for something that is not technically correct. LINQ is something that is actually integrated into the programming language itself. ...JLINQ is nothing of the sort. This is merely a new ORM style code generator for Eclipse that IBM has made.
There was also a thread on Channel9 disparaging the choice of name.