Yes, in that case for sure! I just wanted to add this note as there are some people (not you, but others who might read this in the archive later) who just read this and then copy this 1:1 to their productive application…
I’ve seen _way_ too many sample code going into production already :( LieGrue, strub > Am 24.04.2015 um 21:20 schrieb Kay Wrobel <[email protected]>: > > Danke, Mark. > > This IS for a test case with a limited amount of data. So a perfectly valid > approach, I'd say. > > Kay > >> On Apr 24, 2015, at 2:14 PM, Mark Struberg <[email protected]> wrote: >> >> All this is fine for sample apps and smallish installations. >> >> However, I personally suggest to neither use the import.sql magic nor the >> auto-generated schema creation in _real_ production. >> >> Why so? >> *) Simple because for a real applciation you will later have to add new >> features, change the db schema and probably also do a migration. >> >> *) For a real application you really like to look at the database. Sometimes >> you get intermediate mapping tables instead of a simple 1:1 if you don’t >> take care. My generating the schema upfront you can really look at the >> create table statements. I alsays use the openjpa-maven-plugin for it. For >> unit tests I use the sql-maven-plugin to create the test database. >> >> *) you might like to use liquibase or flywaydb and a schema-version >> management. I won’t go into details, but check out those 2 projects. >> Definitly worth looking at. >> >> LieGrue, >> strub >> >> >>> Am 24.04.2015 um 19:11 schrieb Romain Manni-Bucau <[email protected]>: >>> >>> 2015-04-24 19:01 GMT+02:00 Kay Wrobel <[email protected]>: >>> >>>> Romain: you're right! Derby.jar doesn't ship with TomEE. No clue how that >>>> ended up in the lib directory. My mistake. >>>> >>>> So you're suggesting I use Hibernate? But I have a Derby database and I >>>> extracted the data as INSERT statements (from Squirrel tool) and it seems >>>> to contain some Derby-specific stuff, like the notation of date field data >>>> looks like this: {d '2015-04-24'}. Not sure if Hibernate will take that or >>>> complain. I would prefer the other solution where I can provide an SQL >>>> script that is written for that database system (Derby). >>>> >>>> >>> import-<name either of the datasource or the persistence unit>.sql is a >>> tomee feature not an hibernate one (import.sql). >>> >>> PS: if you choose the tomee solution maybe move over tomee@ list >>> >>> >>>>> On Apr 24, 2015, at 11:38 AM, Romain Manni-Bucau <[email protected]> >>>> wrote: >>>>> >>>>> 2015-04-24 18:15 GMT+02:00 Kay Wrobel <[email protected]>: >>>>> >>>>>> Re your question about the special need: yes. I want to provide a full >>>>>> database, the SAMPLE Derby database that ships with NetBeans/Glassfish >>>> to a >>>>>> user who will be testing a specific use case, but under Apache TomEE. >>>>>> Originally I wanted to provide the entire database as a Derby Database >>>>>> file/directory inside my web app and then connect to it via the Derby >>>>>> Embedded driver. I fail to be able to provide the proper JDBC URL so >>>> that >>>>>> TomEE finds that embedded database in my web app directory (not sure >>>> where >>>>>> TomEE even looks at. >>>>>> >>>>>> So I decided, well, I would set the database URL to >>>>>> jdbc:derby:memory:sample;create=true as an in-memory database and simply >>>>>> run an SQL script that completely creates the database with CREATE TABLE >>>>>> and INSERT statements. But I didn't know how to instruct the persistence >>>>>> layer to run that script when the application launches. Which is when I >>>>>> found the Oracle reference I mentioned earlier, but it is part of JPA >>>> 2.1 >>>>>> as part of the JEE 7 spec. TomEE is based on JEE 6 and JPA 2.0, which >>>>>> apparently doesn't have that feature. Which is why I turned to the >>>> OpenJPA >>>>>> community to see if that is something OpenJPA can do. Apparently this >>>> has >>>>>> been something EclipseLink and Hibernate had figured out a while ago, >>>> but I >>>>>> want to go with what TomEE provides, which is OpenJPA. TomEE also ships >>>>>> with the derby.jar, so there's that. >>>>>> >>>>>> >>>>> TomEE doesnt provide derby but hsqldb. In TomEE you can use >>>>> import-<datasource>.sql or import-<persistenceunit>.sql init scripts for >>>>> instance. ALso tomee datasource config (commons-bdcp) has such an option. >>>>> Can be easier alternative to jpa config. >>>>> >>>>> >>>>>> Please advise. >>>>>> >>>>>> Kay >>>>>> >>>>>>> On Apr 24, 2015, at 10:59 AM, Jody Grassel <[email protected]> wrote: >>>>>>> >>>>>>> That directive will instruct OpenJPA to introspect the databases to >>>>>> ensure >>>>>>> the tables needed for the table schema defined by your ORM exists, and >>>>>> will >>>>>>> create the table structures automatically if they do not exist. Do you >>>>>>> have a special need that requires OpenJPA to execute a provided SQL >>>>>> script? >>>>>>> >>>>>>> On Fri, Apr 24, 2015 at 10:54 AM, Kay Wrobel <[email protected]> >>>> wrote: >>>>>>> >>>>>>>> Thanks, Jody. How will that let me provide an SQL script containing >>>>>> CREATE >>>>>>>> TABLE and INSERT statements? >>>>>>>> >>>>>>>> Kay >>>>>>>> >>>>>>>>> On Apr 24, 2015, at 10:51 AM, Jody Grassel <[email protected]> >>>> wrote: >>>>>>>>> >>>>>>>>> Add the following property to your persistence unit: >>>>>>>>> >>>>>>>>> <property name="openjpa.jdbc.SynchronizeMappings" >>>>>>>>> value="buildSchema(ForeignKeys=true)"/> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, Apr 24, 2015 at 10:47 AM, Kay Wrobel <[email protected]> >>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi everybody. >>>>>>>>>> >>>>>>>>>> I am having a rough time finding a way to initialize an Embedded >>>>>>>> In-Memory >>>>>>>>>> Derby database in my web application. I found a reference on >>>> Oracle's >>>>>>>> web >>>>>>>>>> site that states you can initialize a database with DDL and DML >>>>>>>> statements >>>>>>>>>> using properties like the following: >>>>>>>>>> >>>>>>>>>>> <properties> >>>>>>>>>>> <property >>>>>>>>>> name="javax.persistence.schema-generation.database.action" >>>>>>>>>> value="drop-and-create"/> >>>>>>>>>>> <property >>>>>>>>>> name="javax.persistence.schema-generation.create-source" >>>>>>>> value="script"/> >>>>>>>>>>> <property >>>>>>>>>> name="javax.persistence.schema-generation.create-script-source" >>>>>>>>>> value="META-INF/sql/create.sql" /> >>>>>>>>>>> <property name="javax.persistence.sql-load-script-source" >>>>>>>>>> value="META-INF/sql/data.sql" /> >>>>>>>>>>> </properties> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> However, that seems to be a new feature in JPA 2.1 spec as part of >>>> JEE >>>>>>>> 6. >>>>>>>>>> I am working with OpenJPA provided by Apache TomEE, which is >>>>>>>> openjpa-2.4.0 >>>>>>>>>> non-final, a JPA 2.0 implementation I would imagine. The current >>>>>>>> release on >>>>>>>>>> OpenJPA web site is openjpa 2.3. >>>>>>>>>> >>>>>>>>>> Is there a way to accomplish this via JPA 2.0 and/or OpenJPA >>>>>>>> properties? >>>>>>>>>> I am trying to initialize an in-memory database for a test case I >>>> try >>>>>> to >>>>>>>>>> provide to someone. >>>>>>>>>> >>>>>>>>>> Any help would be much appreciated. >>>>>>>>>> >>>>>>>>>> Kay Wrobel >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >> >
