Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [stellation-res] Database abstraction

Hi,

  why not use XML/XSLT? It seems like a natural choice to me?! 

  It would be nice to define the structure of the database as an xml-schema
and generate the DDL from that using XSLT. The Stylesheet could come with an
extra style sheet per database to store the keywords specific to a particular
database vendor.

  What do you think?

Mariano

> 
> So... I'm looking at trying to create a database abstraction layer that
> will work accross Postgres, DB2, Oracle, MySQL/InnoDB, and
> Firebird. 
> 
> One option is to totally automate the SQL generation process. This
> allows us to smoothly handle things like the INNODB declarations
> that need to go onto the end of table creations, variations in typenames,
> etc.
> 
> I've tried a first cut at doing this for table creation. I'm looking at a
>  
> bit of test code, and I can't decide whether I like it (it's nicely abstr
> act,
> and quite easy to write), or hate it (it's hard to see the SQL in it). He
> re's
> a sample: what do you folks think: is this a good direction, or am I bein
> g
> idiotically abstract?
> 
> Here's the original SQL:
> 
> 	CREATE TABLE Properties (INTEGER aid,
> 					        INTEGER vid,
> 					        INTEGER inheritable,
> 						VARCHAR(200) name,
> 						VARCHAR(1600) value,
> 			CONSTRAINT fk3 FOREIGN KEY (aid, vid) REFERENCES Versions(aid, v
> id)
> 			PRIMARY KEY(aid, vid, name))
> 
> 
> Here's the corresponding code:
>         DatabaseCreateTableCommand cmd = 
>                     _db.createTable("Properties")
>                         .addIntegerField("aid")
>                         .addIntegerField("vid")
>                         .addIntegerField("inheritable")
>                         .addShortStringField("name")
>                         .addLongStringField("value")
>                        .beginForeignKeyConstraint("fk3", "FOREIGN KEY")
>                             .addConstraintField("aid")
>                             .addConstraintField("vid")
>                            .beginForeignKeyReferences("Versions")
>                              .addConstraintField("aid")
>                              .addConstraintField("vid")
>                            .endForeignKeyConstraint()
>                        .beginPrimaryKeyConstraint()
>                           .addConstraintField("aid")
>                           .addConstraintField("vid")
>                           .addConstraintField("name")
>                        .endPrimaryKeyConstraint()
>                      .endCommand();
> 
> -- 
> Mark Craig Chu-Carroll,  IBM T.J. Watson Research Center  
> *** The Stellation project: Advanced SCM for Collaboration
> ***		http://www.eclipse.org/stellation
> *** Work Email: mcc@xxxxxxxxxxxxxx  ------- Personal Email: markcc@bestwe
> b.net
> 
> 
> _______________________________________________
> stellation-res mailing list
> stellation-res@xxxxxxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/stellation-res
> 



Back to the top