I posted in the TomEE group asking for an example of how to use the import.*.sql file. Anybody care to elaborate or point me to a link where this is documented?
Thanks. Kay > On Apr 24, 2015, at 2:37 PM, Mark Struberg <[email protected]> wrote: > > 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 >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>> >> >
