db-ojb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian McCallister <mccallis...@forthillcompany.com>
Subject Re: New utility class for db creation
Date Wed, 21 Jan 2004 14:19:52 GMT
This is great, I have been executing the torque generated SQL directly 
against in-memory hsqldb for unit tests. Will be very happy to go from 
the torque schema instead!

-Brian

On Jan 21, 2004, at 9:00 AM, Thomas Dudziak wrote:

> Hi folks,
>
> I just added a new class that allows to create (e.g. "create
> database") and initialize (e.g. "create table") a database from java 
> using
> torque and the torque schemas. Usage is something like this:
>
> String               srcDir    = "resources/ojb";
> String               schemas   = "*-schema.xml";
> PersistenceBroker    broker    =
> PersistenceBrokerFactory.defaultPersistenceBroker();
> ConnectionRepository connRep   =
> MetadataManager.getInstance().connectionRepository();
> TorqueDBHandling     dbHandler = new
> TorqueDBHandling(connRep.getDescriptor(broker.getPBKey()), srcDir,
> schemas);
>
> dbHandler.createDB();
> dbHandler.createTables();
>
> I figured such a class might be useful to further automate the unit 
> tests
> and eventually make them independent of each other (e.g. by creating
> and populating the database prior to each test).
> I didn't exactly know where to put the class but I thought the
> broker.platforms subpackage is a good place as similar implementations
> might be necessary for other platforms supported by OJB (e.g. MsAccess 
> and
> Informix are not supported by Torque so they would need specific
> creation/initialization stuff) which then could be hidden by a
> Platform.getDbHandler and a DbHandler interface where the actual
> implementation is chosen by the PlatformImpls.
>
> I'll probably add stuff to populate the db from strings or files (xml,
> csv), as well.
>
> One problem that remains is that for most jdbc drivers the jdbc url to
> create a database is different from the url to manipulate an existing
> db. E.g. when using the ant sql task with mysql you would do this to
> create a db:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project default="main" basedir="." name="build-db">
>     <path id="project.class.path">
>         <fileset dir="lib" casesensitive="no">
>           <include name="**/*.jar"/>
>           <include name="**/*.zip"/>
>         </fileset>
>     </path>
>
>     <target name="main">
>         <sql classpathref="project.class.path"
>              driver="com.mysql.jdbc.Driver"
>              url="jdbc:mysql://localhost/"
>              userid="root"
>              password="">
>         drop database if exists testdb;
>         create database testdb;
>         </sql>
>     </target>
> </project>
>
> (note the missing database name in the url). As the database url is 
> driver
> specific (or at least platform specific), there is some testing 
> necessary
> to determine these urls for the torque-supported platforms.
>
> Tom
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Mime
View raw message