openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@bea.com>
Subject RE: Using DDL generation in a Java EE environment?
Date Mon, 19 Mar 2007 01:57:23 GMT
Hi,

I'm typing this while offline, so don't have access to the OpenJPA docs
URL, so can't include any links. Much of this is discussed in the
documentation, however.

> be nice to add java2db support for OpenJPA as well, and I'm 
> wondering if we need 
> to do anything special, or it'll all work just by itself?

OpenJPA does already have features that generally do what you're
mentioning.

> 1. Which API would trigger the process, assuming the correct 
> values are 
> specified in the persistence.xml file? Is it:
> a) <provider>.createContainerEntityManagerFactory(...)? or
> b) the 1st call to emf.createEntityManager() in this VM?
> c) something else?

When using the openjpa.jdbc.SynchronizeMappings property in the
persistence.xml file, I believe that it's the first call to
emf.createEntityManager().  You can also directly interact with the
MappingTool and SchemaTool programmatically.

> 2. How would a user drop the tables in such environment?

The MappingTool and SchemaTool provide table drop capabilities. However,
why do you want to drop the tables in such an environment? Typically,
I've found that what people want is to clean out their tables so that at
the beginning of a test run, they're working with empty tables. OpenJPA
supports an option to automatically synchronize the database tables with
what's in the current mappings, and then issue a DELETE statement
against each table. In a test environment, this is often much faster
than doing schema mutation. Additionally, it is more common to have
permission to delete all rows in the database than to do schema
manipulation. See https://issues.apache.org/jira/browse/OPENJPA-94 for
details about how to do this.

> 3. If the answer to either 1a or 1b is yes, how does the code 
> distinguish 
> between the server startup time and the application being 
> loaded for the 1st time?

It doesn't.

> 4. Is there a mode that allows creating a file with the jdbc 
> statements to 
> create or drop the tables and constraints?

Yes.

-Patrick

-- 
Patrick Linskey
BEA Systems, Inc. 

_______________________________________________________________________
Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it. 

> -----Original Message-----
> From: Marina.Vatkina@Sun.COM [mailto:Marina.Vatkina@Sun.COM] 
> Sent: Thursday, March 15, 2007 5:01 PM
> To: open-jpa-dev@incubator.apache.org
> Subject: Using DDL generation in a Java EE environment?
> 
> Hi,
> 
> I am part of the GlassFish persistence team and was wondering 
> how does OpenJPA 
> support JPA auto DDL generation (we call it "java2db") in a 
> Java EE application 
> server.
> 
> Our application server supports java2db via creating two sets 
> of files for each 
> PU: a ...dropDDL.jdbc and a ...createDDL.jdbc file on deploy 
> (i.e. before the 
> application  is actually loaded into the container) and then 
> executing 'create' 
> file as the last step in deployment, and 'drop' file on 
> undeploy or the 1st step 
> in redeploy. This allows us to drop tables created by the 
> previous deploy operation.
> 
> This approach is done for both, the CMP and the default JPA 
> provider. It would 
> be nice to add java2db support for OpenJPA as well, and I'm 
> wondering if we need 
> to do anything special, or it'll all work just by itself?
> 
> Here are my 1st set of questions:
> 
> 1. Which API would trigger the process, assuming the correct 
> values are 
> specified in the persistence.xml file? Is it:
> a) <provider>.createContainerEntityManagerFactory(...)? or
> b) the 1st call to emf.createEntityManager() in this VM?
> c) something else?
> 
> 2. How would a user drop the tables in such environment?
> 
> 3. If the answer to either 1a or 1b is yes, how does the code 
> distinguish 
> between the server startup time and the application being 
> loaded for the 1st time?
> 
> 4. Is there a mode that allows creating a file with the jdbc 
> statements to 
> create or drop the tables and constraints?
> 
> thank you,
> -marina
> 
> 

Mime
View raw message