> Robert Enyedi said on Thursday, August 03, 2006 10:03 AM
> 
> We are evaluating the Torque Generator for using it in our 
> product. We have heard many good words about the Torque 
> project and we would like to become faithful users and maybe 
> even contributors :-)

The more the merrier (and better coding...)

> Currently we use a MySQL 4 database in the back-end. We would 
> like to also be able to use the Derby and Oracle database 
> engines. For this the critical part is to have our current 
> MySQL schema transformed into the Torque XML DB schema.

Cross DB support is what got me into Torque as well.  IMHO,
Torque's an excellent choice for this.
 
> Using the torque-jdbc-transform Ant task, I have tried to 
> extract the Torque XML DB schema from our existing database. 
> While generally correct, the result had some things missing though:
> - the ENGINE=MyISAM option is present for some of our tables. 
> Is there something equivalent in Torque?
> - the FOREIGN KEY REFERENCE ON DELETE SET NULL sequence is 
> completely discarded,
> - the UNIQUE and ON DELETE CASCADE clauses are discarded,
> - information on INDEXES is discarded,
> - information on AUTO INCREMENT fields is discarded.
> 
> Could these be due to the limited database meta-information 
> provided by JDBC?

Partially do to JDBC limitation but I think it's mostly due to 
the JDBC task being more of a typing saver than a circular tool 
that can take any schema export it and regenerate it.  (But 
contributions to improve this are welcome).

>From your list though, you need to remember that Torque is
designed to encourage (but not enforce) cross DB support.  
Therefore DB specific items like ENGINE=MyISAM are not fully
supported in the general distribution (but folks have modified
the templates to locally support stuff like this).

> 
>  From the generated schema I generated back the MySQL schema 
> and saw some type mapping inconsistencies:
> - INTEGER was generated as MEDIUMINT (I found this to be a 
> but fixed in the 3.2.1 development branch),
> - DATE was generated as DATETIME,
> - DATETIME was generated as TIMESTAMP (this is correct, 
> though starting with MySQL 4),
> - BLOB becomes LONG BLOB,
> - BINARY NOT NULL becomes only NOT NULL (this is bad when 
> storing case sensitive strings, like path names),
> - MEDIUMTEXT becomes TEXT.

You have to keep in mind that in order to maintain cross DB
support, you really need to think of the XML Schema as your
starting point and not just a configuration file.  Once you 
get your existing schema mapped into XML, then start adding 
tables and changes via the XML, you can be sure that what is 
in the XML can have a reasonable matching schema created in 
ANY DB Torque supports. 

FWIW, for the most part, the mapping between DB specific 
types and Torque's XML types are done as much as possible 
in accordance with the SQL standards. ( I suspect that 
MySQL's LONG BLOB is a closer match to the SQL Standard 
definition of BLOB than MySQL's BLOB size.)

On the other hand, you can also just opt not use Torque's 
version of what the DB specific schema should be and 
use your own.  The XML becomes the mapping for generating
matching objects. On the Java side, if the JDBC driver
can map the SQL type to a Java Object, the Torque OM will
generally support it.  It doesn't care if the underlying
field is MEDIUMTEXT or TEXT/BLOB or LONGBLOB.  FYI - To 
turn off sql generation of a specific table, add the 
skipSql="false" attribute.


Duke CE Privacy Statement
Please be advised that this e-mail and any files transmitted with it are 
confidential communication or may otherwise be privileged or confidential and 
are intended solely for the individual or entity to whom they are addressed.  
If you are not the intended recipient you may not rely on the contents of this 
email or any attachments, and we ask that you  please not read, copy or 
retransmit this communication, but reply to the sender and destroy the email, 
its contents, and all copies thereof immediately.  Any unauthorized 
dissemination, distribution or copying of this communication is strictly 
prohibited.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to