public void persistExample(Session session) {
   Vector allObjects = new Vector();
   UnitOfWork unitOfWork = session.acquireUnitOfWork();
   PopulationManager.getDefaultManager().addAllObjectsForClass(Person.class, allObjects);
   PopulationManager.getDefaultManager().addAllObjectsForClass(AAA.class, allObjects);
   PopulationManager.getDefaultManager().addAllObjectsForClass(Company.class, allObjects);
   PopulationManager.getDefaultManager().addAllObjectsForClass(Computer.class, allObjects);
   unitOfWork.registerAllObjects(allObjects);
   unitOfWork.commit();
 }
  public void populate(DatabaseSession session) {
    MapPopulator system = new MapPopulator();
    UnitOfWork unitOfWork = session.acquireUnitOfWork();

    system.buildExamples();
    Vector allObjects = new Vector();
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(EntityEntity1MMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(EntityDirectMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(EntityAggregateMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(DirectEntityU1MMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(DirectEntityMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(DirectEntity1MMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(DirectDirectMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(DirectAggregateMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(AggregateEntityU1MMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(AggregateEntityMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(AggregateEntity1MMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(AggregateDirectMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(AggregateAggregateMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(EntityEntityMapHolder.class, allObjects);
    PopulationManager.getDefaultManager()
        .addAllObjectsForClass(EntityEntityU1MMapHolder.class, allObjects);

    unitOfWork.registerAllObjects(allObjects);
    unitOfWork.commit();
  }
  public void persistExample(Session session) {
    Vector allObjects = new Vector();
    allObjects.add(example1());
    allObjects.add(example2());
    allObjects.add(example3());
    allObjects.add(example4());

    // Bug 387491 - Three JUnitJPQLDateTimeTestSuite tests fail with Oracle jdbc 12.1 driver
    // Starting with Oracle jdbc 12.1 Statement.setDate no longer truncates time component of
    // sql.Date.
    // The following code makes Oracle9Platform to do that by setting shouldTruncateDate flag to
    // "true".
    boolean hasSetTruncateDate = false;
    if (session.getPlatform().isOracle9()) {
      try {
        Class clazz =
            PrivilegedAccessHelper.getClassForName(
                "org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
        Method getDriverVersionMethod =
            PrivilegedAccessHelper.getMethod(clazz, "getDriverVersion", null, false);
        String driverVersion =
            (String)
                PrivilegedAccessHelper.invokeMethod(
                    getDriverVersionMethod, session.getPlatform(), null);
        if (Helper.compareVersions(driverVersion, "12.1") >= 0) {
          Method shouldTruncateDateMethod =
              PrivilegedAccessHelper.getMethod(clazz, "shouldTruncateDate", null, false);
          boolean shouldTruncateDate =
              (Boolean)
                  PrivilegedAccessHelper.invokeMethod(
                      shouldTruncateDateMethod, session.getPlatform(), null);
          if (!shouldTruncateDate) {
            Method setShouldTruncateDateMethod =
                PrivilegedAccessHelper.getMethod(
                    clazz, "setShouldTruncateDate", new Class[] {boolean.class}, false);
            PrivilegedAccessHelper.invokeMethod(
                setShouldTruncateDateMethod, session.getPlatform(), new Object[] {true});
            hasSetTruncateDate = true;
          }
        }
      } catch (Exception ex) {
        throw new RuntimeException("Failed oracle9Platform.setShouldTruncateDate(true)", ex);
      }
    }

    UnitOfWork unitOfWork = session.acquireUnitOfWork();
    unitOfWork.registerAllObjects(allObjects);
    unitOfWork.commit();

    if (hasSetTruncateDate) {
      // Now setting shouldTruncateDate flag back to its original value "false".
      try {
        Class clazz =
            PrivilegedAccessHelper.getClassForName(
                "org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
        Method setShouldTruncateDateMethod =
            PrivilegedAccessHelper.getMethod(
                clazz, "setShouldTruncateDate", new Class[] {boolean.class}, false);
        PrivilegedAccessHelper.invokeMethod(
            setShouldTruncateDateMethod, session.getPlatform(), new Object[] {false});
      } catch (Exception ex) {
        throw new RuntimeException("Failed oracle9Platform.setShouldTruncateDate(false)", ex);
      }
    }
  }