InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

JLINQ: Runtime JDBC Generator for Eclipse

Posted by Rob Thornton on Aug 30, 2007

Sections
Architecture & Design,
Development,
Operations & Infrastructure
Topics
Data Access ,
Java
Tags
Hibernate ,
JPA ,
Eclipse ,
IDEs ,
JDBC

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.

JOSQL by cowardly dragon Posted
  1. Back to top

    JOSQL

    by cowardly dragon

    People should check out JOSQL for more LINQ-like functionality for java. It's pretty neat.

    I agree, the JLINQ name is explicitly misleading.

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.