From 24424bf48cf5e3ea6d6b93837743f74941dfb20b Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Mon, 11 Apr 2016 21:03:46 +0200
Subject: [PATCH] Maven archetype corrected, constructor will be protected

---
 Doc/Sda2/jpa.xml                              | 343 +++++++++++-------
 .../META-INF/maven/archetype-metadata.xml     |   4 +-
 .../main/resources/META-INF/persistence.xml   |   5 +-
 .../src/main/java/hibintro/v1/User.java       |   3 +-
 .../src/main/java/hibintro/v2/User.java       |   6 +-
 .../src/main/java/hibintro/v3/User.java       |  30 +-
 .../src/main/java/hibintro/v4/User.java       |  21 +-
 .../src/main/java/hibintro/v5/User.java       |  34 +-
 .../src/main/java/hibintro/v7/User.java       |  25 +-
 .../src/main/java/hibintro/v8/User.java       |  24 +-
 10 files changed, 263 insertions(+), 232 deletions(-)

diff --git a/Doc/Sda2/jpa.xml b/Doc/Sda2/jpa.xml
index 90608edc6..6d7c532f6 100644
--- a/Doc/Sda2/jpa.xml
+++ b/Doc/Sda2/jpa.xml
@@ -133,8 +133,9 @@
         </listitem>
       </orderedlist>
 
-      <para> But wait: We are about to work with (Mysql) databases. Thus we
-      need at least a <trademark
+      <para> But wait: We are about to work with (<xref
+      linkend="glo_Soft_Mysql"/>) databases. Thus we need at least a
+      <trademark
       xlink:href="http://www.oracle.com/technetwork/java/javase/jdbc">JDBC</trademark>
       driver. Maven assists us if we define an appropriate dependency as we
       will see in the following section.</para>
@@ -257,6 +258,11 @@
   &lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
   &lt;version&gt;5.1.0.Final&lt;/version&gt;
 &lt;/dependency&gt;</programlisting>
+
+      <para>The MI department provides a dedicated archetype
+      <quote>mi-maven-archetype-jpa-hibernate</quote>. See <xref
+      linkend="sd1SectUsingMavenEclipse"/> for archetype repository
+      configuration.</para>
     </section>
 
     <section xml:id="sect_createHibernateConfiguration">
@@ -317,34 +323,84 @@
       linkend="glo_Soft_Mysql"/> database server:</para>
 
       <figure xml:id="hibernateConfigurationFile">
-        <title>A basic Hibernate configuration file
-        <filename>hibernate.cfg.xml</filename>.</title>
-
-        <programlisting language="none">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-	  &lt;!DOCTYPE hibernate-configuration PUBLIC
-          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"&gt;
-
-	  &lt;hibernate-configuration&gt;
-	  &lt;session-factory &gt;
-	  &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
-	  &lt;property name="hibernate.connection.password"&gt;XYZ&lt;/property&gt;
-	  &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/hdm&lt;/property&gt;
-	  &lt;property name="hibernate.connection.username"&gt;hdmuser&lt;/property&gt;
-	  &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;/property&gt;
-	  &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
-	  &lt;property name="hibernate.format_sql"&gt;true&lt;/property&gt;
-	  &lt;property name="hibernate.hbm2ddl.auto"&gt;update&lt;/property&gt;
-	  
-	  &lt;mapping class="hibintro.v1.model.User"/&gt;
-	  &lt;/session-factory&gt;
-	  &lt;/hibernate-configuration&gt;</programlisting>
+        <title>A basic <filename>persistence.xml</filename> <xref
+        linkend="glo_JPA"/> configuration file.</title>
+
+        <programlisting language="xml">&lt;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://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"&gt;
+    
+    &lt;!-- 
+         The &lt;code&gt;persistence.xml&lt;/code&gt; file configures at least one persistence unit;
+         each unit must have a unique name.
+    --&gt;
+    &lt;persistence-unit name="entitytemplatePU"&gt;
+        
+        &lt;!-- 
+            Hibernate will scan your classpath for mapped classes and add them automatically
+            to your persistence unit.
+             &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt;
+        --&gt;
+        &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt;
+        
+        &lt;!-- 
+            Disabling the previous option "exclude-unlisted-classes" requires entity classes to
+            be listed explicitely. You may want to uncomment the following definition.
+
+            &lt;class&gt;my.base.url.Airline&lt;/class&gt;
+        --&gt;
+        
+        &lt;!-- 
+            Standard or vendor-specific options can be set as properties on a persistence unit.
+            Any standard properties have the &lt;code&gt;javax.persistence&lt;/code&gt; name prefix, Hibernate's
+            settings use &lt;code&gt;hibernate&lt;/code&gt;
+        --&gt;
+        &lt;properties&gt;
+            &lt;!-- 
+                JDBC database connection parameter
+            --&gt;
+            &lt;property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/&gt;
+            &lt;property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hdm"/&gt;
+            &lt;property name="javax.persistence.jdbc.user" value="hdmuser"/&gt;
+            &lt;property name="javax.persistence.jdbc.password" value="XYZ"/&gt;
+            
+            &lt;!-- 
+                The JPA engine should drop and re-create the SQL schema in the database
+                automatically when it boots. This is ideal for automated testing, when
+                you want to work with a clean database for every test run.
+            --&gt;
+            &lt;property
+                name="javax.persistence.schema-generation.database.action"
+                value="drop-and-create"/&gt;
+            
+            &lt;!-- 
+                When printing SQL in logs, let Hibernate format the SQL nicely and generate
+                comments into the SQL string so we know why Hibernate executed the SQL statement.
+            --&gt;
+            &lt;property name="hibernate.format_sql" value="true"/&gt;
+            &lt;property name="hibernate.use_sql_comments" value="true"/&gt;
+            
+            &lt;!-- Enable Hibernate scanning for entity classes and adding them automatically
+                but not for hbm.xml files. --&gt;
+            &lt;property name="hibernate.archive.autodetection" value="class"/&gt;
+
+        &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+    
+&lt;/persistence&gt;</programlisting>
       </figure>
 
-      <para>This file may be edited with a simple text editor. The Eclipse
-      <productname xlink:href="https://www.jboss.org/tools">Jboss
-      Tools</productname> Eclipse plugin provides a configuration editor
-      simplifying this task. They may be installed on top of Eclipse <link
+      <para>This file may be edited with a simple text editor. Note the
+      <filename>persistence_2_1.xsd</filename> schema which allows for
+      validation.</para>
+
+      <para>The Eclipse <productname
+      xlink:href="https://www.jboss.org/tools">Jboss Tools</productname>
+      Eclipse plugin provides a configuration editor simplifying this task.
+      They may be installed on top of Eclipse <link
       xlink:href="https://www.jboss.org/tools/download">in several
       ways</link>. The following video shows some of its features.</para>
 
@@ -372,33 +428,6 @@
       </mediaobject>
     </figure>
 
-    <para>Having configured Hibernate we may now start working with <xref
-    linkend="glo_Java"/> objects. To do so we need an appropriate session
-    object to run transactions. Starting from the Hibernate documentation we
-    code the following helper method:</para>
-
-    <programlisting language="none">package hibintro.util;
-
-      import org.hibernate.SessionFactory;
-      import org.hibernate.cfg.Configuration;
-      import org.hibernate.service.ServiceRegistryBuilder;
-
-      public class HibernateUtil {
-
-      /**
-      * @param hibernateConfigFileName The filename defaults to &lt;code&gt;hibernate.cfg.xml&lt;/code&gt;.
-      * @return Session factory instance to be used for actual session creation by caller.
-      */
-      public static SessionFactory createSessionFactory(final String hibernateConfigFileName) {
-      Configuration configuration = new Configuration();
-      configuration.configure(hibernateConfigFileName);
-      ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration
-      .getProperties());
-      return configuration
-      .buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
-      }
-      }</programlisting>
-
     <para>The following class <classname>hibintro.v1.model.User</classname>
     will be used as a starting example to be mapped to a database. Notice the
     <classname>javax.persistence.Entity</classname> <link
@@ -409,48 +438,77 @@
       <title>Mapping <classname>hibintro.v1.model.User</classname> instances
       to a database.</title>
 
