★ wanayoo — archive 1999 http://javaboutique.webdeveloper.com/Map_Java_Objects/index-9.htmlNouvelle recherche | Portail wanayoo
Computer Digital Expo


Find a Web Host With:
CGI Access
DB Support
NT Servers
UNIX Servers
Telnet Access

advanced search
Internet News
Internet Investing
IT
Windows Technology
Linux/Open Source
Developer
Interactive Marketing
xSP Resources
Small Business
Wireless Internet
Downloads
Internet Resources
Internet Lists
International
EarthWeb
Career Resources

Search internet.com
Advertise
Corporate Info
Newsletters
E-mail Offers
Be a Commerce Partner
Web Hosting
Find a Consultant
Track Defects Online
Shop For Computers
Compare Prices & Shop
FREE Credit Report
Best Deals on PDAs!
Business Search
Build an Online Store
Is Your Credit Bad?
FlashKit
Gif.com
HierMenusCentral
JavaBoutique
JavaScript.com
JavaScriptSource
WebDev Jobs
JustSMIL
ScriptSearch
StreamingMediaWorld
Web Hosts
WebDevelopersJournal WDVL
WebDeveloper.com
WebReference.com
XMLFiles.com
CGI
HTML
Java
JavaScript
Web Design and Promotion
Web Site Development
E-mail Address:


Can you receive
HTML e-mail?

Yes   No

Zip Code:



Reviews :

Mapping Java Objects to a Database with Castor-JDO:

The Source of Magic

I was curious about what was going on behind the scenes. How many SQL SELECTs were being issued? One way to find out is to turn on logging. You do this simply by adding these statements in the top of your program:

import org.exolab.castor.util.Logger;
import java.io.*;
. . .
PrintWriter writer = new Logger(System.out).setPrefix("test");      
jdo.setLogWriter(writer);

If we run the program once more we'll see this:

[test] SQL for creating hansen.playground.Movie: INSERT INTO movie ...
(more lines cut out here)
[test] SELECT actor.id,actor.name,actor_movie.id_movie FROM actor 
       LEFT OUTER JOIN actor_movie 
       ON actor.id=actor_movie.id_actor WHERE (actor.name = ?)
[test] Castor: Loading hansen.playground.Actor (23)
[test] Castor: Loading hansen.playground.Movie (12)
[test] Castor: Loading hansen.playground.Media (1)
[test] Castor: Loading hansen.playground.Actor (22)
[test] Castor: Loading hansen.playground.Movie (11)
[test] Castor: Loading hansen.playground.Media (2)
[test] Castor: Loading hansen.playground.Movie (13)
[test] Castor: Loading hansen.playground.Actor (21)

The first lines that are listed are all the SQL statements that Castor will use when reading,  creating, updating, and deleting objects from the tables. I've only shown part of the first create statement above. Following this is the (first) SELECT statement that is the result of the query for Keanu Reeves. Finally there's a line each time an object is created. The keys are listed in parenthesis. Here's a "translation":

[test] Castor: Loading hansen.playground.Actor (Ian Holm)
[test] Castor: Loading hansen.playground.Movie (Lord of the Rings)
[test] Castor: Loading hansen.playground.Media (DVD)
[test] Castor: Loading hansen.playground.Actor (Laurence Fishburne)
[test] Castor: Loading hansen.playground.Movie (The Matrix)
[test] Castor: Loading hansen.playground.Media (VHS)
[test] Castor: Loading hansen.playground.Movie (Chain Reaction)
[test] Castor: Loading hansen.playground.Actor (Keanu Reeves)

The lines seems to come in opposite order, but this might simply reflect the way Castor is coded, e.g. by using recursive methods. You might also wonder why all objects are loaded, even the movie where Keanu Reeves doesn't act. The reason is that if you use the DVD object to get all movies in DVD format then you'll need "Lord of the Rings". And when you get this movie you'll also need Ian Holm. And so on.

Getting more information

If you're familiar with SQL then you'll see that one SELECT is not enough to get all the objects we need. Let's therefore use a tool like P6Spy. It's a utility that sits between a JDBC program and the database and watches and reports on the "traffic". To use it you replace the name of the JDBC driver in Castor's database.xml file with the P6Spy driver, and tell P6Spy to use the real JDBC driver. I won't go into details about installation of P6Spy. Suffice to say, it's very simple to do.

