by Keld H. Hansen
Preface
As a Java-programmer you'll probably find it easy to work with objects. To
create an instance of a class one can simply use "new" and maybe a couple of
setter-methods. To save your instances, so you can continue working with them
tomorrow might be trickier. One solution would be to serialize your objects and
store them in XML format in a flat file. If you've got many objects with complex
relations then you'll soon find out that this is not the way to go. If you've got a
database system and you know your SQL, then you have a solution that works. On
the other hand: what if you could simply say "save my objects", and they'd be in
your data base? That'd be nice, right?
If you continue reading I'll disrobe the tool that will enable the "save my
objects" slight of hand. To save an instance of class "Media" to a database
you'd have to code:
db.begin();
Media m = new Media(1,"DVD");
db.create(m);
db.commit();
db.close();
Harry Potter would love this spell and the tool that can
make this come true is Castor-JDO.
JDO - the history
JDO spelled out means Java Data Objects, and Sun has an API and a
specification (JSR12) with this name. This API addresses how to persist (store
permanently) Java objects on a back-end, which could be a mainframe, a database
or something else. Castor-JDO, which was released in December 1999, before Sun's
API, has a more focused approach. Its purpose is to automate binding Java
objects to a relational database. Since Castor and Sun use the same name, JDO,
for their APIs, there have been some misunderstandings and discussions about who
has the rights to the name, and what comprises "true JDO". The resources
section of the article has some links where you can follow some of the
arguments.
This article will focus only on Castor-JDO, which in my opinion is the
simplest API to learn, and therefore a good way to be introduced to the
object-relational mapping world. By the way: Castor-JDO has a twin brother,
Castor-XML, which can serialize a Java bean object into XML, and back again. See
the resources section for more on this useful feature. When I use "Castor" in
this article I refer to Castor-JDO.
So this is about how you automate the persistence of Java objects into a
relational database. What we'd really like is to let someone else write the SQL
and setup the JDBC API to manage the database, thereby allowing us to focus on
handling the Java objects and the business logic.
If you're like me, you're excited about this possibility, then I think it's fair
to stress the following. You will need to know about database tables,
columns, foreign keys etc. in order to set up Castor properly. The more you know
about the good, the bad and the ugly of database design and SQL coding the
better you will be able to take benefit from what Castor offers. Don't be
scared, in this article I'll go step-by-step through the basics of setting up
your application for Castor, and when it's done and the train is on the rails,
you'll be halfway to Hogwart's School of Wizardry before you know it!
Introduction
Installation of MySQL
Installation of Castor-JDO
Transient and Persistent Objects,The database configuration file,The mapping file
Handling one-to-many relations
Handling many-to-many relations
Reading from the database
The Source of Magic
Conclusion
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|