diff --git a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/Rdbms2Xml.java b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/Rdbms2Xml.java
index 052b0e9261c5ee81e9a27911cbe69214260cf149..fc40375ebf62e313d621a15057aecbc76fa939b7 100644
--- a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/Rdbms2Xml.java
+++ b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/Rdbms2Xml.java
@@ -1,9 +1,6 @@
 package de.hdm_stuttgart.mi.sda1.sql2catalog;
 
 import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
 
 import javax.xml.parsers.ParserConfigurationException;
 
@@ -13,7 +10,8 @@ import org.jdom2.output.XMLOutputter;
 import org.xml.sax.SAXException;
 
 /**
- * A simple SAX parser demo
+ * Dumping RDBMS catalog data
+ * to XML.
  * 
  */
 public class Rdbms2Xml {
@@ -28,47 +26,11 @@ public class Rdbms2Xml {
    public static void main(String[] args) throws ParserConfigurationException,
          SAXException, IOException {
 
-
-      
-      // Register Driver
-      final String sqlDriverClassName = Messages.getString("Xml2Rdbms.jdbcDriverName"); 
-      try {
-         Class.forName(sqlDriverClassName);
-      } catch (ClassNotFoundException e) {
-         Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableRegisterDriverClass") + sqlDriverClassName + "'", 1);
-      }
-
-
-      // Opening a JDBC connection
-      // 
-      Connection conn = null;
-      
-      final String jdbcConnectionUrl = Messages.getString("Xml2Rdbms.jdbcUrl"); 
-      final String userName = Messages.getString("Xml2Rdbms.jdbcUser"); 
-      try {
-         conn = DriverManager.getConnection(jdbcConnectionUrl, userName, Messages.getString("Xml2Rdbms.jdbcPasswd")); 
-      } catch (SQLException e) {
-         Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableToConnect") + userName + "' to '" + 
-               jdbcConnectionUrl + "'", 1); 
-      }
-      
-      RdbmsAccess rdbmsAccess = null;
-      try {
-         rdbmsAccess = new RdbmsAccess(conn);
-      } catch (SQLException e) {
-         Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableInitDataInsert"), 1); 
-      }
-      
       final Element catalogElement = new Element("catalog");
-      try {
-         rdbmsAccess.appendProducts(catalogElement);
-      } catch (SQLException e) {
-         Helper.exitWithErrorMessage("Unable to read database:" + e.getLocalizedMessage(), 1);
-      }
+      new RdbmsAccess().appendProducts(catalogElement);
       
       // Write XML content to standard output
       XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
       outputter.output(catalogElement, System.out);
    }
-   
 }
diff --git a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/RdbmsAccess.java b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/RdbmsAccess.java
index d13fc1070fc39906b9af984eb3be977bd7248bfd..4852ef1fd16302823e633464a2dad821449aa5ce 100644
--- a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/RdbmsAccess.java
+++ b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/RdbmsAccess.java
@@ -1,63 +1,62 @@
 package de.hdm_stuttgart.mi.sda1.sql2catalog;
 
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
 
 import org.jdom2.Element;
 
