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 Wed, 21 Mar 2007 00:55:17 GMT
Then I'll first start with an easier task - check what happens in EE if entities 
are not explicitly listed in the persistence.xml file :).

thanks,
-marina

Marc Prud'hommeaux wrote:
> Marina-
> 
>> Let me give it a try. How would the persistence.xml property look  
>> like to generate .sql file?
> 
> 
> Actually, I just took a look at this, and it look like it isn't  
> possible to use the "SynchronizeMappings" property to automatically  
> output a sql file. The reason is that the property takes a standard  
> OpenJPA plugin string that configures an instances of MappingTool,  but 
> the MappingTool class doesn't have a setter for the SQL file to  write 
> out to.
> 
> So I think your only recourse would be to write your own adapter to  to 
> this that manually creates a MappingTool instance and runs it with  the 
> correct flags for outputting a sql file. Take a look at the  javadocs 
> for the MappingTool to get started, and let us know if you  have any 
> questions about proceeding.
> 
> 
> 
> On Mar 20, 2007, at 4:59 PM, Marina Vatkina wrote:
> 
>> Marc,
>>
>> Marc Prud'hommeaux wrote:
>>
>>> Marina-
>>>
>>>> They do in SE, but as there is no requirement to do it in EE,   
>>>> people try to reduce the amount of typing ;).
>>>
>>> Hmm ... we might not actually require it in EE, since we do  examine  
>>> the ejb jar to look for persistent classes. I'm not sure  though.
>>> You should test with both listing them and not listing them. I'd  be  
>>> interested to know if it works without.
>>
>>
>> Let me give it a try. How would the persistence.xml property look  
>> like to generate .sql file? Where will it be placed in EE  
>> environment?  Does it use use the name as-is or prepend it with  some 
>> path?
>>
>> thanks.
>>
>>> On Mar 20, 2007, at 4:19 PM, Marina Vatkina wrote:
>>>
>>>> Marc,
>>>>
>>>> Marc Prud'hommeaux wrote:
>>>>
>>>>> Marina-
>>>>> On Mar 20, 2007, at 4:02 PM, Marina Vatkina wrote:
>>>>>
>>>>>> 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?
>>>>>
>>>>>
>>>>> Yes. People usually list them all in the <class> tags in the  
 
>>>>> persistence.xml file.
>>>>
>>>>
>>>>
>>>> They do in SE, but as there is no requirement to do it in EE,   
>>>> people try to reduce the amount of typing ;).
>>>>
>>>> If OpenJPA can identify all entities in EE world, why can't it  do  
>>>> the same for the schema generation?
>>>>
>>>> I'll check the rest.
>>>>
>>>> thanks,
>>>> -marina
>>>>
>>>>>> 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.
>>>>>
>>>>>
>>>>> The output should be sufficient. Try it out and see if the  format  
>>>>> is  something you can use.
>>>>>
>>>>>> 3. Is there a document that describes all possible values for   
>>>>>> the  "openjpa.jdbc.SynchronizeMappings" property?
>>>>>
>>>>>
>>>>> Unfortunately, no. Basically, the setting of the    
>>>>> "SynchronizeMappings" property will be of the form "action   
>>>>> (Bean1=value1,Bean2=value2)", where the "bean" values are  those   
>>>>> listed in org.apache.openjpa.jdbc.meta.MappingTool  (whose javadoc  
>>>>> you  can see http://incubator.apache.org/openjpa/ docs/latest/ 
>>>>> javadoc/org/ apache/openjpa/jdbc/meta/ MappingTool.html ).
>>>>>
>>>>>> 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