-      <programlisting language="none">package hibintro.v1.model;
-
-	...
-
-	<emphasis role="bold">@Entity</emphasis> <co xml:id="entityAnnotation"/>
-	public class User {
-
-	<emphasis role="bold">//The user's unique login name e.g. "goik"</emphasis>
-	String uid; 
-	public String getUid() {return uid;}
-	public void setUid(String uid) {this.uid = uid;}
-
-	<emphasis role="bold">// The user's common name e.g. "Martin Goik"</emphasis>
-	String cname;
-	public String getCname() {return cname;}
-	public void setCname(String cname) {this.cname = cname;}
-
-	<emphasis role="bold">// Hibernate requires a default constructor</emphasis>
-	public User() {}
-
-	public User(String uid, String cname) {
-	super();
-	this.uid = uid;
-	this.cname = cname;
-	}
-	}</programlisting>
+      <programlisting language="java">package hibintro.v1;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * A simple class intended to be mapped to a database server
+ *
+ */
+@Entity <co xml:id="entityAnnotation"/>
+public class User {
+
+  String uid;
+  /**
+   * @return  The user's unique login name e.g. "goik"
+   */
+  @Id
+  public String getUid() {
+    return uid;
+  }
+  /**
+   * @param uid See {@link #getUid()}.
+   */
+  public void setUid(String uid) {
+    this.uid = uid;
+  }
+  String cname;
+  /**
+   * @return The user's common name e.g. "Martin Goik"
+   */
+  public String getCname() {
+    return cname;
+  }
+  /**
+   * @param cname See {@link #getCname()}.
+   */
+  public void setCname(String cname) {
+    this.cname = cname;
+  }
+
+  /**
+   * Hibernate/JPA require a default constructor. It has has to be
+   * implemented if any non-default constructor has been defined
+   */
+  public User() {}
+
+  /**
+   * @param uid See {@link #getUid()}.
+   * @param cname See {@link #getCname()}.
+   */
+  public User(String uid, String cname) {
+    this.uid = uid;
+    this.cname = cname;
+  }
+}</programlisting>
     </figure>
 
     <para>With respect to <xref linkend="hibernateConfigurationFile"/> we
     notice our class <classname>hibintro.v1.model.User</classname> being
     referenced:</para>
 
-    <programlisting language="none">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-      &lt;!DOCTYPE hibernate-configuration 
-      ...  
-      &lt;mapping class="<emphasis role="bold">hibintro.v1.model.User</emphasis>"/&gt; 
-      &lt;/session-factory&gt;
-      &lt;/hibernate-configuration&gt;</programlisting>
+    <programlisting language="xml">&lt;persistence ... &gt;
+
+    &lt;persistence-unit name="hibintroV1PU"&gt;
+        <emphasis role="bold">&lt;class&gt;<classname>hibintro.v1.User</classname>&lt;/class&gt;</emphasis>
+        ...
+    &lt;/persistence-unit&gt;
+     ...</programlisting>
 
     <para>This line tells Hibernate to actually map
-    <classname>hibintro.v1.model.User</classname> to a (Mysql)
-    database.</para>
+    <classname>hibintro.v1.model.User</classname> to the database.</para>
 
     <section xml:id="persistingObjects">
       <title>Persisting objects</title>
@@ -890,22 +948,64 @@
       need an additional <emphasis role="bold">GUI related</emphasis> property
       <code>selected</code> <coref linkend="propertyIsSelected"/>:</para>
 
