diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b50669149e80503bd336148430efad6a4625d8a3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/target
+.classpath
+.project
+.settings
+
diff --git a/src/main/java/dgpena/siexample/persistence/Department.java b/src/main/java/dgpena/siexample/persistence/Department.java
new file mode 100644
index 0000000000000000000000000000000000000000..b6883060ebc5edd650553db23b300b1934d64f35
--- /dev/null
+++ b/src/main/java/dgpena/siexample/persistence/Department.java
@@ -0,0 +1,28 @@
+package dgpena.siexample.persistence;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Department {
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.IDENTITY)
+ private int id;
+
+ private String name;
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000000000000000000000000000000000000..88d3e82f130d7aa07cec4a040a40611889b5a719
--- /dev/null
+++ b/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,26 @@
+
+
+ dgpena.siexample.persistence.Department
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/dgpena/siexample/persistence/DepartmentTest.java b/src/test/java/dgpena/siexample/persistence/DepartmentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..85bcf83f7decb74e741c712064259783d918f5b0
--- /dev/null
+++ b/src/test/java/dgpena/siexample/persistence/DepartmentTest.java
@@ -0,0 +1,63 @@
+package dgpena.siexample.persistence;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DepartmentTest extends SQLBasedTest {
+
+ private static EntityManagerFactory emf;
+
+ @BeforeClass
+ public static void setUpEntityManagerFactory() {
+ emf = Persistence.createEntityManagerFactory("si-database");
+ }
+
+ @Test
+ public void testCreateDepartment() throws Exception {
+ EntityManager em = emf.createEntityManager();
+
+ Department d = new Department();
+ d.setName("finanzas");
+
+ em.getTransaction().begin();
+ em.persist(d);
+ em.getTransaction().commit();
+
+ // check in the DB using JDBC
+ int deptId = d.getId();
+
+
+ Statement statement = jdbcConnection.createStatement();
+ ResultSet rs = statement.executeQuery("SELECT COUNT(*) as total FROM Department d where d.id = "+deptId);
+ rs.next();
+
+ assertEquals(1, rs.getInt("total"));
+ }
+
+ @Test
+ public void testFindDepartment() throws SQLException {
+ // insert a department previously with JDBC
+ Statement statement = jdbcConnection.createStatement();
+ statement.executeUpdate("INSERT INTO Department(name) values('finanzas')", Statement.RETURN_GENERATED_KEYS);
+ int deptId = getLastInsertedId(statement);
+
+
+ EntityManager em = emf.createEntityManager();
+
+ Department d = em.find(Department.class, deptId);
+
+ assertEquals(deptId, d.getId());
+ assertEquals("finanzas", d.getName());
+
+ }
+}
diff --git a/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java b/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a23b4000fc16df81caad14843d39b0aac0bd99c0
--- /dev/null
+++ b/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java
@@ -0,0 +1,32 @@
+package dgpena.siexample.persistence;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class SQLBasedTest {
+
+ private static final String DB_URL = "jdbc:mysql://localhost:3306/si";
+ private static final String DB_USER = "siuser";
+ private static final String DB_PASS = "sipass";
+ protected static Connection jdbcConnection = createConnection();
+
+ private static Connection createConnection() {
+ try {
+ Class.forName("com.mysql.jdbc.Driver");
+ return DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
+ } catch(Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ protected int getLastInsertedId(Statement statement) throws SQLException {
+ ResultSet rs = statement.getGeneratedKeys();
+ rs.next();
+
+ return rs.getInt(1);
+ }
+}
diff --git a/src/test/resources/META-INF/persistence.xml b/src/test/resources/META-INF/persistence.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81cb567a78c59605e7eb8cadb1f9b5a619aa7e4c
--- /dev/null
+++ b/src/test/resources/META-INF/persistence.xml
@@ -0,0 +1,25 @@
+
+
+ dgpena.siexample.persistence.Department
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+