openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marina Vatkina <Marina.Vatk...@Sun.COM>
Subject Re: Using DDL generation in a Java EE environment?
Date Tue, 20 Mar 2007 23:02:03 GMT
Marc,

Thanks for the pointers. Can you please answer the following set of questions?

1. The doc requires that "In order to enable automatic runtime mapping, you must 
first list all your persistent classes". Is this true for EE case also?

2. Section "1.2.Generating DDL SQL" talks about .sql files, but what I am 
looking for are "jdbc" files, i.e. files with the lines that can be used 
directly as java.sql statements to be executed against database.

3. Is there a document that describes all possible values for the 
"openjpa.jdbc.SynchronizeMappings" property?

thank you,
-marina

Marc Prud'hommeaux wrote:
> Marina-
> 
> On Mar 15, 2007, at 5:01 PM, Marina Vatkina wrote:
> 
>> 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?
> 
> 
> We do have support for runtime creation of the schema via the  
> "openjpa.jdbc.SynchronizeMappings" property. It is described at:
> 
>   http://incubator.apache.org/openjpa/docs/latest/manual/ 
> manual.html#ref_guide_mapping_synch
> 
> The property can be configured to run the mappingtool (also described  
> in the documentation) at runtime against all the registered  persistent 
> classes.
> 
> 
>> 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?
> 
> 
> b
> 
> 
>> 2. How would a user drop the tables in such environment?
> 
> 
> I don't think it can be used to automatically drop then create  tables. 
> The "mappingtool" can be executed manually twice, the first  time to 
> drop all the tables, and the second time to re-create them,  but I don't 
> think it can be automatically done at runtime with the  
> "SynchronizeMappings" property.
> 
> 
>> 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?
> 
> 
> That is one of the reasons why we think it would be inadvisable to  
> automatically drop tables at runtime :)
> 
> 
>> 4. Is there a mode that allows creating a file with the jdbc  
>> statements to create or drop the tables and constraints?
> 
> 
> Yes. See:
> 
>   http://incubator.apache.org/openjpa/docs/latest/manual/ 
> manual.html#ref_guide_ddl_examples
> 
> 
>> thank you,
>> -marina
>>
> 


Mime
View raw message