<html>
<head>
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="Thomas Dudziak">
</head>
<body bgcolor="white">
  <p>
  	Provides the special DdlUtils implementations of {@link org.apache.commons.beanutils.DynaClass}
  	and {@link org.apache.commons.beanutils.DynaBean} that directly map to tables in the database
  	model. These are used by DdlUtils when reading data from or writing data to the database.
  	If you want to create these beans manually, use the
  	{@link org.apache.ddlutils.model.Database#createDynaBeanFor(org.apache.ddlutils.model.Table)} and
  	{@link org.apache.ddlutils.model.Database#createDynaBeanFor(java.lang.String, boolean)} methods
  	rather than the classes directly.
  </p>
</body>
</html>
