Re: About Database Vender Independent for WebObjects.
Re: About Database Vender Independent for WebObjects.
- Subject: Re: About Database Vender Independent for WebObjects.
- From: java mouse <email@hidden>
- Date: Sun, 30 Jan 2005 16:04:53 -0800 (PST)
- Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
Hi Owen,
Thank you very much for the reply.
I don't know exactly how to use EOF and code for it, but I think I know the idea of it. I'll really start to get my hands dirty once I decide to go with WO.
However, Geometry is not one ROW in the table, it's a data type of one COLUMN. Say I have the following table:
Table Name: tb_address
address_id: int
street: Varchar[100]
city: Varchar[100]
state: Char[2]
location: Geometry --> which saves the latitude and longitude of the address as Geometry
So when this table is mapped to an Enterprise Objects, it should have a field for "location" of Geometry type, with a getter and a setter:
public JGeometry getLocation(){
/*
Step1: ResultSet rsLoc = statement.executeQuery("Select location from tb_address ....");
Step2: Struct objLocation = (oracle.sql.STRUCT)rs.getObject(1);
Step3: JGeometry jgLocation = JGeometry.load(objLocation);
Step4: Return jgLocation;
*/
}
public void setLocation(JGeometry jgLocation){
//........(some validation check);
this._jgLocation = jgLocation;
}
And to save JGeometry to db:
Step1: PreparedStatement ps = connection.prepareStatement("UPDATE tb_address set location=? where ...");
Step2: STRUCT obj = JGeometry.store(jgLocation, dbConnection);
Step3: ps.setObject(1, obj);
Step4: ps.execute();
Both "Struct" and "JGeometry" are in a sdoapi.jar provided by Oracle, meaning they are proprietary. It also has to use PreparedStatement other than just normal resultset or one simple SQL script. This is what make me really doubt it that EOF can handle it all by itself. You'll have to be able to actually modify the generated Enterprise Object file to do this.
It's also why we can't just use CMP(container will manage the state for you), but having to use BMP(you write your own persistance code). In my last post, I actually meant I wrote trigger so that we could still use CMP without having to write all this persistance code.
Very lengthy. Sorry for that.
Once again, thank you very much. :-)
Regards,
--marina
Owen McKerrow <email@hidden> wrote:
Hi Marina,
Im not an Oracle expert ( or indeed user ) but if I understand your
question correctly, when you take a row from a table in the DB, in this
case a Gemoetry, EOF turns it into a instance of a JGeometry with its
attributes set to the same values as the values in the DB. You then use
this instance like a normal java object. Lets say you want to change
the attribute Name, from "jones" to "Smith", so as you would expect you
would write...
myGeometryObject.setName("Smith");
Vanilla java stuff.
Then you want to save this change back to the DB, you would use the
following line.
ec.saveChanges();
And thats it. That one line will take your changes and save them back
to the database. No SQL needs to be made by you, WO and EOF do that for
you.
Now let me explain the above line of code, without!
going to
deep into
belly of WO :)
In WO you have a thing called an EditingContext , this editing context
is what you use when you want to fetch from and save to the DB. You ask
it to get you data from the DB which it then converts into instances of
Java Objects and hands these back to you. After you have made changes
to your object you then ask the editing context to write these changes
back to the DB. Thats what that line of code is doing, ec is an
instance of an editing context and Im asking it to save its changes.
One thing to point out, that once the editing context has fetched the
data from the database, it continues to watch the objects that its has
made and thus knows when an object has changed. So when you ask it to
save its changes it looks at all the objects its watching, check which
ones details have changed and then saves them all in one go.
On 31/01/2005, at 10:01 AM, java mouse wrote:
> !
Another
question is: one should be able to edit an Enterprise Object
> file(a java class file is generated right?), right?
>
> The reason is: what happen if there's some proprietary type to map
> like Oracle Spatial has a "Geometry" data type, with an jar containing
> "JGeometry" accordingly(So you read Geometry from db into JGeometry
> java object, this has to be done with manually coding SQL scripts).
>
> For J2EE, you'll have to use BMP instead of CMP so as to manually
> write SQL scripts to fetch & save Geometry, but I don't know how you
> would handle it in WO? (In my real project, I actually used Trigger,
> so that I still used BMP for Geometry.)
>
> Thanks for kindly reply,
> --marina
>
>
> Dov Rosenberg wrote:
> If you want to support multiple databases I would stay away from
> stored procedures the!
se are
very vendor specific. WebObjects/EOF
> makes it much easier to support multiple databases because EOF is an
> Object Relational mapping tool that abstracts the database from the
> source code. EOPrototypes are very useful is supporting multiple
> databases. Check out Practical WebObjects from Chuck Hill (Apress
> Books). It is a very good book that goes way beyond product manuals.
>
>
> --
> Dov Rosenberg
> Conviveon Corporation
> http://www.conviveon.com
>
>
>
>
> On 1/30/05 3:53 AM, "java mouse" wrote:
>
>
> I read that WebObjects data-driven application can change its database
> without a single line of code, and I also read that WO app. actually
> support the use of StoredProcedure.
>
> My question is: how does it achieve database nuetral with the
> storedprocedure?
>
> Th!
anks a
tional
mapping tool that abstracts the database from the
> source code. EOPrototypes are very useful is supporting multiple
> databases. Check out Practical WebObjects from Chuck Hill (Apress
> Books). It is a very good book that goes way beyond product manuals.
>
>
> --
> Dov Rosenberg
> Conviveon Corporation
> http://www.conviveon.com
>
>
>
>
> On 1/30/05 3:53 AM, "java mouse" wrote:
>
>
> I read that WebObjects data-driven application can change its database
> without a single line of code, and I also read that WO app. actually
> support the use of StoredProcedure.
>
> My question is: how does it achieve database nuetral with the
> storedprocedure?
>
> Thanks a lot,
> -marina
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yah!
oo! Mail
email@hidden
Owen McKerrow
WebMaster, emlab
http://emlab.uow.edu.au
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
"I like the way this project has somehow, against all common sense, got
itself made."
- Peter Jackson, "The Lord of The Rings"
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden