Index: trunk/fmgVen/test/com/fmguler/ven/sample/Sample.java
===================================================================
--- trunk/fmgVen/test/com/fmguler/ven/sample/Sample.java	(revision 27)
+++ trunk/fmgVen/test/com/fmguler/ven/sample/Sample.java	(revision 28)
@@ -18,18 +18,12 @@
 package com.fmguler.ven.sample;
 
+import com.fmguler.ven.LiquibaseUtil;
 import com.fmguler.ven.Ven;
+import com.fmguler.ven.sample.domain.AnotherDomainObject;
 import com.fmguler.ven.sample.domain.SomeDomainObject;
-import java.sql.SQLException;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
-import javax.sql.DataSource;
-import liquibase.FileSystemFileOpener;
-import liquibase.exception.JDBCException;
-import liquibase.exception.LiquibaseException;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import liquibase.Liquibase;
-import liquibase.database.Database;
-import liquibase.database.DatabaseFactory;
+import java.util.Set;
 
 /**
@@ -40,13 +34,15 @@
     public static void main(String[] args) {
         //build the sample database
-        buildDatabase();
+        LiquibaseUtil.buildDatabase();
 
         //save an object
         testSave();
+        //get an object
+        testGet();
         //delete an object
         testDelete();
 
         //rollback the sample database to original state
-        rollbackDatabase();
+        LiquibaseUtil.rollbackDatabase("tag-init");
     }
 
@@ -76,5 +72,5 @@
     public static void testDelete() {
         Ven ven = getVen();
-        ven.delete(1, SomeDomainObject.class);
+        ven.delete(2, SomeDomainObject.class);
     }
 
@@ -84,6 +80,16 @@
     public static void testGet() {
         Ven ven = getVen();
-        SomeDomainObject obj = (SomeDomainObject)ven.get(1, SomeDomainObject.class);
+
+        //get with includes
+        Set joins = new HashSet();
+        joins.add("SomeDomainObject.anotherDomainObjects");
+        joins.add("SomeDomainObject.anotherDomainObject");
+        SomeDomainObject obj = (SomeDomainObject)ven.get(1, SomeDomainObject.class, joins);
         System.out.println(obj);
+
+        Set joins2 = new HashSet();
+        joins2.add("AnotherDomainObject.someDomainObject");
+        AnotherDomainObject obj2 = (AnotherDomainObject)ven.get(1, AnotherDomainObject.class, joins2);
+        System.out.println(obj2);
     }
 
@@ -109,50 +115,7 @@
     private static Ven getVen() {
         Ven ven = new Ven();
-        ven.setDataSource(getDataSource());
+        ven.setDataSource(LiquibaseUtil.getDataSource());
         ven.addDomainPackage("com.fmguler.ven.sample.domain").addDomainPackage("another.package");
         return ven;
     }
-
-    private static DataSource getDataSource() {
-        DriverManagerDataSource ds = new DriverManagerDataSource();
-        ds.setDriverClassName("org.postgresql.Driver");
-        ds.setUsername("postgres");
-        ds.setPassword("qwerty");
-        ds.setUrl("jdbc:postgresql://127.0.0.1:5432/ven-test");
-        return ds;
-    }
-
-    private static void buildDatabase() {
-        try {
-            Locale currLocale = Locale.getDefault();
-            Locale.setDefault(Locale.ENGLISH);
-            Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(getDataSource().getConnection());
-            Liquibase liquibase = new Liquibase("etc/test-db/test-db-changelog.xml", new FileSystemFileOpener(), database);
-            liquibase.update("");
-            Locale.setDefault(currLocale);
-        } catch (SQLException ex) {
-            ex.printStackTrace();
-        } catch (JDBCException ex) {
-            ex.printStackTrace();
-        } catch (LiquibaseException ex) {
-            ex.printStackTrace();
-        }
-    }
-
-    private static void rollbackDatabase() {
-        try {
-            Locale currLocale = Locale.getDefault();
-            Locale.setDefault(Locale.ENGLISH);
-            Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(getDataSource().getConnection());
-            Liquibase liquibase = new Liquibase("etc/test-db/test-db-changelog.xml", new FileSystemFileOpener(), database);
-            liquibase.rollback("tag-single-table", "");
-            Locale.setDefault(currLocale);
-        } catch (SQLException ex) {
-            ex.printStackTrace();
-        } catch (JDBCException ex) {
-            ex.printStackTrace();
-        } catch (LiquibaseException ex) {
-            ex.printStackTrace();
-        }
-    }
 }
Index: trunk/fmgVen/test/com/fmguler/ven/sample/domain/AnotherDomainObject.java
===================================================================
--- trunk/fmgVen/test/com/fmguler/ven/sample/domain/AnotherDomainObject.java	(revision 28)
+++ trunk/fmgVen/test/com/fmguler/ven/sample/domain/AnotherDomainObject.java	(revision 28)
@@ -0,0 +1,106 @@
+/*
+ *  fmgVen - A Convention over Configuration Java ORM Tool
+ *  Copyright 2011 Fatih Mehmet Güler
+ * 
+ *  Licensed 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.
+ *  under the License.
+ */
+package com.fmguler.ven.sample.domain;
+
+import java.util.Date;
+
+/**
+ *
+ * @author Fatih Mehmet Güler
+ */
+public class AnotherDomainObject {
+    private Integer id;
+    private String name;
+    private String description;
+    private Date date;
+    private SomeDomainObject someDomainObject;
+
+    /**
+     * @return the id
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * @param id the id to set
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return the description
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * @param description the description to set
+     */
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * @return the date
+     */
+    public Date getDate() {
+        return date;
+    }
+
+    /**
+     * @param date the date to set
+     */
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    /**
+     * @return the someDomainObject
+     */
+    public SomeDomainObject getSomeDomainObject() {
+        return someDomainObject;
+    }
+
+    /**
+     * @param someDomainObject the someDomainObject to set
+     */
+    public void setSomeDomainObject(SomeDomainObject someDomainObject) {
+        this.someDomainObject = someDomainObject;
+    }
+
+    public String toString() {
+        return id + " " + name + " " + description + " some domain object: {" + someDomainObject + "}";
+    }
+}
Index: trunk/fmgVen/test/com/fmguler/ven/sample/domain/SomeDomainObject.java
===================================================================
--- trunk/fmgVen/test/com/fmguler/ven/sample/domain/SomeDomainObject.java	(revision 27)
+++ trunk/fmgVen/test/com/fmguler/ven/sample/domain/SomeDomainObject.java	(revision 28)
@@ -18,5 +18,7 @@
 package com.fmguler.ven.sample.domain;
 
+import com.fmguler.ven.util.VenList;
 import java.util.Date;
+import java.util.List;
 
 /**
@@ -29,4 +31,6 @@
     private String description;
     private Date date;
+    private List anotherDomainObjects = new VenList(AnotherDomainObject.class, "someDomainObject");
+    private AnotherDomainObject anotherDomainObject = new AnotherDomainObject();
 
     /**
@@ -86,6 +90,27 @@
     }
 
+    /**
+     * @return the list of AnotherDomainObject
+     */
+    public List getAnotherDomainObjects() {
+        return anotherDomainObjects;
+    }
+
+    /**
+     * @return the anotherDomainObject
+     */
+    public AnotherDomainObject getAnotherDomainObject() {
+        return anotherDomainObject;
+    }
+
+    /**
+     * @param anotherDomainObject the anotherDomainObject to set
+     */
+    public void setAnotherDomainObject(AnotherDomainObject anotherDomainObject) {
+        this.anotherDomainObject = anotherDomainObject;
+    }
+
     public String toString() {
-        return id + " " + name + " " + description + " " + date;
+        return id + " " + name + " " + description + " another domain object: {" + anotherDomainObject + "} another domain objects:\n" + anotherDomainObjects;
     }
 }
