Author: dan.j.allen
Date: 2010-08-20 17:10:11 -0400 (Fri, 20 Aug 2010)
New Revision: 6998
Added:
archetypes/javaee6-webapp/trunk/src/main/java/com/mycompany/SeedDataImporter.java
Log:
add portable seed data importer
Added: archetypes/javaee6-webapp/trunk/src/main/java/com/mycompany/SeedDataImporter.java
===================================================================
--- archetypes/javaee6-webapp/trunk/src/main/java/com/mycompany/SeedDataImporter.java
(rev 0)
+++
archetypes/javaee6-webapp/trunk/src/main/java/com/mycompany/SeedDataImporter.java 2010-08-20
21:10:11 UTC (rev 6998)
@@ -0,0 +1,60 @@
+package com.mycompany;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.TransactionRequiredException;
+import javax.transaction.UserTransaction;
+import org.slf4j.Logger;
+
+/**
+ * Import seed data into the database on application startup using
+ * a startup singleton EJB.
+ *
+ * @author Dan Allen
+ */
+@Startup
+@Singleton
+public class SeedDataImporter
+{
+ @Inject
+ private Logger log;
+
+ @Inject
+ @MemberRepository
+ private EntityManager em;
+
+ @Inject
+ private UserTransaction tx;
+
+ @PostConstruct
+ public void importData()
+ {
+ Member member1 = new Member();
+ member1.setName("John Smith");
+ member1.setEmail("john.smith(a)mailinator.com");
+ member1.setPhoneNumber("2125551212");
+ try
+ {
+ try
+ {
+ em.persist(member1);
+ }
+ catch (TransactionRequiredException e)
+ {
+ // manual transaction control required in @PostConstruct method
+ // only use if enforced by JPA provider (due to bug in GlassFish)
+ tx.begin();
+ em.persist(member1);
+ tx.commit();
+ }
+ log.info("Successfully imported seed data.");
+ }
+ catch (Exception e)
+ {
+ log.warn("Seed data import failed.", e);
+ }
+ }
+}
Show replies by thread