/** Test the generate schema feature from the Persistence API. */ public void testPersistenceGenerateSchemaUseConnection() { String GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET = "jpa21-generate-schema-use-connection-drop.jdbc"; String GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET = "jpa21-generate-schema-use-connection-create.jdbc"; String GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME = "generate-schema-use-conn-session"; Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties(getPersistenceUnitName())); properties.put( PersistenceUnitProperties.SESSION_NAME, GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, "true"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET); Persistence.generateSchema(getPersistenceUnitName(), properties); // Now create an entity manager and build some objects for this PU using // the same session name. Create the schema on the database with the // target scripts built previously. testPersistenceGenerateSchemaOnDatabase( GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET, GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET, GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME); }
public void testDatabaseSchemaGenerationDropAndCreate() { // currently server test framework supports multiple persistence units tests up to 5 // PUs(MulitPU-1...5), the tests of this 6th PU will be excluded from running on server if (!isOnServer()) { Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties("ddl-schema-template")); properties.put(PersistenceUnitProperties.SESSION_NAME, "ddl-schema-drop-and-create-session"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put(PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_DATABASE_SCHEMAS, "true"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, "jpa21-ddl-schema-drop-and-create-drop.jdbc"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, "jpa21-ddl-schema-drop-and-create-create.jdbc"); try { Persistence.generateSchema("ddl-schema-template", properties); } catch (Exception exception) { fail("Exception caught when generating schema: " + exception.getMessage()); } } }
public static void main(String[] args) { Persistence.generateSchema("myunit", null); // New in JPA 2.1 /* Requires : <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/> <property name="javax.persistence.schema-generation.scripts.create-target" value="sampleCreate.ddl"/> <property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/> in persitence.xml */ // Persistence.createEntityManagerFactory("myunit") provoque aussi la génération des scripts // Persistence.createEntityManagerFactory("myunit"); }
/** * Test the generate schema feature from the Persistence API. * * <p>This test will then further use the PU and make sure the connection occurs and we can * persist objects. * * <p>All properties are set in code. */ public void testPersistenceGenerateSchemaNoConnection( String platform, String majorVersion, String minorVersion) { // Get platform call will deploy our app and be stored in our // testing framework. Need to clear it for this test. closeEntityManagerFactory(); String GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET = "jpa21-generate-schema-no-connection-drop-" + platform + ".jdbc"; String GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET = "jpa21-generate-schema-no-connection-create-" + platform + ".jdbc"; String GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME = "generate-schema-no-conn-session-" + platform; Map properties = new HashMap(); properties.put( PersistenceUnitProperties.SESSION_NAME, GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, true); properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_PRODUCT_NAME, platform); if (majorVersion != null) { properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_MAJOR_VERSION, majorVersion); } if (minorVersion != null) { properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_MINOR_VERSION, minorVersion); } properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET); Persistence.generateSchema(getPersistenceUnitName(), properties); // Now create an entity manager and build some objects for this PU using // the same session name. Create the schema on the database with the // target scripts built previously. testPersistenceGenerateSchemaOnDatabase( GENERATE_SCHEMA_NO_CONNECTION_CREATE_TARGET, GENERATE_SCHEMA_NO_CONNECTION_DROP_TARGET, GENERATE_SCHEMA_NO_CONNECTION_SESSION_NAME); }
/** Test the generate schema feature from the Persistence API. */ public void testPersistenceGenerateSchemaDropOnlyScript() { Map properties = new HashMap(); properties.put( PersistenceUnitProperties.SESSION_NAME, "generate-schema-no-conn-session-drop-only"); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, true); properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_PRODUCT_NAME, "MySQL"); properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_MAJOR_VERSION, "5"); properties.put(PersistenceUnitProperties.SCHEMA_DATABASE_MINOR_VERSION, "5"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, "jpa21-generate-schema-no-connection-drop-only.jdbc"); Persistence.generateSchema(getPersistenceUnitName(), properties); }
public void testRootTargetScriptFileName() { // This test is not called. It can be tested manually by uncommenting // it out in the suite setup. Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties(getPersistenceUnitName())); properties.put(PersistenceUnitProperties.SESSION_NAME, "testRootTargetScriptFileName"); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, "true"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, "/temp-generate-schema-drop.jdbc"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, "/temp-generate-schema-create.jdbc"); Persistence.generateSchema(getPersistenceUnitName(), properties); }
public void testDatabaseSchemaGenerationURLTargets() { // This test is not called. It can be tested manually by uncommenting // it out in the suite setup. Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties("ddl-schema-template")); properties.put(PersistenceUnitProperties.SESSION_NAME, "ddl-schema-url-target-session"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, "file:///jpa21-ddl-schema-url-target-create.jdbc"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, "file:///jpa21-ddl-schema-url-target-drop.jdbc"); try { Persistence.generateSchema("ddl-schema-template", properties); } catch (Exception exception) { fail("Exception caught when generating schema: " + exception.getMessage()); } }
public void testIllegalArgumentExceptionWithNoScriptTargetProvided() { Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties(getPersistenceUnitName())); properties.put( PersistenceUnitProperties.SESSION_NAME, "testIllegalArgumentExceptionWithNoScriptTargetsProvided"); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, "true"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_ACTION); try { Persistence.generateSchema(getPersistenceUnitName(), properties); } catch (PersistenceException exception) { assertTrue( "IllegalArgumentException not thrown", exception.getCause() instanceof IllegalArgumentException); return; } fail("Illegal Argument Exception was not thrown when a target script name not provided."); }
/** Test the generate schema feature from the Persistence API. */ public void testPersistenceGenerateSchemaUsingProvidedWriters() { Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties(getPersistenceUnitName())); properties.put( PersistenceUnitProperties.SESSION_NAME, "generate-schema-using-provided-writers"); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, "true"); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); try { properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_DROP_TARGET, new FileWriter(new File("jpa21-generate-schema-using-drop-writer.jdbc"))); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPTS_CREATE_TARGET, new FileWriter(new File("jpa21-generate-schema-using-create-writer.jdbc"))); Persistence.generateSchema(getPersistenceUnitName(), properties); } catch (IOException e) { fail("Error occurred: " + e); } }
public static void main(String[] args) { Persistence.generateSchema(deploy.DeploymentConfiguration.PU_NAME, null); }
public void testPersistenceGenerateSchemaOnDatabase( String createSource, String dropSource, String sessionName) { // Now create an entity manager and build some objects for this PU using // the same session name. Create the schema on the database with the // target scripts built previously. EntityManager em = null; try { Map properties = new HashMap(); // Get database properties will pick up test.properties database connection details. properties.putAll(JUnitTestCaseHelper.getDatabaseProperties(getPersistenceUnitName())); properties.put(PersistenceUnitProperties.SESSION_NAME, sessionName); properties.put(PersistenceUnitProperties.ORM_SCHEMA_VALIDATION, true); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_DATABASE_ACTION, PersistenceUnitProperties.SCHEMA_GENERATION_DROP_AND_CREATE_ACTION); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_SOURCE, PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPT_SOURCE); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_CREATE_SCRIPT_SOURCE, new FileReader(new File(createSource))); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_DROP_SOURCE, PersistenceUnitProperties.SCHEMA_GENERATION_SCRIPT_SOURCE); properties.put( PersistenceUnitProperties.SCHEMA_GENERATION_DROP_SCRIPT_SOURCE, new FileReader(new File(dropSource))); em = createEntityManager(properties); // If on the server, need to trigger the DDL through Persistence // API, createEntityManager call above will not do it. if (isOnServer()) { Persistence.generateSchema(this.getPersistenceUnitName(), properties); } beginTransaction(em); Runner runner = new Runner(); runner.setAge(53); runner.setIsFemale(); runner.setFirstName("Doris"); runner.setLastName("Day"); runner.addPersonalBest("10 KM", "47:34"); runner.addPersonalBest("5", "26:41"); runner.addAccomplishment("Ran 100KM without stopping", new Date(System.currentTimeMillis())); RunnerInfo runnerInfo = new RunnerInfo(); runnerInfo.setHealth(Health.H); runnerInfo.setLevel(Level.A); RunnerStatus runnerStatus = new RunnerStatus(); runnerStatus.setRunningStatus(RunningStatus.D); runnerInfo.setStatus(runnerStatus); runner.setInfo(runnerInfo); Race race = new Race(); race.setName("The Ultimate Marathon"); race.addRunner(runner); Organizer organizer = new Organizer(); organizer.setName("Joe Organ"); organizer.setRace(race); Responsibility responsibility = new Responsibility(); responsibility.setUniqueIdentifier(new Long(System.currentTimeMillis())); responsibility.setDescription("Raise funds"); race.addOrganizer(organizer, responsibility); em.persist(race); em.persist(organizer); em.persist(runner); commitTransaction(em); // Clear the cache em.clear(); clearCache(); Runner runnerRefreshed = em.find(Runner.class, runner.getId()); assertTrue("The age conversion did not work.", runnerRefreshed.getAge() == 52); assertTrue( "The embeddable health conversion did not work.", runnerRefreshed.getInfo().getHealth().equals(Health.HEALTHY)); assertTrue( "The embeddable level conversion did not work.", runnerRefreshed.getInfo().getLevel().equals(Level.AMATEUR)); assertTrue( "The nested embeddable running status conversion did not work.", runnerRefreshed.getInfo().getStatus().getRunningStatus().equals(RunningStatus.DOWN_TIME)); assertTrue( "The number of personal bests for this runner is incorrect.", runnerRefreshed.getPersonalBests().size() == 2); assertTrue( "Distance (map key) conversion did not work.", runnerRefreshed.getPersonalBests().keySet().contains("10K")); assertTrue( "Distance (map key) conversion did not work.", runnerRefreshed.getPersonalBests().keySet().contains("5K")); assertTrue( "Time (map value) conversion did not work.", runnerRefreshed.getPersonalBests().values().contains("47:34.0")); assertTrue( "Time (map value) conversion did not work.", runnerRefreshed.getPersonalBests().values().contains("26:41.0")); Race raceRefreshed = em.find(Race.class, race.getId()); Map<Responsibility, Organizer> organizers = raceRefreshed.getOrganizers(); assertFalse("No race organizers returned.", organizers.isEmpty()); assertTrue("More than one race organizer returned.", organizers.size() == 1); Responsibility resp = organizers.keySet().iterator().next(); assertTrue( "Responsibility was not uppercased by the converter", resp.getDescription().equals("RAISE FUNDS")); for (String accomplishment : runnerRefreshed.getAccomplishments().keySet()) { assertTrue( "Accomplishment (map key) conversion did not work.", accomplishment.endsWith("!!!")); } } catch (RuntimeException e) { if (isTransactionActive(em)) { rollbackTransaction(em); } throw e; } catch (FileNotFoundException e) { fail("Error loading source script file: " + e); } finally { closeEntityManager(em); } }