Re: About Database Vender Independent for WebObjects.
Re: About Database Vender Independent for WebObjects.
- Subject: Re: About Database Vender Independent for WebObjects.
- From: "Arturo Perez" <email@hidden>
- Date: Mon, 31 Jan 2005 11:52:04 -0500
This page might be of interest. I can't find the version for the latest
version of WO, though.
http://developer.apple.com/documentation/LegacyTechnologies/WebObjects/WebObjects_4.5/System/Documentation/Developer/EnterpriseObjects/DevGuide/EOsII1.html
Marina Zheng wrote:
It's NOT a standard type....wait, it is most likely
a standard implementation of "OpenGIS" specification. But it's then from
database point only. You then need a standard java API(Like
JGeometry) to access it too and I'm not sure if OpenGIS has specified
these APIs. However, Struct is for sure proprietary to oracle ONLY, and
JGeometry is probably so.
In whatever case, even if both Geometry and the java APIs for it is
standard of OpenGIS, I don't really think WO has implemented anything
about OpenGIS so WO won't be able to handle it for you then.
--marina
*/Owen McKerrow <email@hidden>/* wrote:
Sorry still a little unclear, is Geometry a standard Oracle type ? i.e.
like a VAr or an INT ?
On 31/01/2005, at 11:04 AM, java mouse wrote:
> 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 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 wa! nt 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 g! oing 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.
> O! ne 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:
>
> > An! other 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 – these! 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 beyo! nd 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?
> >
> > Than! ks a lot,
> > -marina
> > __________________________________________________
> > 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:
> > email@hidden
> >
> > This email sent to email@hidden
> >
> >
> >
> > Dov Rosenberg wrote:
> > If you want to support multiple databases I would stay away from
> > stored procedures – these are very vendor specific. WebObjects/EOF
> > makes it much easier to support multiple databases because EOF
is an
> > Object Relati! onal mapping tool that abstracts the database
from the
> > source code. EOPrototypes are very useful is supporting multiple
> > databases. Check out Practical Web! Objects 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? 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:
> > email@hidden
> >
> > This email sent to email@hidden
> >
> >
> > Do you Yahoo!?
> > Yahoo! Mail - now with 250MB free storage. Learn more.
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Webobjects-dev mailing list (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> >
> email@hidden
> >
> > This email sent to 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
>
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!?
Yahoo! Search presents - Jib Jab's 'Second Term'
<http://us.rd.yahoo.com/evt=30648/*http://movies.yahoo.com/movies/feature/jibjabinaugural.html>
------------------------------------------------------------------------
_______________________________________________
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
_______________________________________________
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