users@jpa-spec.java.net

[jpa-spec users] [jsr338-experts] Re: schema generation open issues

From: Steve Ebersole <steve.ebersole_at_redhat.com>
Date: Tue, 05 Feb 2013 13:55:33 -0600

On 02/05/2013 01:20 PM, Linda DeMichiel wrote:
> thanks, Steve
>
> On 2/5/2013 9:13 AM, Steve Ebersole wrote:
>> 1) I think the split into database-action and script-action plays
>> much nicer. Nice thought.
>>
>> 2) You wrote '* javax.persistence.schema-generation.database-source'
>> in the updated spec section, as a replacement for
>> javax.persistence.schema-generation-source. IMO this should be named
>> 'javax.persistence.schema-generation.create-source'
>> instead to pair with the new
>> 'javax.persistence.schema-generation.drop-source'
>>
>> 3) I wonder if a better consistent naming scheme would be to use
>> javax.persistence.schema-generation.database.<setting>
>> and javax.persistence.schema-generation.scripts.<setting>? To me that
>> plays much nicer:
>>
>
> I am fine with this. See the below for minor tweaks/questions.
> Otherwise, I plan to commit these changes to the spec.
>
>> javax.persistence.database-product-name
>> javax.persistence.database-major-version
>> javax.persistence.database-minor-version
>>
>> javax.persistence.schema-generation.create-source
>> javax.persistence.schema-generation.drop-source
>> javax.persistence.schema-generation.create-script-source
>> javax.persistence.schema-generation.drop-script-source
>
> This would be
> javax.persistence.schema-generation.scripts.create-source and
> drop-source, right?
>
> Should the preceding be
> javax.persistence.schema-generation.database.create-source and
> drop-source ?
> Or is that obvious?

In the initial suggestion, create-source and drop-source are meant to
identify the
metadata/scripts/metadata-then-scripts/scripts-then-metadata
selections. create-script-source and drop-script-source are meant to
identify the location (Reader/file-url) of the input scripts

There are multiple axises, if you will, at play here. My suggestion was
to focus the setting naming based on what used to be called targets:
scripts, database. So really for target-specific settings we have:

javax.persistence.schema-generation.<target>.<setting>

For non-target-specific settings, we have just:

javax.persistence.schema-generation.<setting>

As I read it initially, I had thought that create-script-source and
drop-script-source were both meant for database and scripts targets. Is
that accurate? If not, then by all means
javax.persistence.schema-generation.scripts.create-source and
drop-source make more sense. But in that case I think we need to
clarify the wording about when settings are supposed to bear on just
database target or just scripts target. The renaming I suggested is a
step in that direction.

To be honest, I did not like the multiple meanings for the term
"source". It gets confusing trying to explain the settings. But, as I
had no better sugestion, I let it go. "source" can mean either:
1) what "sources" should we consider to obtain create/drop DDL commands
2) for the scripts source (see 1), what are the source/location/reader
for that script. My gut tells me this is the usage that needs a new
term, I just dont know what that term is.