What P6Spy tells you (in its spy.log file) when you run the ReadActor program is this:

SELECT actor.id,actor.name,actor_movie.id_movie 
       FROM actor 
       LEFT OUTER JOIN actor_movie ON actor.id=actor_movie.id_actor 
       WHERE (actor.name = 'Keanu Reeves')
SELECT movie.title,movie.id_media,actor_movie.id_actor 
       FROM movie 
       LEFT OUTER JOIN actor_movie ON movie.id=actor_movie.id_movie 
       WHERE movie.id='11'
SELECT media.type,movie.id 
       FROM media 
       LEFT OUTER JOIN movie ON media.id=movie.id_media 
       WHERE media.id='1'
(5 more follows)
commit

The first select is the same as we've seen before. The others are used to get data for all the objects in the model (3 actors, 3 films, 2 medias).

This brings up a question about performance. What if you don't have a need for all the objects? Couldn't we postpone loading of objects until they're actually needed? The answer is yes, there's a mechanism called "lazy loading", which is one of the topics we'll look into in my next article. So stay tuned on JavaBoutique.com!  


Applet Index
(sorted alphabetically)

A B C D E F G H I J K
L M N O P Q R S T U
V W X Y Z #s
The Java Source
(applets w/source code)

A B C D E F G H I J K
L M N O P Q R S T U
V W X Y Z

How to Add Java Applets to Your Site

New on the Java Boutique:

New Article:
A Barebones Guide to Usability Testing
At first glance, usability testing may seem like unnecessary, or additional work. In todays budget slashed world, it is not uncommon for projects not to have the luxury of this valuable phase. This is a dangerous path to tread. Let's look at how we can incorporate usability testing into our design process.
... [more articles]

New Tutorial:
Java Certification Path API
Certificate based security forms the basis for SSL (Secure socket layer) transactions? Every year billions of transactions involving trillions of dollars are done safely using the SSL protocol. This week we'll look at the role of the Java certification path API and see how it provides a mechanism to implement certification path functionality.
... [more Tutorials]

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.

internet.com logo






Developer News

Is Adobe Targeting Microsoft's InfoPath?

Oracle Takes on Collaboration Market

DoS Flaw in Cisco Router, Switches



Database Journal Launched!
Jupiter Media has announced the launch of Database Journal. DBJ offers SQL courses and other database related resources for beginner to expert developers.



Scrolling Text
This is a suite of three applets that displays scrolling text using an array of images. The detailed description of array of each applet is provided.
Download of the Week
DS PageFlipText
This applet displays a page-flip effect between texts. Over the animation you can also insert an image and a scroll-text.

JB User Poll
Which version of Java do you use the most?
The JavaBoutique Top 15:
1. ChompText
2. NavBar
3. DJPopMenu
4. PulseText
5. PingPong
6. 3DMaze
7. Encyclo
8. Viewer
9. AScroll2
10. Distorter
11. Jtimer
12. BMI
13. AnimLetters_anim
14. BMMenu
15. AScratchNWin
Want more? Check out our Top 100!

Refer-It
Affiliate Program and Referral Directory.
New on internet.com
Internet Tax Ban Hits Congressional Fast Track
Bills to permanently extend current moratorium on Internet access taxes move in House and Senate.

UK Texting Takes Off
More than 8 billion text messages were sent across the UK since the beginning of 2003, while traffic to U.S. mobile phone Web sites spikes 106 percent during the same time period.

Intersil Drops Wi-Fi
The maker of the PRISM line of WLAN chips is saying good-bye to Wi-Fi and divesting itself of its wireless product business. The chips go to broadband circuit maker GlobespanVirata for approximately $365 million.


Jupitermedia is publisher of the internet.com and EarthWeb.com networks.
Copyright 2003 Jupitermedia Corporation All Rights Reserved.

Legal Notices,  Licensing, Reprints, & Permissions,  Privacy Policy.
http://www.earthweb.com/
http://www.internet.com/