+import de.hdm_stuttgart.mi.sda1.sql2catalog.model.Description;
+import de.hdm_stuttgart.mi.sda1.sql2catalog.model.Product;
+
 /**
  * Reading product data
  *
  */
 public class RdbmsAccess {
-	
-	final PreparedStatement selectProduct, selectDescription;
-
-	/**
-	 * @param conn Destination RDBMS
-	 * @throws SQLException 
-	 */
-	public RdbmsAccess(final Connection conn) throws SQLException {
-	   conn.setAutoCommit(false);
-	   selectProduct = conn.prepareStatement("SELECT * FROM Product");
-	   selectDescription = conn.prepareStatement("SELECT * FROM Description WHERE product = ? ORDER BY orderIndex");
+
+	static final EntityManager em;
+
+	static {
+		final EntityManagerFactory emFactory =  Persistence.createEntityManagerFactory("none");
+		em = emFactory.createEntityManager();
 	}
-	
-	public void appendProducts(final Element root) throws SQLException {
-	   final ResultSet products = selectProduct.executeQuery();
-	   
-	   while (products.next()) {
-	      final int productId = products.getInt("id");
-	      final Element productElement = new Element("product");
-	      root.addContent(productElement);
-	      productElement.setAttribute("id", "" + productId);
-	      
-	      final Element nameElement = new Element("name");
-	      productElement.addContent(nameElement);
-	      nameElement.addContent(products.getString("name"));
-	      
-         addDescriptions(productId, productElement);
-
-         final int productAge = products.getInt("age");
-	      if (!products.wasNull()) {
-	         final Element ageElement = new Element("age");
-	         productElement.addContent(ageElement);
-	         ageElement.addContent("" + productAge);
-	      }
-	   }
-      products.close();
+
+	public void appendProducts(final Element root) {
+		final EntityTransaction transaction = em.getTransaction();
+        transaction.begin();
+
+		for (final Product p: em.createQuery("SELECT p FROM Product p", Product.class).getResultList()) {
+
+			final Element productElement = new Element("product");
+			root.addContent(productElement);
+			productElement.setAttribute("id", "" + p.getId());
+
+			final Element nameElement = new Element("name");
+			productElement.addContent(nameElement);
+			nameElement.addContent(p.getName());
+
+			addDescriptions(p.getDescriptions(), productElement);
+
+			final Integer productAge = p.getAge();
+			if (null != productAge) {
+				final Element ageElement = new Element("age");
+				productElement.addContent(ageElement);
+				ageElement.addContent(productAge.toString());
+			}
+		}
+		transaction.commit();
 	}
-	
-	private void addDescriptions(final int productId, final Element productElement) throws SQLException {
-	   selectDescription.setInt(1, productId);
-	   final ResultSet descriptions = selectDescription.executeQuery();
-	   while (descriptions.next()) {
-	      final Element descriptionElement = new Element("description");
-	      productElement.addContent(descriptionElement);
-	      descriptionElement.addContent(descriptions.getString("text"));
-	   }
-	   descriptions.close();
+
+	private void addDescriptions(final List<Description> desccriptions, final Element productElement) {
+
+		for(Description d: desccriptions) {
+			final Element descriptionElement = new Element("description");
+			productElement.addContent(descriptionElement);
+			descriptionElement.addContent(d.getText());
+		}
 	}
-}
+}
\ No newline at end of file
diff --git a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Description.java b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Description.java
index 48d24a54682d6f6e37087acac8817635327cdfdf..05a778664cc4f42c4178815086ee6888f470a003 100644
--- a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Description.java
+++ b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Description.java
@@ -2,26 +2,35 @@ package de.hdm_stuttgart.mi.sda1.sql2catalog.model;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
 
-
+@Table(
+	    uniqueConstraints=
+	        @UniqueConstraint(columnNames={"product", "orderIndex"})
+	)
 @Entity
 public class Description {
 
 	@Id
+	@GeneratedValue
 	Long id;
 	
 	protected Description(){}
 
-	protected Description (final Product product, final int orderIndex, final String text) {
+	public Description (final Product product, final int orderIndex, final String text) {
 		this.product = product;
 		this.orderIndex = orderIndex;
 		this.text = text;
+		product.descriptions.add(this);
 	}
 
 	@ManyToOne
-	@Column(nullable=false)
+	@JoinColumn(name="product")
 	Product product;
 
 	int orderIndex;
diff --git a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Product.java b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Product.java
index ee5386c8805f027587efe736b82c672e2922a2dc..90f2eaa30788fe6e876eb126c3e3a48b75a81067 100644
--- a/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Product.java
+++ b/P/Sda1/rdbms2catalogJpa/src/main/java/de/hdm_stuttgart/mi/sda1/sql2catalog/model/Product.java
@@ -1,7 +1,9 @@
 package de.hdm_stuttgart.mi.sda1.sql2catalog.model;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
@@ -9,17 +11,50 @@ import javax.persistence.OneToMany;
 
 @Entity
 public class Product {
-   
-   @Id
-   int id;
-   
-   @Column(nullable=false)
-   String name;
-   
-   int age;
-   
-   @OneToMany(mappedBy = "product")
-   List<Description> descriptions;
-   
-   
+
+	protected Product() {}
+
+	public Product(final int id, final String name, final Integer age) {
+		setId(id);
+		setName(name);
+		setAge(age);
+	}
+
+	@Id
+	int id;
+
+	@Column(nullable = false)
+	String name;
+
+	Integer age;
+
+	@OneToMany(mappedBy = "product", cascade=CascadeType.ALL)
+	List<Description> descriptions = new ArrayList<Description>();
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Integer getAge() {
+		return age;
+	}
+
+	public void setAge(Integer age) {
+		this.age = age;
+	}
+	public List<Description> getDescriptions() {
+		return descriptions;
+	}
 }
diff --git a/P/Sda1/rdbms2catalogJpa/src/main/resources/META-INF/persistence.xml b/P/Sda1/rdbms2catalogJpa/src/main/resources/META-INF/persistence.xml
index 2e8b4a41c27055cc252c64480580fa1b736c0edf..6431ae651f354c8aa4a60111410b54cebf59992b 100644
--- a/P/Sda1/rdbms2catalogJpa/src/main/resources/META-INF/persistence.xml
+++ b/P/Sda1/rdbms2catalogJpa/src/main/resources/META-INF/persistence.xml
@@ -4,20 +4,20 @@
 	http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
 	version="2.1">
 
-	<persistence-unit name="jpa-update" transaction-type="RESOURCE_LOCAL">
+	<persistence-unit name="create-drop" transaction-type="RESOURCE_LOCAL">
 		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
-
+		
 		<properties>
 			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/hdm" />
 			<property name="javax.persistence.jdbc.user" value="hdmuser" />
 			<property name="javax.persistence.jdbc.password" value="XYZ" />
 			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
-
+			
 			<property name="hibernate.show_sql" value="true" />
 			<property name="hibernate.format_sql" value="true" />
 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
-			<property name="hibernate.hbm2ddl.auto" value="update" />
-
+			<property name="hibernate.hbm2ddl.auto" value="create-drop" />
+			
 			<!-- Configuring Connection Pool -->
 			
 			<property name="hibernate.c3p0.min_size" value="5" />
@@ -25,8 +25,33 @@
 			<property name="hibernate.c3p0.timeout" value="500" />
 			<property name="hibernate.c3p0.max_statements" value="50" />
 			<property name="hibernate.c3p0.idle_test_period" value="2000" />
+			
+		</properties>
+	</persistence-unit>
 	
+	<persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
+		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+		
+		<properties>
+			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/hdm" />
+			<property name="javax.persistence.jdbc.user" value="hdmuser" />
+			<property name="javax.persistence.jdbc.password" value="XYZ" />
+			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
+			
+			<property name="hibernate.show_sql" value="true" />
+			<property name="hibernate.format_sql" value="true" />
+			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
+			<property name="hibernate.hbm2ddl.auto" value="none" />
+			
+			<!-- Configuring Connection Pool -->
+			
+			<property name="hibernate.c3p0.min_size" value="5" />
+			<property name="hibernate.c3p0.max_size" value="20" />
+			<property name="hibernate.c3p0.timeout" value="500" />
+			<property name="hibernate.c3p0.max_statements" value="50" />
+			<property name="hibernate.c3p0.idle_test_period" value="2000" />
+			
 		</properties>
 	</persistence-unit>
-
+	
 </persistence>
\ No newline at end of file
diff --git a/P/Sda1/rdbms2catalogJpa/src/test/java/rdbms2catalog/TestSchema.java b/P/Sda1/rdbms2catalogJpa/src/test/java/rdbms2catalog/TestSchema.java
new file mode 100644
index 0000000000000000000000000000000000000000..896f0d3cf8345e441c216bd5137971839b11c780
--- /dev/null
+++ b/P/Sda1/rdbms2catalogJpa/src/test/java/rdbms2catalog/TestSchema.java
@@ -0,0 +1,43 @@
+package rdbms2catalog;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+
+import org.junit.Test;
+
+import de.hdm_stuttgart.mi.sda1.sql2catalog.model.Description;
+import de.hdm_stuttgart.mi.sda1.sql2catalog.model.Product;
+
+public class TestSchema {
+	
+    static final EntityManager em;
+
+    static {
+	    final EntityManagerFactory emFactory =  Persistence.createEntityManagerFactory("create-drop");
+	    em = emFactory.createEntityManager();
+	}
+
+	@Test
+	public void insertData() {
+		{
+	          final EntityTransaction transaction = em.getTransaction();
+	          transaction.begin();
+	          
+	          final Product monkeyPickedTea = new Product(1, "Monkey Picked Tea", null);
+	          new Description(monkeyPickedTea, 0, "Picked only by specially trained monkeys");
+	          new Description(monkeyPickedTea, 1, "Rare wild Chinese tea");
+	          
+	          final Product instantTent = new Product(2, "4-Person Instant Tent", 15);
+	          new Description(instantTent, 0, "Exclusive WeatherTec system.");
+	          new Description(instantTent, 1, "4-person, 1-compartment tent");
+	          new Description(instantTent, 2, "Pre-attached tent poles");
+	          
+	          em.persist(monkeyPickedTea);
+	          em.persist(instantTent);
+	          
+	          transaction.commit();
+	    }
+	}
+}
\ No newline at end of file