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 + + + + + + + + + + + + + + + + + +