-      <programlisting language="none">package hibintro.v2;
-
-
-	@Entity public class User {
-	...
-	boolean <emphasis role="bold">selected</emphasis> <co
-          xml:id="propertyIsSelected"/> = false;
-	
-	public boolean isSelected() {
-	return selected;
-	}
-	public void setSelected(boolean selected) {
-	this.selected = selected;
-	}
-	...
-	}</programlisting>
+      <programlisting language="java">package hibintro.v2;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * A simple class intended to be mapped to a database server
+ */
+@Entity
+public class User {
+
+  String uid;
+  /**
+   * @return  The user's unique login name e.g. "goik"
+   */
+  @Id
+  public String getUid() {
+    return uid;
+  }
+  /**
+   * @param uid See {@link #getUid()}.
+   */
+  public void setUid(String uid) {
+    this.uid = uid;
+  }
+  String cname;
+  /**
+   * @return The user's common name e.g. "Martin Goik"
+   */
+  public String getCname() {
+    return cname;
+  }
+  /**
+   * @param cname See {@link #getCname()}.
+   */
+  public void setCname(String cname) {
+    this.cname = cname;
+  }
+
+  boolean selected = false; <co xml:id="propertyIsSelected"/>
+  
+  public boolean isSelected() {
+   return selected;
+  }
+  public void setSelected(boolean selected) {
+     this.selected = selected;
+  }
+  protected User() {}
+
+  /**
+   * @param uid See {@link #getUid()}.
+   * @param cname See {@link #getCname()}.
+   */
+  public User(String uid, String cname) {
+    this.uid = uid;
+    this.cname = cname;
+  }
+}</programlisting>
 
       <para>Hibernates produces the following <abbrev
       xlink:href="https://en.wikipedia.org/wiki/Data_definition_language">DDL</abbrev>
@@ -920,11 +1020,11 @@
 
       <para>If we just annotate a Java class with an
       <classname>javax.persistence.Entity</classname> Annotation all
-      properties of the class in question will be mapped. The Hibernate
-      framework of course cannot distinguish between transient and persistent
-      properties. If we want a property to be transient we have to add a
-      <classname>javax.persistence.Transient</classname> annotation to the
-      corresponding getter method:</para>
+      properties of the class in question will be mapped. A <xref
+      linkend="glo_JPA"/> framework of course cannot distinguish between
+      transient and persistent properties. If we want a property to be
+      transient we have to add a
+      <classname>javax.persistence.Transient</classname> annotation:</para>
 
       <informaltable border="1">
         <colgroup width="6%"/>
@@ -934,18 +1034,17 @@
         <tr>
           <td valign="top"><emphasis role="bold">Java</emphasis></td>
 
