title: Hibernate/JPA: storing constants in entity class?
body: <p>I work on remote project and found interesting record in log:</p>
  
  <pre><code>2015-12-26 00:28:30,835 DEBUG org.hibernate.tool.hbm2ddl.SchemaUpdate
    Caller+0   at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:251)
    =&gt; alter table bail add column monthName tinyblob
  </code></pre>
  
  <p>with logging set to:</p>
  
  <pre><code>&lt;logger level="trace" name="org.hibernate.tool.hbm2ddl"/&gt;
  </code></pre>
  
  <p>when try to identify what happen to:</p>
  
  <pre><code>&lt;prop key="hibernate.hbm2ddl.auto"&gt;update&lt;/prop&gt;
  </code></pre>
  
  <p>on first run from backup.</p>
  
  <p>When I have seen <em>Bail.java</em> source I am surprised:</p>
  
  <pre><code>String[] monthName = {"Января", "Февраля",
          "Марта", "Апреля", "Мая", "Июня", "Июля",
          "Августа", "Сентября", "Октября", "Ноября",
          "Декабря"
  };
  </code></pre>
  
  <p>So this is constant field!</p>
  
  <p>Is it right to store constants declaration in entity class in term of JPA / Hibernate?</p>
  
  <p>How should I mark constant so it wouldn't be entity property?</p>
  
  <p>I think that <code>static</code> keyword do the job and I think about refactoring code to: </p>
  
  <pre><code>public static final String[] monthName = 
      Collections.unmodifiableList(Arrays.asList(
          "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля",
          "Августа", "Сентября", "Октября", "Ноября", "Декабря"
  ));
  </code></pre>
  
  <p>Because production version deployed with <code>hbm2ddl.auto=update</code> I think I should warn DBA to remove unnecessary <code>monthName</code> column.</p>