diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/pom.xml b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/pom.xml index 3c9b41310a188c8ada7947faf6787ad3eef4f967..71ce95b0aefbb1a152cd71d38227a529a2d514e8 100644 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/pom.xml +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/pom.xml @@ -1,10 +1,32 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>de.hdm-stuttgart.mi</groupId> - <artifactId>mi-maven-archetype-jpa-hibernate</artifactId> + <artifactId>mi-maven-archetype-jpa-hibernate-archetype</artifactId> <version>1.1</version> - <packaging>jar</packaging> + <packaging>maven-archetype</packaging> + <name>mi-maven-archetype-jpa-hibernate-archetype</name> + + <build> + <extensions> + <extension> + <groupId>org.apache.maven.archetype</groupId> + <artifactId>archetype-packaging</artifactId> + <version>2.4</version> + </extension> + </extensions> + + <pluginManagement> + <plugins> + <plugin> + <artifactId>maven-archetype-plugin</artifactId> + <version>2.4</version> + </plugin> + </plugins> + </pluginManagement> + </build> + + <url>http://www.mi.hdm-stuttgart.de/freedocs/topic/de.hdm_stuttgart.mi.lectures/sd1SectUsingMaven.html</url> </project> diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/META-INF/maven/archetype-metadata.xml b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/META-INF/maven/archetype-metadata.xml index 6948a180417d33dca84a9bb9b26bb5f11f4eb766..cb3fd2115f4fedc2a474a652ab507c39cac285e1 100644 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/META-INF/maven/archetype-metadata.xml +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="def" +<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="mi-maven-archetype-jpa-hibernate" xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <fileSets> @@ -15,14 +15,14 @@ <include>**/*.xml</include> </includes> </fileSet> - <fileSet filtered="true" packaged="true" encoding="UTF-8"> + <fileSet filtered="true" encoding="UTF-8"> <directory>src/test/java</directory> <includes> <include>**/*.java</include> </includes> </fileSet> - <fileSet filtered="false" packaged="false" encoding="UTF-8"> - <directory/> + <fileSet encoding="UTF-8"> + <directory></directory> <includes> <include>.gitignore</include> </includes> diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateUniversity.java b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateEntity.java similarity index 54% rename from ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateUniversity.java rename to ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateEntity.java index acc728420a5a1e901a4eb88a618172d71d12b771..2c33b5394fdd8aea454d8f9038a9174a40f382ca 100644 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateUniversity.java +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/CreateEntity.java @@ -1,20 +1,19 @@ -package $package; +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) +package ${package}; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -/** - * Basic demo showing entity creation - */ -public class CreateUniversity { +import ${package}.model.Airline; - /** - * This requires a corresponding entry <persistence-unit name="universityPU"> - * in META-INF/persistence.xml. - * Do not forget to modify the package name in MITA-INF/persistence.xml accordingly. - */ - static public final String PERSISTENCE_UNIT_NAME = "universityPU"; +public class CreateEntity { + + // This requires a corresponding entry <persistence-unit name="entitytemplatePU"> + // in META-INF/persistence.xml + static public final String PERSISTENCE_UNIT_NAME = "entitytemplatePU"; /** * @param args Unused */ @@ -24,7 +23,7 @@ public class CreateUniversity { final EntityManager em = factory.createEntityManager(); em.getTransaction().begin(); - final University lh = new University("University of applied sciences"); + final Airline lh = new Airline("Lufthansa", "DLH"); em.persist(lh); em.getTransaction().commit(); diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/University.java b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/University.java deleted file mode 100644 index 8ad6df072fa39b32dca3629d5b6a5d6fd1571b19..0000000000000000000000000000000000000000 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/University.java +++ /dev/null @@ -1,29 +0,0 @@ -package $package; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - -/** - * University model example. - * - */ -@Entity -public class University { - @Id - @GeneratedValue(strategy=GenerationType.IDENTITY) - Long id; - - String name; - public String getName() { return name;} - public void setName(String name) {this.name = name;} - - /** - * @param name The official name. - */ - public University(final String name) { - this.name = name; - } - protected University(){} -} diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/model/Airline.java b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/model/Airline.java new file mode 100644 index 0000000000000000000000000000000000000000..c2ea4e5f510d7812bad4004bf3bfed7c6626176c --- /dev/null +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/java/model/Airline.java @@ -0,0 +1,33 @@ +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) +package ${package}.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Airline { + @Id + @GeneratedValue (strategy=GenerationType.IDENTITY) + Long id; + String name; + String icaoCode; + + public Airline(final String name, final String icaoCode) { + this.name = name; + this.icaoCode = icaoCode; + } + protected Airline(){} + public Long getId() { + return id; + } + public String getName() { + return name; + } + public String getIcaoCode() { + return icaoCode; + } +} diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml index 3ab4d19d9b7a39a8aeb88d613e68f2b210d8793a..0294fbf9a688927c000996e954d577bfc619528e 100644 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml @@ -1,26 +1,32 @@ +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence - http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/persistence_2_1.xsd"> + http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <!-- The <code>persistence.xml</code> file configures at least one persistence unit; each unit must have a unique name. --> - <persistence-unit name="universityPU"> + <persistence-unit name="entitytemplatePU"> <!-- - A persistent unit has persistent (mapped) classes, you list them here. + Hibernate will scan your classpath for mapped classes and add them automatically + to your persistence unit. + <exclude-unlisted-classes>false</exclude-unlisted-classes> --> - <class>REPLACE_PACKAGE_NAME.University</class> + <exclude-unlisted-classes>false</exclude-unlisted-classes> <!-- - Hibernate can scan your classpath for mapped classes and add them automatically - to your persistence unit. This setting disables that feature. + Disabling the previous option "exclude-unlisted-classes" requires entity classes to + be listed explicitely. You may want to uncomment the following definition. + + <class>${package}.Airline</class> --> - <exclude-unlisted-classes>true</exclude-unlisted-classes> <!-- Standard or vendor-specific options can be set as properties on a persistence unit. @@ -52,9 +58,9 @@ <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> - <!-- Disable Hibernate scanning completely, we also don't want any hbm.xml files - discovered and added automatically. --> - <property name="hibernate.archive.autodetection" value="none"/> + <!-- Enable Hibernate scanning for entity classes and adding them automatically + but not for hbm.xml files. --> + <property name="hibernate.archive.autodetection" value="class"/> </properties> </persistence-unit> diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/log4j2.xml b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/log4j2.xml index 5959c70eac27969a2cb6750459e5f0af91285039..256fe35c11bad0ce1485d663e003a47ad3e61455 100644 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/log4j2.xml +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/main/resources/log4j2.xml @@ -11,7 +11,7 @@ <Loggers> <!-- You my want to define class or package level per-logger rules --> - <Logger name="${package}.App" level="debug"> + <Logger name="de.hdm_stuttgart.mi.sda2.q.App" level="debug"> <AppenderRef ref="A1"/> </Logger> <Root level="info"> diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/AppTest.java b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/AppTest.java deleted file mode 100644 index e158e33c7d5ba5cec1f55aade2ee49fbf16747ec..0000000000000000000000000000000000000000 --- a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/AppTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package $package; - -import org.junit.Assert; -import org.junit.Test; - -/** - * Unit test for simple App. - */ -public class AppTest { - /** - * Dummy test method - */ - @Test - public void testApp() { - Assert.assertTrue( true ); - } -} diff --git a/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/EntityTest.java b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/EntityTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6ef1849c6110efd676d993f209ee488fc582f6fb --- /dev/null +++ b/ws/Archetypes/mi-maven-archetype-jpa-hibernate/src/main/resources/archetype-resources/src/test/java/EntityTest.java @@ -0,0 +1,51 @@ +#set( $symbol_pound = '#' ) +#set( $symbol_dollar = '$' ) +#set( $symbol_escape = '\' ) +package ${package}; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import org.junit.Assert; +import org.junit.Test; + +import ${package}.model.Airline; + +/** + * Creating a database entity and testing successful reload by primary key + */ +public class EntityTest { + /** + * Dummy test method + */ + @Test + public void testApp() { + final EntityManagerFactory factory = Persistence.createEntityManagerFactory(CreateEntity.PERSISTENCE_UNIT_NAME); + final EntityManager em = factory.createEntityManager(); + + Long id; + + final String airlineName = "Lufthansa", + icaoCode = "DLH"; + em.getTransaction().begin(); // Creating and storing an entity + { + final Airline lh = new Airline(airlineName, icaoCode); + + em.persist(lh); + id = lh.getId(); + } + em.getTransaction().commit(); + + em.getTransaction().begin(); // Reloading the entity by its primary key + { + final Airline readLh = em.find(Airline.class, id); + Assert.assertEquals(airlineName, readLh.getName()); + Assert.assertEquals(icaoCode, readLh.getIcaoCode()); + } + em.getTransaction().commit(); + + em.close(); + factory.close(); + } +}