[Opensource] [FUTURE OF DB OBJECTS]

Peter A. J. Pilgrim peterp at xenonsoft.demon.co.uk
Wed Nov 6 17:56:15 PST 2002


Michael Rimov wrote:
> Hey All,
> 
> -------------------------------------------------------------------------
> Future of DBObjects:
> 
> I've been already working on a DataObject API since Expresso 5, and the 
> roots of it are in place.  There's a goal that I have to have a series 
> of async DataObject APIs.  However, that is a long term goal for 
> Expresso 6, and I'm only "baby stepping" in that direction so we don't 
> lose anybody.  I'm at the point where we, as a community, need to make a 
> decision on how we want field access.  There are a few options:
> 
> Pseudocode:
> 
>     DBObject.getField().asString()/.asDate()/.asInteger()  etc.
> 
>         or
>     (Date)DBObject.getField()/(String)DBObject.getField() etc.
>         or
> 
>     DBObject.getFieldString()/.getFieldInt()/.getFieldDecimal()
> 
> Maybe it's preference, but I don't really like the 3rd method, even 
> though that's what we're doing right now.  The biggest problem is that 
> it is part of the reason we have this monster of a DBObject class right 
> now.  By delegating conversion code to the field object (as in #1) we 
> slim down DBObject.   #2 is easier to code in that you make DBObject a 
> dynabean and leave it up to the coder to know what is what.... but I 
> think it might lead to weird class cast exceptions.  So I'm currently 
> leaning towards #1 as my own personal preference.
> 
> Now keep in mind that the finalization of this API won't be probably for 
> a year, so as far as rewriting code goes, you won't have to do it 
> immediately.  What are your guy's thoughts on this?  Which API method 
> would you prefer to see?  If you want it as is

As I said before the DBObject should store native JDBC types rather
than String types, because it save time and efficiency.
Consider read a String date from a DBObject or a web form, we
have to convert to a java.util.Date then store it back as String
inside a DBObject.


	String 	-> java.sql.Timestamp -> java.util.Data --> String


This is nonsense

I would prefer

	public Object  getFieldObject( String name );
	public void    setFieldObject( String name, Object value );
		// accessor mutator for getting native objects as to
		// and from the JDBC layer

	public int getFieldType( String name );
		// get the JDBC type e.g. java.sql.Types.REAL

The above should be enough to gauge the type of JDBC column and
perform your own conversions.

Unfortunately we have to be backwards compatible so

	public String  getField( String name );
	public void    setField( String name, String value );

has to live on.


-- 
Peter Pilgrim
ServerSide Java Specialist

My on-line resume and for interview videos about myself, J2EE
Open Source, Struts and Expresso.
    ||
    \\===>  `` http://www.xenonsoft.demon.co.uk/no-it-striker.html ''




More information about the Opensource mailing list