-          <td valign="top"><programlisting language="none">package hibintro.v3;
-	    ...
-	    @Entity
-	    public class User {
-	    ...
-	    boolean selected = false;
-	    @Transient <co xml:id="transientAnnotation"/> public boolean isSelected() {
-	    return selected;
-	    }
-	    public void setSelected(boolean selected) {
-	    this.selected = selected;
-	    }...</programlisting></td>
+          <td valign="top"><programlisting language="java">package hibintro.v3;
+
+@Entity
+public class User {
+       ...
+  boolean selected = false;
+  @Transient <co xml:id="transientAnnotation"/>
+  public boolean isSelected() { return selected; }
+  public void setSelected(boolean selected) { this.selected = selected; }
+       ...
+}</programlisting></td>
         </tr>
 
         <tr>
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 fc92551e8..f7ea5a7df 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
@@ -9,13 +9,13 @@
         <include>**/*.java</include>
       </includes>
     </fileSet>
-    <fileSet filtered="true" encoding="UTF-8">
+    <fileSet filtered="true" packaged="true" encoding="UTF-8">
       <directory>src/main/resources</directory>
       <includes>
         <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>
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 0294fbf9a..764930052 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
@@ -17,13 +17,12 @@
         <!-- 
             Hibernate will scan your classpath for mapped classes and add them automatically
             to your persistence unit.
-             <exclude-unlisted-classes>false</exclude-unlisted-classes>
         -->
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         
         <!-- 
-            Disabling the previous option "exclude-unlisted-classes" requires entity classes to
-            be listed explicitely. You may want to uncomment the following definition.
+            setting the previous option "exclude-unlisted-classes" to 'true' requires entity classes to
+            be listed explicitely. You may want to uncomment the following definition and add more classes.
 
             <class>${package}.Airline</class>
         -->
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v1/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v1/User.java
index c3c296209..41adabf8e 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v1/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v1/User.java
@@ -12,7 +12,6 @@ public class User {
 
   String uid;
   /**
-   * 
    * @return  The user's unique login name e.g. "goik"
    */
   @Id
@@ -43,7 +42,7 @@ public class User {
    * Hibernate/JPA require a default constructor. It has has to be
    * implemented if any non-default constructor has been defined
    */
-  public User() {}
+  protected User() {}
 
   /**
    * @param uid See {@link #getUid()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v2/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v2/User.java
index 03bd2feab..c87dc0b80 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v2/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v2/User.java
@@ -11,7 +11,6 @@ public class User {
 
   String uid;
   /**
-   * 
    * @return  The user's unique login name e.g. "goik"
    */
   @Id
@@ -46,10 +45,7 @@ public class User {
   public void setSelected(boolean selected) {
      this.selected = selected;
   }
-/**
-   * Hibernate/JPA require a default constructor 
-   */
-  public User() {}
+  protected User() {}
 
   /**
    * @param uid See {@link #getUid()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v3/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v3/User.java
index ddd4f25b9..969df9a4b 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v3/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v3/User.java
@@ -15,41 +15,27 @@ public class User {
    * @return  The user's unique login name e.g. "goik"
    */
   @Id
-  public String getUid() {
-    return uid;
-  }
+  public String getUid() { return uid; }
   /**
    * @param uid See {@link #getUid()}.
    */
-  public void setUid(String uid) {
-    this.uid = uid;
-  }
+  public void setUid(String uid) { this.uid = uid; }
   String cname;
   /**
    * @return The user's common name e.g. "Martin Goik"
    */
-  public String getCname() {
-    return cname;
-  }
+  public String getCname() { return cname; }
   /**
    * @param cname See {@link #getCname()}.
    */
-  public void setCname(String cname) {
-    this.cname = cname;
-  }
+  public void setCname(String cname) { this.cname = cname; }
 
   boolean selected = false;
   @Transient
-  public boolean isSelected() {
-   return selected;
-  }
-  public void setSelected(boolean selected) {
-     this.selected = selected;
-  }
-/**
-   * Hibernate/JPA require a default constructor 
-   */
-  public User() {}
+  public boolean isSelected() { return selected; }
+  public void setSelected(boolean selected) { this.selected = selected; }
+
+  protected User() {}
 
   /**
    * @param uid See {@link #getUid()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v4/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v4/User.java
index 4b43f01fd..25fbd45ec 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v4/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v4/User.java
@@ -12,38 +12,29 @@ public class User {
 
   String uid;
   /**
-   * 
    * @return  The user's unique login name e.g. "goik"
    */
   @Id
-  public String getUid() {
-    return uid;
-  }
+  public String getUid() { return uid; }
   /**
    * @param uid See {@link #getUid()}.
    */
-  public void setUid(String uid) {
-    this.uid = uid;
-  }
+  public void setUid(String uid) { this.uid = uid; }
   String cname;
   /**
    * @return The user's common name e.g. "Martin Goik"
    */
   @Column(nullable = false)
-  public String getCname() {
-    return cname;
-  }
+  public String getCname() { return cname; }
   /**
    * @param cname See {@link #getCname()}.
    */
-  public void setCname(String cname) {
-    this.cname = cname;
-  }
+  public void setCname(String cname) { this.cname = cname; }
 
-/**
+  /**
    * Hibernate/JPA require a default constructor 
    */
-  public User() {}
+  protected User() {}
 
   /**
    * @param uid See {@link #getUid()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v5/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v5/User.java
index 451bad494..e72106a8b 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v5/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v5/User.java
@@ -15,31 +15,21 @@ public class User {
 
   int uidNumber;
   @Id
-  public int getUidNumber() {
-    return uidNumber;
-  }
-  public void setUidNumber(int uidNumber) {
-    this.uidNumber = uidNumber;
-  }
+  public int getUidNumber() { return uidNumber; }
+  public void setUidNumber(int uidNumber) { this.uidNumber = uidNumber; }
 
   String uid;
 
   /**
-   * 
    * @return The user's unique login name e.g. "goik"
    */
   @Column(nullable=false)
-  public String getUid() {
-    return uid;
-  }
+  public String getUid() { return uid; }
 
   /**
-   * @param uid
-   *          See {@link #getUid()}.
+   * @param uid, See {@link #getUid()}.
    */
-  public void setUid(String uid) {
-    this.uid = uid;
-  }
+  public void setUid(String uid) { this.uid = uid; }
 
   String cname;
 
@@ -47,23 +37,17 @@ public class User {
    * @return The user's common name e.g. "Martin Goik"
    */
   @Column(nullable = false)
-  public String getCname() {
-    return cname;
-  }
+  public String getCname() { return cname; }
 
   /**
-   * @param cname
-   *          See {@link #getCname()}.
+   * @param cname See {@link #getCname()}.
    */
-  public void setCname(String cname) {
-    this.cname = cname;
-  }
+  public void setCname(String cname) { this.cname = cname; }
 
   /**
    * Hibernate/JPA require a default constructor
    */
-  public User() {
-  }
+  protected User() {}
 
   /**
    * @param uidNumber See {@link #getUidNumber()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v7/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v7/User.java
index 687a4efb3..3ef35d144 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v7/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v7/User.java
@@ -22,9 +22,7 @@ public class User {
   public int getUidNumber() {
     return uidNumber;
   }
-  public void setUidNumber(int uidNumber) {
-    this.uidNumber = uidNumber;
-  }
+  public void setUidNumber(int uidNumber) { this.uidNumber = uidNumber; }
 
   String uid;
 
@@ -33,17 +31,13 @@ public class User {
    * @return The user's unique login name e.g. "goik"
    */
   @Column(nullable=false)
-  public String getUid() {
-    return uid;
-  }
+  public String getUid() { return uid; }
 
   /**
    * @param uid
    *          See {@link #getUid()}.
    */
-  public void setUid(String uid) {
-    this.uid = uid;
-  }
+  public void setUid(String uid) { this.uid = uid; }
 
   String cname;
 
@@ -51,24 +45,19 @@ public class User {
    * @return The user's common name e.g. "Martin Goik"
    */
   @Column(nullable = false)
-  public String getCname() {
-    return cname;
-  }
+  public String getCname() { return cname; }
 
   /**
    * @param cname
    *          See {@link #getCname()}.
    */
-  public void setCname(String cname) {
-    this.cname = cname;
-  }
+  public void setCname(String cname) { this.cname = cname; }
 
   /**
    * Hibernate/JPA require a default constructor
    */
-  public User() {
-  }
-
+  protected User() {}
+  
   /**
    * @param uidNumber See {@link #getUidNumber()}.
    * @param uid See {@link #getUid()}.
diff --git a/ws/eclipse/HibIntro/src/main/java/hibintro/v8/User.java b/ws/eclipse/HibIntro/src/main/java/hibintro/v8/User.java
index 4eb0ad5fb..87e320d93 100644
--- a/ws/eclipse/HibIntro/src/main/java/hibintro/v8/User.java
+++ b/ws/eclipse/HibIntro/src/main/java/hibintro/v8/User.java
@@ -19,9 +19,7 @@ public class User {
   public int getUidNumber() {
     return uidNumber;
   }
-  public void setUidNumber(int uidNumber) {
-    this.uidNumber = uidNumber;
-  }
+  public void setUidNumber(int uidNumber) { this.uidNumber = uidNumber; }
 
   String uid;
 
@@ -29,16 +27,12 @@ public class User {
    * @return The user's unique login name e.g. "goik"
    */
   @Column(nullable=false)
-  public String getUid() {
-    return uid;
-  }
+  public String getUid() { return uid; }
   /**
    * @param uid
    *          See {@link #getUid()}.
    */
-  public void setUid(String uid) {
-    this.uid = uid;
-  }
+  public void setUid(String uid) { this.uid = uid; }
 
   String cname;
 
@@ -46,23 +40,17 @@ public class User {
    * @return The user's common name e.g. "Martin Goik"
    */
   @Column(nullable = false, name="fullName")
-  public String getCname() {
-    return cname;
-  }
+  public String getCname() { return cname;  }
   /**
    * @param cname
    *          See {@link #getCname()}.
    */
-  public void setCname(String cname) {
-    this.cname = cname;
-  }
+  public void setCname(String cname) { this.cname = cname; }
 
   /**
    * Hibernate/JPA require a default constructor
    */
-  public User() {
-  }
-
+  protected User() {}
   /**
    * @param uidNumber See {@link #getUidNumber()}.
    * @param uid See {@link #getUid()}.
-- 
GitLab