tag:blogger.com,1999:blog-77346627885985786052024-03-13T21:02:46.805-07:00Paulius MatulionisPaulius MatulionisPauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-7734662788598578605.post-12487775688327914362014-07-30T07:26:00.000-07:002014-07-30T07:26:13.946-07:00Configuration steps for multi-core SOLR in TomcatThis short tutorial will show you how to configure SOLR to have multiple cores. Technologies I am using:<br />
<ul>
<li>Tomcat 8.0.9 (<a href="http://apache.mirror.vu.lt/apache/tomcat/tomcat-8/v8.0.9/bin/apache-tomcat-8.0.9.zip">http://apache.mirror.vu.lt/apache/tomcat/tomcat-8/v8.0.9/bin/apache-tomcat-8.0.9.zip</a>)</li>
<li>Solr 4.9.0 (<a href="http://apache.mirror.serveriai.lt/lucene/solr/4.9.0/solr-4.9.0.zip">http://apache.mirror.serveriai.lt/lucene/solr/4.9.0/solr-4.9.0.zip</a>)</li>
<li>Windows 7</li>
</ul>
<div>
The steps to do this are as follows:</div>
<div>
<ol>
<li>Edit Tomcat's <span style="font-family: Courier New, Courier, monospace;">conf/server.xml</span> file and put <span style="font-family: Courier New, Courier, monospace;">URIEncoding="UTF-8"</span> this attribute to the main <span style="font-family: Courier New, Courier, monospace;">Connector</span> element.</li>
<li>Create directory where you will keep your <span style="font-family: Courier New, Courier, monospace;">Solr</span> cores configurations. For e.g. <span style="font-family: Courier New, Courier, monospace;">D:\Solr</span></li>
<li>Create directories which will be your <span style="font-family: Courier New, Courier, monospace;">Solr</span> cores inside the directory you've just created in step nr. 2. For e.g. I'll have two cores: <span style="font-family: Courier New, Courier, monospace;">D:\Solr\solr-core-1</span>, <span style="font-family: Courier New, Courier, monospace;">D:\Solr\solr-core-2</span></li>
<li>Copy the file <span style="font-family: Courier New, Courier, monospace;">solr.xml</span> from the directory <span style="font-family: Courier New, Courier, monospace;">example\multicore</span> of downloaed and unzipped <span style="font-family: Courier New, Courier, monospace;">Solr</span> archive and paste it to your <span style="font-family: Courier New, Courier, monospace;">Solr</span> root directory. For e.g. : <span style="font-family: Courier New, Courier, monospace;">D:\Solr</span></li>
<li>Edit <span style="font-family: Courier New, Courier, monospace;">solr.xml</span> file depending on your core names. For e.g. in my case: <span style="font-family: Courier New, Courier, monospace;"><core name="solr-core-1" instanceDir="solr-core-1" /></span>, <span style="font-family: Courier New, Courier, monospace;"><core name="solr-core-2" instanceDir="solr-core-2" /></span>.</li>
<li>Copy <span style="font-family: Courier New, Courier, monospace;">solr.x.x.x.war</span> from the dist directory of the unzipped <span style="font-family: Courier New, Courier, monospace;">Solr</span> archive to the Tomcat's <span style="font-family: Courier New, Courier, monospace;">webapps</span> folder and rename it to <span style="font-family: Courier New, Courier, monospace;">solr.war</span>.</li>
<li>Create file called: <span style="font-family: Courier New, Courier, monospace;">setenv.bat</span> in the Tomcat's <span style="font-family: Courier New, Courier, monospace;">bin</span> folder. Open that file and paste this line into it: <span style="font-family: Courier New, Courier, monospace;">set JAVA_OPTS="-Dsolr.solr.home=D:\Solr"</span></li>
<li>Open <span style="font-family: Courier New, Courier, monospace;">conf\solrconfig.xml</span> files in each of the cores you have created and change the <span style="font-family: Courier New, Courier, monospace;">dataDir</span> element to point to your cores' data directories. For e.g.: data directory for <span style="font-family: Courier New, Courier, monospace;">solr-core-1</span>: <span style="font-family: Courier New, Courier, monospace;"><dataDir>D:\\Solr\\solr-core-1\\data</dataDir></span></li>
<li>Copy all the jar files from the unzipped <span style="font-family: Courier New, Courier, monospace;">Solr</span> archive's directory <span style="font-family: Courier New, Courier, monospace;">example\lib\ext</span> to the Tomcat's <span style="font-family: Courier New, Courier, monospace;">lib</span> directory.</li>
<li>Copy the file: <span style="font-family: Courier New, Courier, monospace;">example\resources\log4j.properties</span> from <span style="font-family: Courier New, Courier, monospace;">Solr</span> unzipped archive into the same Tomcat's <span style="font-family: Courier New, Courier, monospace;">lib</span> directory. Just make sure you change these properties according to your needs.</li>
<li>Start the Tomcat and your <span style="font-family: Courier New, Courier, monospace;">Solr</span> cores will be listed if you access this URL: <a href="http://localhost:8080/solr/#/~cores">http://localhost:8080/solr/#/~cores</a></li>
</ol>
</div>
<br />Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0tag:blogger.com,1999:blog-7734662788598578605.post-39440852301637092342014-04-06T08:22:00.001-07:002014-04-06T08:22:35.688-07:00WSDL2Java using CXF and MavenThis short post will show how to generate client classes for java web service client using <span style="font-family: Courier New, Courier, monospace;">Apache CXF</span> and <span style="font-family: Courier New, Courier, monospace;">Apache Maven</span>. Lets assume that you have your project set up and your <span style="font-family: Courier New, Courier, monospace;">WSDL</span> file ready so all you need to do is to add the below plugin into your <span style="font-family: Courier New, Courier, monospace;">pom.xml</span> maven configuration into plugins section.<br />
<br />
<pre style="background: #f6f8ff; color: #000020;"><span style="color: #0057a6;"><</span><span style="color: #333385;">plugin</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">groupId</span><span style="color: #0057a6;">></span>org.apache.cxf<span style="color: #0057a6;"></</span><span style="color: #333385;">groupId</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">artifactId</span><span style="color: #0057a6;">></span>cxf-codegen-plugin<span style="color: #0057a6;"></</span><span style="color: #333385;">artifactId</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">version</span><span style="color: #0057a6;">></span>${cxf.version}<span style="color: #0057a6;"></</span><span style="color: #333385;">version</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">dependencies</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">dependency</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">groupId</span><span style="color: #0057a6;">></span>org.apache.cxf<span style="color: #0057a6;"></</span><span style="color: #333385;">groupId</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">artifactId</span><span style="color: #0057a6;">></span>cxf-rt-bindings-soap<span style="color: #0057a6;"></</span><span style="color: #333385;">artifactId</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">version</span><span style="color: #0057a6;">></span>${cxf.version}<span style="color: #0057a6;"></</span><span style="color: #333385;">version</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">dependency</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">dependencies</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">executions</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">execution</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">id</span><span style="color: #0057a6;">></span>generate-jaxb<span style="color: #0057a6;"></</span><span style="color: #333385;">id</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">phase</span><span style="color: #0057a6;">></span>generate-sources<span style="color: #0057a6;"></</span><span style="color: #333385;">phase</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">configuration</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">additionalJvmArgs</span><span style="color: #0057a6;">></span>-Dfile.encoding=UTF8<span style="color: #0057a6;"></</span><span style="color: #333385;">additionalJvmArgs</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">wsdlOptions</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">wsdlOption</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">wsdl</span><span style="color: #0057a6;">></span>src/main/resources/wsdl/YourWsdlFile.wsdl<span style="color: #0057a6;"></</span><span style="color: #333385;">wsdl</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraargs</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>-wsdlLocation<span style="color: #0057a6;"></</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span><span style="color: #0057a6;"></</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>-client<span style="color: #0057a6;"></</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>-p<span style="color: #0057a6;"></</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>com.yourcompany.types<span style="color: #0057a6;"></</span><span style="color: #333385;">extraarg</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">extraargs</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">wsdlOption</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">wsdlOptions</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">configuration</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">goals</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"><</span><span style="color: #333385;">goal</span><span style="color: #0057a6;">></span>wsdl2java<span style="color: #0057a6;"></</span><span style="color: #333385;">goal</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">goals</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">execution</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">executions</span><span style="color: #0057a6;">></span>
<span style="color: #0057a6;"></</span><span style="color: #333385;">plugin</span><span style="color: #0057a6;">></span></pre>
<br />
That's it. Your java classes from <span style="font-family: Courier New, Courier, monospace;">WSDL</span> file will be generated into: <span style="font-family: Courier New, Courier, monospace;">${project.home}\target\generated-sources\cxf</span> directory.Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0tag:blogger.com,1999:blog-7734662788598578605.post-48307522303939706042013-10-26T11:50:00.001-07:002014-04-06T08:03:12.078-07:00Spring MVC Ajax file uploadUploading a file using standard <span style="font-family: Courier New, Courier, monospace;">Spring</span> <span style="font-family: Courier New, Courier, monospace;">MVC HTML</span> form is straightforward, but in some cases if the solution requires to upload a file and display an image using <span style="font-family: Courier New, Courier, monospace;">AJAX</span> request - requires a little bit more work to be done. Lets image that application is all set up, contains all necessary <span style="font-family: Courier New, Courier, monospace;">Spring</span> dependencies and there are only <span style="font-family: Courier New, Courier, monospace;">AJAX</span> file upload bits missing. First thing you need is an <span style="font-family: Courier New, Courier, monospace;">HTML</span> form something like this:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #274796;"> </span><span style="color: #074726;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"idUploadLogoForm"</span><span style="color: #274796;"> </span><span style="color: #074726;">enctype</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"multipart/form-data"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>Logo:<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #274796;"> </span><span style="color: #074726;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"idImagePlaceHolder"</span><span style="color: #a65700;">></span><span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #274796;"> </span><span style="color: #074726;">for</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"idLogoFile"</span><span style="color: #a65700;">></span>Choose your logo:<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">input</span><span style="color: #274796;"> </span><span style="color: #074726;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"idLogoFile"</span><span style="color: #274796;"> </span><span style="color: #074726;">type</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"file"</span><span style="color: #274796;"> </span><span style="color: #074726;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"logo"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">button</span><span style="color: #274796;"> </span><span style="color: #074726;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"idUploadLogoButton"</span><span style="color: #a65700;">></span>Upload Logo<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">button</span><span style="color: #a65700;">></span>
</pre>
<br />
Next thing needed is a class which will be the holder of <span style="font-family: Courier New, Courier, monospace;">Base64</span> encoded image's content. The class looks like this:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">fasterxml</span><span style="color: #808030;">.</span><span style="color: #004a43;">jackson</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">JsonProperty</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">Serializable</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> JsonLogo <span style="color: maroon; font-weight: bold;">implements</span> Serializable <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>JsonProperty
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> image<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getImage<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> image<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setImage<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> image<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>image <span style="color: #808030;">=</span> image<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<br />
<span style="font-family: Courier New, Courier, monospace;">@JsonProperty</span> annotation comes from <span style="font-family: Courier New, Courier, monospace;">com.fasterxml</span> package, this requires some dependencies to be included to support <span style="font-family: Courier New, Courier, monospace;">JSON</span> processing in <span style="font-family: Courier New, Courier, monospace;">Spring MVC</span>. These dependencies are:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>com.fasterxml.jackson.core<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>jackson-annotations<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.2.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>com.fasterxml.jackson.core<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>jackson-core<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.2.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>com.fasterxml.jackson.core<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>jackson-databind<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.2.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
</pre>
<br />
Next step is to create a method in <span style="font-family: Courier New, Courier, monospace;">Spring</span> controller to be ready to accepts requests of file upload. This method looks like this:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">@RequestMapping(value = "upload-logo", method = RequestMethod.POST)
@ResponseBody
<span style="color: maroon; font-weight: bold;">public</span> JsonLogo uploadLogo(MultipartHttpServletRequest request) <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">try</span> <span style="color: purple;">{</span>
Iterator<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">></span> itr <span style="color: #808030;">=</span> request<span style="color: #808030;">.</span>getFileNames<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
MultipartFile file <span style="color: #808030;">=</span> request<span style="color: #808030;">.</span>getFile<span style="color: #808030;">(</span>itr<span style="color: #808030;">.</span>next<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
JsonLogo logo <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> JsonLogo<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span>multipartFile<span style="color: #808030;">.</span>getBytes<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>length <span style="color: #808030;">></span> <span style="color: #008c00;">0</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
logo<span style="color: #808030;">.</span>setImage<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">new</span> <span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">(</span>Base64<span style="color: #808030;">.</span>encodeBase64<span style="color: #808030;">(</span>multipartFile<span style="color: #808030;">.</span>getBytes<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">return</span> logo<span style="color: purple;">;</span>
<span style="color: purple;">}</span> <span style="color: maroon; font-weight: bold;">catch</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Exception</span> e<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: dimgrey;">//Handle exception if any</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">null</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
</pre>
<br />
For encoding <span style="font-family: Courier New, Courier, monospace;">Base64</span> <a href="http://commons.apache.org/proper/commons-codec/" target="_blank">Apache Commons Codec</a> library is used.<br />
The last thing is a <span style="font-family: Courier New, Courier, monospace;">jQuery</span> bit which performs <span style="font-family: Courier New, Courier, monospace;">AJAX POST</span> request to a <span style="font-family: Courier New, Courier, monospace;">Spring</span> controller:
<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">$<span style="color: #808030;">(</span><span style="color: #0000e6;">'#idUploadLogoButton'</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>on<span style="color: #808030;">(</span><span style="color: #0000e6;">'click'</span><span style="color: #808030;">,</span> <span style="color: maroon; font-weight: bold;">function</span> <span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">var</span> form <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> FormData<span style="color: #808030;">(</span>document<span style="color: #808030;">.</span>getElementById<span style="color: #808030;">(</span><span style="color: #0000e6;">'idUploadLogoForm'</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
$<span style="color: #808030;">.</span>ajax<span style="color: #808030;">(</span><span style="color: purple;">{</span>
url<span style="color: purple;">:</span> <span style="color: maroon;">"</span><span style="color: #0000e6;">upload-logo.htm</span><span style="color: maroon;">"</span><span style="color: #808030;">,</span>
data<span style="color: purple;">:</span> form<span style="color: #808030;">,</span>
dataType<span style="color: purple;">:</span> <span style="color: #0000e6;">'text'</span><span style="color: #808030;">,</span>
processData<span style="color: purple;">:</span> <span style="color: #0f4d75;">false</span><span style="color: #808030;">,</span>
contentType<span style="color: purple;">:</span> <span style="color: #0f4d75;">false</span><span style="color: #808030;">,</span>
type<span style="color: purple;">:</span> <span style="color: #0000e6;">'POST'</span><span style="color: #808030;">,</span>
success<span style="color: purple;">:</span> <span style="color: maroon; font-weight: bold;">function</span> <span style="color: #808030;">(</span>response<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">var</span> data <span style="color: #808030;">=</span> jQuery<span style="color: #808030;">.</span>parseJSON<span style="color: #808030;">(</span>response<span style="color: #808030;">)</span><span style="color: purple;">;</span>
$<span style="color: #808030;">(</span><span style="color: #0000e6;">'#idImagePlaceHolder'</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>html<span style="color: #808030;">(</span><span style="color: #0000e6;">'<img src="data:image/png;base64,'</span> <span style="color: #808030;">+</span> data<span style="color: #808030;">.</span>JsonLogo<span style="color: #808030;">.</span>image <span style="color: #808030;">+</span> <span style="color: #0000e6;">'"/>'</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span><span style="color: #808030;">,</span>
error<span style="color: purple;">:</span> <span style="color: maroon; font-weight: bold;">function</span> <span style="color: #808030;">(</span>jqXHR<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: dimgrey;">//Error handling</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
</pre>
<br />
After submitting this request uploaded image will appear in an <span style="font-family: Courier New, Courier, monospace;">HTML div</span> which is a placeholder for it.Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0tag:blogger.com,1999:blog-7734662788598578605.post-1992758757046988512013-08-15T04:04:00.002-07:002013-08-15T04:04:20.866-07:00Spring Application Context in custom JSP Tag classIn this post I will explain how to retrieve Spring application context in custom JSP tag class. Lets assume you already have a tag configured in your <b>Tag Library Descriptors</b> file:<br />
<br />
<pre style="background: #ffffff; color: black;"><span style="color: #a65700;"><</span><span style="color: #5f5035;">tag</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">name</span><span style="color: #a65700;">></span>myCustomTag<span style="color: #a65700;"></</span><span style="color: #5f5035;">name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">tag-class</span><span style="color: #a65700;">></span>com.paulius.tags.MyCustomTag<span style="color: #a65700;"></</span><span style="color: #5f5035;">tag-class</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">body-content</span><span style="color: #a65700;">></span>empty<span style="color: #a65700;"></</span><span style="color: #5f5035;">body-content</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">tag</span><span style="color: #a65700;">></span>
</pre>
<br />
It is pretty straightforward to get Spring application context. All needs to be done is displayed in the below <span style="font-family: Courier New, Courier, monospace;">MyCustomTag</span> class:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">web</span><span style="color: #808030;">.</span><span style="color: #004a43;">context</span><span style="color: #808030;">.</span><span style="color: #004a43;">WebApplicationContext</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">web</span><span style="color: #808030;">.</span><span style="color: #004a43;">context</span><span style="color: #808030;">.</span><span style="color: #004a43;">support</span><span style="color: #808030;">.</span><span style="color: #004a43;">WebApplicationContextUtils</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">servlet</span><span style="color: #808030;">.</span><span style="color: #004a43;">jsp</span><span style="color: #808030;">.</span><span style="color: #004a43;">JspWriter</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">servlet</span><span style="color: #808030;">.</span><span style="color: #004a43;">jsp</span><span style="color: #808030;">.</span><span style="color: #004a43;">PageContext</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">IOException</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> MyCustomTag <span style="color: maroon; font-weight: bold;">extends</span> SimpleTagSupport <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Override
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> doTag<span style="color: #808030;">(</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">throws</span> <span style="color: #bb7977; font-weight: bold;">IOException</span> <span style="color: purple;">{</span>
WebApplicationContext springContext <span style="color: #808030;">=</span> WebApplicationContextUtils<span style="color: #808030;">.</span>getWebApplicationContext<span style="color: #808030;">(</span><span style="color: #808030;">(</span><span style="color: #808030;">(</span>PageContext<span style="color: #808030;">)</span> getJspContext<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>getServletContext<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
YourBean yourBean <span style="color: #808030;">=</span> <span style="color: #808030;">(</span>YourBean<span style="color: #808030;">)</span> springContext<span style="color: #808030;">.</span>getBean<span style="color: #808030;">(</span><span style="color: #0000e6;">"yourBeanName"</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
yourBean<span style="color: #808030;">.</span>doSomething<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<br />
<span style="font-family: Courier New, Courier, monospace;">JspContext</span> is available from <span style="font-family: Courier New, Courier, monospace;">SimpleTagSupport</span> class. <span style="font-family: 'Courier New', Courier, monospace;">JspContext</span> is a parent class of <span style="font-family: Courier New, Courier, monospace;">PageContext</span> which holds an instance of <span style="font-family: Courier New, Courier, monospace;">ServletContext</span> needed to be passed to <span style="font-family: Courier New, Courier, monospace;">WebApplicationContextUtils#getWebApplicationContext(ServletContext)</span> method to get actual Spring application context.<br />
<br />
Once you have your Spring context available, you can get your beans by calling <span style="font-family: Courier New, Courier, monospace;">springContext.getBean("yourBeanName")</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">.</span>Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0tag:blogger.com,1999:blog-7734662788598578605.post-83064972624256554232013-07-09T13:17:00.001-07:002013-07-09T13:17:10.180-07:00Using a Map to represent an entity as name and value pair in JPA<div style="text-align: justify;">
Lets imagine there is a situation when there is a table in the database which contains some attributes as name and value pairs. Having this entity as a collection referencing to the other table using <span style="font-family: Courier New, Courier, monospace;">@OneToMany</span> mapping and then looping through it by adding attributes: <span style="font-family: Courier New, Courier, monospace;">name</span> as a key and <span style="font-family: Courier New, Courier, monospace;">value</span> as a value into the <span style="font-family: Courier New, Courier, monospace;">Map</span> is pretty straightforward, but persuading <span style="font-family: Courier New, Courier, monospace;">JPA</span> to do the job requires a little bit more work. This tutorial will show exactly how to make this happen using plain <span style="font-family: Courier New, Courier, monospace;">JPA</span>. Please note that all the annotation used in the following classes are coming from <span style="font-family: Courier New, Courier, monospace;">javax.persistence</span> package. All of them are standard <span style="font-family: Courier New, Courier, monospace;">JPA</span> annotations and none of them is framework specific.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Lets start with creating an entity named <span style="font-family: Courier New, Courier, monospace;">Attribute</span>:</div>
<div style="text-align: justify;">
<br /></div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">@Entity
@Table(name = "ATTRIBUTE")
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> Attribute <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Id
<span style="color: maroon; font-weight: bold;">private</span> AttributePrimaryKey id<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"VALUE"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> value<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getValue<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> value<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setValue<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> value<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>value <span style="color: #808030;">=</span> value<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> AttributePrimaryKey getId<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> id<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setId<span style="color: #808030;">(</span>AttributePrimaryKey id<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>id <span style="color: #808030;">=</span> id<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<div style="text-align: justify;">
<br />
Now we need to create a class which will represent <span style="font-family: Courier New, Courier, monospace;">Attribute</span>'s primary key. Lets name this class <span style="font-family: Courier New, Courier, monospace;">AttributePrimaryKey</span>:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">@Embeddable
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> AttributePrimaryKey <span style="color: maroon; font-weight: bold;">implements</span> Serializable <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"NAME"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>ManyToOne<span style="color: #808030;">(</span>fetch <span style="color: #808030;">=</span> FetchType<span style="color: #808030;">.</span>EAGER<span style="color: #808030;">)</span>
<span style="color: #808030;">@</span>JoinColumn<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"ATTRIBUTE_GROUP_ID"</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> AttributeGroup attributeGroup<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setName<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>name <span style="color: #808030;">=</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> AttributeGroup getAttributeGroup<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> attributeGroup<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setAttributeGroup<span style="color: #808030;">(</span>AttributeGroup attributeGroup<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>attributeGroup <span style="color: #808030;">=</span> attributeGroup<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #808030;">@</span>Override
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">boolean</span> equals<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Object</span> o<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">this</span> <span style="color: #808030;">=</span><span style="color: #808030;">=</span> o<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">true</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span><span style="color: #808030;">!</span><span style="color: #808030;">(</span>o <span style="color: maroon; font-weight: bold;">instanceof</span> AttributePrimaryKey<span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
AttributePrimaryKey that <span style="color: #808030;">=</span> <span style="color: #808030;">(</span>AttributePrimaryKey<span style="color: #808030;">)</span> o<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: #808030;">!</span><span style="color: #808030;">(</span>attributeGroup <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span> <span style="color: #808030;">?</span> <span style="color: #808030;">!</span>attributeGroup<span style="color: #808030;">.</span>equals<span style="color: #808030;">(</span>that<span style="color: #808030;">.</span>attributeGroup<span style="color: #808030;">)</span> <span style="color: #808030;">:</span> that<span style="color: #808030;">.</span>attributeGroup <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span><span style="color: #808030;">)</span>
<span style="color: #808030;">&</span><span style="color: #808030;">&</span> <span style="color: #808030;">!</span><span style="color: #808030;">(</span>name <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span> <span style="color: #808030;">?</span> <span style="color: #808030;">!</span>name<span style="color: #808030;">.</span>equals<span style="color: #808030;">(</span>that<span style="color: #808030;">.</span>name<span style="color: #808030;">)</span> <span style="color: #808030;">:</span> that<span style="color: #808030;">.</span>name <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #808030;">@</span>Override
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">int</span> hashCode<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: #bb7977;">int</span> result <span style="color: #808030;">=</span> name <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span> <span style="color: #808030;">?</span> name<span style="color: #808030;">.</span>hashCode<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: #808030;">:</span> <span style="color: #008c00;">0</span><span style="color: purple;">;</span>
result <span style="color: #808030;">=</span> <span style="color: #008c00;">31</span> <span style="color: #808030;">*</span> result <span style="color: #808030;">+</span> <span style="color: #808030;">(</span>attributeGroup <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span> <span style="color: #808030;">?</span> attributeGroup<span style="color: #808030;">.</span>hashCode<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: #808030;">:</span> <span style="color: #008c00;">0</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">return</span> result<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<br />
Make sure that <span style="font-family: Courier New, Courier, monospace;">equals</span> and <span style="font-family: Courier New, Courier, monospace;">hasCode</span> methods are overridden as this is the pirmary key of the <span style="font-family: Courier New, Courier, monospace;">Attribute</span> entity and must be unique. And finally we need to create an entity which will hold the actual <span style="font-family: Courier New, Courier, monospace;">Map</span>. Lets name it <span style="font-family: Courier New, Courier, monospace;">AttributeGroup</span>:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">@Entity
@Table(name = "ATTRIBUTE_GROUP")
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> AttributeGroup <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Id
<span style="color: #808030;">@</span>GeneratedValue<span style="color: #808030;">(</span>strategy <span style="color: #808030;">=</span> GenerationType<span style="color: #808030;">.</span>IDENTITY<span style="color: #808030;">)</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"ID"</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">Long</span> id<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>ElementCollection
<span style="color: #808030;">@</span>MapKeyColumn<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"NAME"</span><span style="color: #808030;">)</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"VALUE"</span><span style="color: #808030;">)</span>
<span style="color: #808030;">@</span>CollectionTable<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"ATTRIBUTE"</span><span style="color: #808030;">,</span> joinColumns <span style="color: #808030;">=</span> <span style="color: #808030;">@</span>JoinColumn<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"ATTRIBUTE_GROUP_ID"</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> Map<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">></span> attributes <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> HashMap<span style="color: #808030;"><</span><span style="color: #808030;">></span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> createAttribute<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span> value<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
AttributePrimaryKey primaryKey <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> AttributePrimaryKey<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
primaryKey<span style="color: #808030;">.</span>setName<span style="color: #808030;">(</span>name<span style="color: #808030;">)</span><span style="color: purple;">;</span>
primaryKey<span style="color: #808030;">.</span>setAttributeGroup<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
Attribute attribute <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> Attribute<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
attribute<span style="color: #808030;">.</span>setValue<span style="color: #808030;">(</span>value<span style="color: #808030;">)</span><span style="color: purple;">;</span>
attribute<span style="color: #808030;">.</span>setId<span style="color: #808030;">(</span>primaryKey<span style="color: #808030;">)</span><span style="color: purple;">;</span>
attributes<span style="color: #808030;">.</span>put<span style="color: #808030;">(</span>name<span style="color: #808030;">,</span> value<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">Long</span> getId<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> id<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> Map<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">></span> getAttributes<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> attributes<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<br />
So as you see this entity contains a <span style="font-family: Courier New, Courier, monospace;">Map<String, String></span> which represents values from <span style="font-family: Courier New, Courier, monospace;">Attribute</span> entity holding a <span style="font-family: Courier New, Courier, monospace;">name</span> as a key of the map and <span style="font-family: Courier New, Courier, monospace;">value</span> as a value of the <span style="font-family: Courier New, Courier, monospace;">Map</span>.<br />
<br />
To create these tables in <span style="font-family: Courier New, Courier, monospace;">MySQL</span> the following query has to be executed:<br />
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"> <span style="color: maroon; font-weight: bold;">CREATE</span> <span style="color: maroon; font-weight: bold;">TABLE</span> ATTRIBUTE <span style="color: purple;">(</span>
NAME <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
VALUE <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
ATTRIBUTE_GROUP_ID <span style="color: #bb7977;">BIGINT</span><span style="color: purple;">,</span>
<span style="color: maroon; font-weight: bold;">PRIMARY</span> <span style="color: maroon; font-weight: bold;">KEY</span> <span style="color: #808030;">(</span>ATTRIBUTE_GROUP_ID<span style="color: purple;">,</span> NAME<span style="color: #808030;">)</span><span style="color: purple;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">CREATE</span> <span style="color: maroon; font-weight: bold;">TABLE</span> ATTRIBUTE_GROUP <span style="color: purple;">(</span>
ID <span style="color: #bb7977;">BIGINT</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span> <span style="color: #074726;">AUTO_INCREMENT</span><span style="color: purple;">,</span>
<span style="color: maroon; font-weight: bold;">PRIMARY</span> <span style="color: maroon; font-weight: bold;">KEY</span> <span style="color: #808030;">(</span>ID<span style="color: #808030;">)</span><span style="color: purple;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">ALTER</span> <span style="color: maroon; font-weight: bold;">TABLE</span> ATTRIBUTE
<span style="color: maroon; font-weight: bold;">ADD</span> <span style="color: maroon; font-weight: bold;">INDEX</span> FK_BBTUDA7EL6XJVERGKSQBRGFTH <span style="color: #808030;">(</span>ATTRIBUTE_GROUP_ID<span style="color: #808030;">)</span><span style="color: purple;">,</span>
<span style="color: maroon; font-weight: bold;">ADD</span> <span style="color: maroon; font-weight: bold;">CONSTRAINT</span> FK_BBTUDA7EL6XJVERGKSQBRGFTH <span style="color: maroon; font-weight: bold;">FOREIGN</span> <span style="color: maroon; font-weight: bold;">KEY</span> <span style="color: #808030;">(</span>ATTRIBUTE_GROUP_ID<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">REFERENCES</span> ATTRIBUTE_GROUP <span style="color: #808030;">(</span>ID<span style="color: #808030;">)</span><span style="color: purple;">;</span>
</pre>
<br /></div>
Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0tag:blogger.com,1999:blog-7734662788598578605.post-71518820487730522342013-07-07T09:56:00.002-07:002013-07-07T10:32:42.978-07:00Using Hibernate over JPA EntityManager with Spring<div style="text-align: justify;">
Almost every Java developer knows that Hibernate is widely used via it's native approach, but have you ever tried it
using via standard JPA (Java Persistence API) approach? Once I have faced an issue in terms of migrating from
OpenJPA to Hibernate, but I had to use Hibernate as JPA implementation. The whole internet is full of examples how
Hibernate is used via it's native approach, it took me sometime to get it working over JPA also using Spring. This blog contains detailed
information how Hibernate can be configured and used via JPA. The benefit of using Hibernate as the implementation of JPA is that if you would want to change the persistence implementation it would be straightforward - you just need to make sure you are not using any framework specific things. It has to be pure JPA and framework - just an implementation.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Technologies used:</b></div>
<div style="text-align: justify;">
<ul>
<li><b>Spring 3.2.3.RELEASE</b></li>
<li><b>Hibernate 4.2.2.Final</b></li>
<li><b>JPA 2.0</b></li>
<li><b>MySQL</b></li>
<li><b>Tomcat 7</b></li>
<li><b>Maven 3.0.5</b></li>
<li><b>JDK 1.7</b></li>
</ul>
<div>
Lets start with reviewing the whole project's structure:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-BsyZbf_W88g/Udg3fvFB7zI/AAAAAAAAAG0/Ln0B-lZ-KNM/s1600/project-structure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-BsyZbf_W88g/Udg3fvFB7zI/AAAAAAAAAG0/Ln0B-lZ-KNM/s1600/project-structure.png" /></a>
</div>
This project contains Spring controller, Spring model attribute, JPA entity, facade to perform JPA EntityManager's
operations, Hibernate SQL Schema generator, persistence configuration file, project configuration properties, Spring
dispatcher and application context configuration files, deployment descriptor, view page and Maven build file. Before
going in details make sure that you have created project structure like shown in this image. We will go through all of
these in details in a moment.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<h2 style="font-size: 18px; font-weight: bold;">
- Creating Maven build script</h2>
In the project root folder create a file named <span style="font-family: Courier New, Courier, monospace;">pom.xml</span>
which will be used to build the whole project into web application archive - <span style="font-family: Courier New, Courier, monospace;">.war</span> file, which later in this case will be
deployed into <span style="font-family: Courier New, Courier, monospace;">Tomcat 7</span> servlet container.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><?</span><span style="color: maroon; font-weight: bold;">xml</span><span style="color: #004a43;"> </span><span style="color: #074726;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #7d0045;">1.0</span><span style="color: #0000e6;">"</span><span style="color: #004a43;"> </span><span style="color: #074726;">encoding</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">UTF-8</span><span style="color: #0000e6;">"</span><span style="color: #004a43;">?></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">project</span> <span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">xsi</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.w3.org</span><span style="color: #40015a;">/2001/XMLSchema-instance</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">maven.apache.org</span><span style="color: #40015a;">/POM/4.0.0</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xsi</span><span style="color: purple;">:</span><span style="color: #074726;">schemaLocation</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">maven.apache.org</span><span style="color: #40015a;">/POM/4.0.0</span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">maven.apache.org</span><span style="color: #40015a;">/maven-v4_0_0.xsd</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">modelVersion</span><span style="color: #a65700;">></span>4.0.0<span style="color: #a65700;"></</span><span style="color: #5f5035;">modelVersion</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>com.paulius.hibernateviajpa<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>hibernateviajpa<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.0.0-SNAPSHOT<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">name</span><span style="color: #a65700;">></span>${war.symbolicName} [${war.namespace}]<span style="color: #a65700;"></</span><span style="color: #5f5035;">name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">packaging</span><span style="color: #a65700;">></span>war<span style="color: #a65700;"></</span><span style="color: #5f5035;">packaging</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">properties</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">project.build.sourceEncoding</span><span style="color: #a65700;">></span>UTF8<span style="color: #a65700;"></</span><span style="color: #5f5035;">project.build.sourceEncoding</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">maven.build.timestamp.format</span><span style="color: #a65700;">></span>yyyy-MM-dd HH:mm:ss<span style="color: #a65700;"></</span><span style="color: #5f5035;">maven.build.timestamp.format</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">war.symbolicName</span><span style="color: #a65700;">></span>Hibernate Via JPA<span style="color: #a65700;"></</span><span style="color: #5f5035;">war.symbolicName</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">war.namespace</span><span style="color: #a65700;">></span>com.paulius.hibernateviajpa<span style="color: #a65700;"></</span><span style="color: #5f5035;">war.namespace</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">org.springframework.version</span><span style="color: #a65700;">></span>3.2.3.RELEASE<span style="color: #a65700;"></</span><span style="color: #5f5035;">org.springframework.version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">properties</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependencies</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-core<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-expression<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-beans<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-context<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-context-support<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-tx<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-jdbc<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-orm<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-webmvc<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-oxm<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.springframework<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>spring-web<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>${org.springframework.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>cglib<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>cglib<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.2.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.hibernate<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>hibernate-core<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>4.2.2.Final<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.hibernate<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>hibernate-entitymanager<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>4.2.2.Final<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.hibernate<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>hibernate-validator<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>4.0.2.GA<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.slf4j<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>slf4j-api<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.6.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.slf4j<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>slf4j-log4j12<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.6.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>log4j<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>log4j<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.2.17<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>javax.servlet<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>jstl<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>compile<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>mysql<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>mysql-connector-java<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>5.1.19<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>provided<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>javax.servlet<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>javax.servlet-api<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>3.0.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>provided<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>javax<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>javaee-web-api<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>6.0<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>provided<span style="color: #a65700;"></</span><span style="color: #5f5035;">scope</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependency</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">dependencies</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">build</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">finalName</span><span style="color: #a65700;">></span>HibernateViaJPA##${project.version}<span style="color: #a65700;"></</span><span style="color: #5f5035;">finalName</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugins</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.apache.maven.plugins<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>maven-compiler-plugin<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.3.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">source</span><span style="color: #a65700;">></span>1.7<span style="color: #a65700;"></</span><span style="color: #5f5035;">source</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">target</span><span style="color: #a65700;">></span>1.7<span style="color: #a65700;"></</span><span style="color: #5f5035;">target</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">encoding</span><span style="color: #a65700;">></span>UTF-8<span style="color: #a65700;"></</span><span style="color: #5f5035;">encoding</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.apache.maven.plugins<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>maven-war-plugin<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.1.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">archive</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">manifestEntries</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">Build-Location</span><span style="color: #a65700;">></span>${basedir}<span style="color: #a65700;"></</span><span style="color: #5f5035;">Build-Location</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">Build-Machine</span><span style="color: #a65700;">></span>${env.COMPUTERNAME}<span style="color: #a65700;"></</span><span style="color: #5f5035;">Build-Machine</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">Build-Date</span><span style="color: #a65700;">></span>${maven.build.timestamp}<span style="color: #a65700;"></</span><span style="color: #5f5035;">Build-Date</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">manifestEntries</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">archive</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">failOnMissingWebXml</span><span style="color: #a65700;">></span>false<span style="color: #a65700;"></</span><span style="color: #5f5035;">failOnMissingWebXml</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.apache.maven.plugins<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>maven-source-plugin<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.1.2<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">id</span><span style="color: #a65700;">></span>attach-sources<span style="color: #a65700;"></</span><span style="color: #5f5035;">id</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>deploy<span style="color: #a65700;"></</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>jar<span style="color: #a65700;"></</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>test-jar<span style="color: #a65700;"></</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.apache.maven.plugins<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>maven-javadoc-plugin<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>2.8.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">id</span><span style="color: #a65700;">></span>attach-javadocs<span style="color: #a65700;"></</span><span style="color: #5f5035;">id</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>install<span style="color: #a65700;"></</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>jar<span style="color: #a65700;"></</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>org.codehaus.mojo<span style="color: #a65700;"></</span><span style="color: #5f5035;">groupId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>exec-maven-plugin<span style="color: #a65700;"></</span><span style="color: #5f5035;">artifactId</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>1.2.1<span style="color: #a65700;"></</span><span style="color: #5f5035;">version</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>install<span style="color: #a65700;"></</span><span style="color: #5f5035;">phase</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>java<span style="color: #a65700;"></</span><span style="color: #5f5035;">goal</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">goals</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">execution</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">executions</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">mainClass</span><span style="color: #a65700;">></span>com.paulius.hibernateviajpa.util.HibernateDDLGenerator<span style="color: #a65700;"></</span><span style="color: #5f5035;">mainClass</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">arguments</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>${project.basedir}/target/schema.sql<span style="color: #a65700;"></</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>com.paulius.hibernateviajpa.entity<span style="color: #a65700;"></</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>org.hibernate.dialect.MySQLDialect<span style="color: #a65700;"></</span><span style="color: #5f5035;">argument</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">arguments</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">configuration</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugin</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">plugins</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">build</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">project</span><span style="color: #a65700;">></span>
</pre>
<h2 style="font-size: 18px; font-weight: bold;">
- Creating Persistence configuration file</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../resources/META-INF/</span> folder create <span style="font-family: Courier New, Courier, monospace;">persistence.xml</span> file. The <span style="font-family: Courier New, Courier, monospace;">persistence.xml</span> file is a standard configuration
file in JPA. It has to be included in the <span style="font-family: Courier New, Courier, monospace;">META-INF</span>
directory inside of the web application archive that contains the entity beans. The <span style="font-family: Courier New, Courier, monospace;">persistence.xml</span> file must define a <span style="font-family: Courier New, Courier, monospace;">persistence-unit</span> with a unique name. The provider
element specifies the underlying implementation of the <span style="font-family: Courier New, Courier, monospace;">JPA EntityManager</span>
which in our case is <span style="font-family: Courier New, Courier, monospace;">Hibernate</span>. Class element defines
full java class name. This class must be persistence entity.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><?</span><span style="color: maroon; font-weight: bold;">xml</span><span style="color: #004a43;"> </span><span style="color: #074726;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #7d0045;">1.0</span><span style="color: #0000e6;">"</span><span style="color: #004a43;"> </span><span style="color: #074726;">encoding</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">UTF-8</span><span style="color: #0000e6;">"</span><span style="color: #004a43;">?></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">persistence</span> <span style="color: #274796;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">2.0</span><span style="color: #0000e6;">"</span> <span style="color: #666616;">xmlns</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">java.sun.com</span><span style="color: #40015a;">/xml/ns/persistence</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">persistence-unit</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">entityManager</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">transaction-type</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">RESOURCE_LOCAL</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">provider</span><span style="color: #a65700;">></span>org.hibernate.ejb.HibernatePersistence<span style="color: #a65700;"></</span><span style="color: #5f5035;">provider</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">class</span><span style="color: #a65700;">></span>com.paulius.hibernateviajpa.entity.Account<span style="color: #a65700;"></</span><span style="color: #5f5035;">class</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">exclude-unlisted-classes</span><span style="color: #a65700;">></span>true<span style="color: #a65700;"></</span><span style="color: #5f5035;">exclude-unlisted-classes</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">validation-mode</span><span style="color: #a65700;">></span>NONE<span style="color: #a65700;"></</span><span style="color: #5f5035;">validation-mode</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">properties</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">hibernate.dialect</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.hibernate.dialect.MySQLDialect</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">hibernate.show_sql</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">false</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">properties</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">persistence-unit</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">persistence></span><span style="color: #a65700;"></span>
</pre>
<h2 style="font-size: 18px; font-weight: bold;">
- Creating Spring application context file and configuring EntityManager</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../webapp/WEB-INF/</span> folder create a file named
<span style="font-family: Courier New, Courier, monospace;">applicationContext.xml</span>.
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><?</span><span style="color: maroon; font-weight: bold;">xml</span><span style="color: #004a43;"> </span><span style="color: #074726;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #7d0045;">1.0</span><span style="color: #0000e6;">"</span><span style="color: #004a43;"> </span><span style="color: #074726;">encoding</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">UTF-8</span><span style="color: #0000e6;">"</span><span style="color: #004a43;">?></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">beans</span> <span style="color: #666616;">xmlns</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">xsi</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.w3.org</span><span style="color: #40015a;">/2001/XMLSchema-instance</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">tx</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/tx</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">p</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/p</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">mvc</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/mvc</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">context</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/context</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xsi</span><span style="color: purple;">:</span><span style="color: #074726;">schemaLocation</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;"></span>
<span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans</span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans/spring-beans-3.2.xsd</span><span style="color: #0000e6;"></span>
<span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/mvc</span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/mvc/spring-mvc-3.2.xsd</span><span style="color: #0000e6;"></span>
<span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/context</span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/context/spring-context-3.2.xsd</span><span style="color: #0000e6;"></span>
<span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/tx</span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/tx/spring-tx-3.2.xsd</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #666616;">context</span><span style="color: purple;">:</span><span style="color: #5f5035;">component-scan</span> <span style="color: #274796;">base-package</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">com.paulius.hibernateviajpa</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #666616;">mvc</span><span style="color: purple;">:</span><span style="color: #5f5035;">annotation-driven</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">jdbcPropertyConfigurer</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.beans.factory.config.PropertyPlaceholderConfigurer</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:location</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">classpath:project.properties</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">dataSource</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.jdbc.datasource.DriverManagerDataSource</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:driverClassName</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">${jdbc.driverClassName}</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:url</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">${jdbc.url}</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:username</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">${jdbc.username}</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:password</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">${jdbc.password}</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">persistenceUnitManager</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">persistenceXmlLocations</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">list</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">value</span><span style="color: #a65700;">></span>classpath*:META-INF/persistence.xml<span style="color: #a65700;"></</span><span style="color: #5f5035;">value</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">list</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">property</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">defaultDataSource</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">ref</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">dataSource</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">bean</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">entityManagerFactory</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">persistenceUnitManager</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">ref</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">persistenceUnitManager</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">persistenceUnitName</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">entityManager</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">bean</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">transactionManager</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.orm.jpa.JpaTransactionManager</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">entityManagerFactory</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">ref</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">entityManagerFactory</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">bean</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #666616;">tx</span><span style="color: purple;">:</span><span style="color: #5f5035;">annotation-driven</span> <span style="color: #274796;">transaction-manager</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">transactionManager</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">beans</span><span style="color: #a65700;">></span>
</pre>
</div>
</div>
<h2 style="font-size: 18px;">
- Creating project properties file for JDBC configuration</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../resources/</span> folder create a file named <span style="font-family: Courier New, Courier, monospace;">project.properties</span>.
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;">#JDBC configuration
jdbc.driverClassName<span style="color: #808030;">=</span>com.mysql.jdbc.Driver
jdbc.url<span style="color: #808030;">=</span>jdbc:mysql://localhost:<span style="color: #008c00;">3306</span>/hibernate_via_jpa?useEncoding=true&amp;characterEncoding=UTF-<span style="color: #008c00;">8</span>
jdbc.username<span style="color: #808030;">=</span>root
jdbc.password<span style="color: #808030;">=</span>root
</pre>
<h2 style="font-size: 18px; font-weight: bold;">
- Creating Spring dispatcher context file</h2>
<div>
<span style="text-align: justify;">Under </span><span style="font-family: Courier New, Courier, monospace; text-align: justify;">../webapp/WEB-INF/</span><span style="text-align: justify;"> folder create a file named </span><span style="font-family: Courier New, Courier, monospace; text-align: justify;">dispatcher-servlet.xml</span><span style="text-align: justify;">.</span></div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><?</span><span style="color: maroon; font-weight: bold;">xml</span><span style="color: #004a43;"> </span><span style="color: #074726;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #7d0045;">1.0</span><span style="color: #0000e6;">"</span><span style="color: #004a43;"> </span><span style="color: #074726;">encoding</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">UTF-8</span><span style="color: #0000e6;">"</span><span style="color: #004a43;">?></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">beans</span> <span style="color: #666616;">xmlns</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">xsi</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.w3.org</span><span style="color: #40015a;">/2001/XMLSchema-instance</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">p</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/p</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xsi</span><span style="color: purple;">:</span><span style="color: #074726;">schemaLocation</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans</span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.springframework.org</span><span style="color: #40015a;">/schema/beans/spring-beans-3.2.xsd</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">urlMapping</span><span style="color: #0000e6;">"</span> <span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.web.servlet.handler.SimpleUrlHandlerMapping</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">property</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">mappings</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">props</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">prop</span> <span style="color: #274796;">key</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">index.htm</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>indexController<span style="color: #a65700;"></</span><span style="color: #5f5035;">prop</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">props</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">property</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">bean</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">id</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">viewResolver</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.web.servlet.view.InternalResourceViewResolver</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:prefix</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">/WEB-INF/views/</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:suffix</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">.jsp</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">bean</span> <span style="color: #274796;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">indexController</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">class</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">org.springframework.web.servlet.mvc.ParameterizableViewController</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">p:viewName</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">index</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">beans</span><span style="color: #a65700;">></span>
</pre>
<div>
<span style="text-align: justify;"><br /></span></div>
<div>
<h2 style="font-size: 18px;">
- Creating web application deployment descriptor</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../webapp/WEB-INF/</span> folder create a file named <span style="font-family: Courier New, Courier, monospace;">web.xml</span>.
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><?</span><span style="color: maroon; font-weight: bold;">xml</span><span style="color: #004a43;"> </span><span style="color: #074726;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #7d0045;">1.0</span><span style="color: #0000e6;">"</span><span style="color: #004a43;"> </span><span style="color: #074726;">encoding</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">UTF-8</span><span style="color: #0000e6;">"</span><span style="color: #004a43;">?></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">web-app</span> <span style="color: #666616;">xmlns</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">java.sun.com</span><span style="color: #40015a;">/xml/ns/javaee</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xmlns</span><span style="color: purple;">:</span><span style="color: #074726;">xsi</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">www.w3.org</span><span style="color: #40015a;">/2001/XMLSchema-instance</span><span style="color: #0000e6;">"</span>
<span style="color: #666616;">xsi</span><span style="color: purple;">:</span><span style="color: #074726;">schemaLocation</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">java.sun.com</span><span style="color: #40015a;">/xml/ns/javaee</span><span style="color: #0000e6;"> </span><span style="color: #666616;">http</span><span style="color: purple;">:</span><span style="color: maroon; font-weight: bold;">//</span><span style="color: #5555dd;">java.sun.com</span><span style="color: #40015a;">/xml/ns/javaee/web-app_3_0.xsd</span><span style="color: #0000e6;">"</span>
<span style="color: #274796;">version</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"</span><span style="color: #0000e6;">3.0</span><span style="color: #0000e6;">"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">context-param</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">param-name</span><span style="color: #a65700;">></span>contextConfigLocation<span style="color: #a65700;"></</span><span style="color: #5f5035;">param-name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">param-value</span><span style="color: #a65700;">></span>/WEB-INF/applicationContext.xml<span style="color: #a65700;"></</span><span style="color: #5f5035;">param-value</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">context-param</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">listener</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">listener-class</span><span style="color: #a65700;">></span>org.springframework.web.context.ContextLoaderListener<span style="color: #a65700;"></</span><span style="color: #5f5035;">listener-class</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">listener</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">servlet</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">servlet-name</span><span style="color: #a65700;">></span>dispatcher<span style="color: #a65700;"></</span><span style="color: #5f5035;">servlet-name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">servlet-class</span><span style="color: #a65700;">></span>org.springframework.web.servlet.DispatcherServlet<span style="color: #a65700;"></</span><span style="color: #5f5035;">servlet-class</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">init-param</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">param-name</span><span style="color: #a65700;">></span>contextConfigLocation<span style="color: #a65700;"></</span><span style="color: #5f5035;">param-name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">param-value</span><span style="color: #a65700;">></span>/WEB-INF/dispatcher-servlet.xml<span style="color: #a65700;"></</span><span style="color: #5f5035;">param-value</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">init-param</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">load-on-startup</span><span style="color: #a65700;">></span>1<span style="color: #a65700;"></</span><span style="color: #5f5035;">load-on-startup</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">servlet</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">servlet-mapping</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">servlet-name</span><span style="color: #a65700;">></span>dispatcher<span style="color: #a65700;"></</span><span style="color: #5f5035;">servlet-name</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">url-pattern</span><span style="color: #a65700;">></span>*.htm<span style="color: #a65700;"></</span><span style="color: #5f5035;">url-pattern</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">servlet-mapping</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">session-config</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">session-timeout</span><span style="color: #a65700;">></span>30<span style="color: #a65700;"></</span><span style="color: #5f5035;">session-timeout</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">session-config</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">welcome-file-list</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">welcome-file</span><span style="color: #a65700;">></span>redirect.jsp<span style="color: #a65700;"></</span><span style="color: #5f5035;">welcome-file</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">welcome-file-list</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">web-app</span><span style="color: #a65700;">></span>
</pre>
<h2 style="font-size: 18px;">
- Creating redirect.jsp file</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../webapp/</span> folder create a file named <span style="font-family: Courier New, Courier, monospace;">redirect.jsp</span>. All views should be stored under the <span style="font-family: Courier New, Courier, monospace;">WEB-INF</span> folder so that they are not accessible except through controller process. This <span style="font-family: Courier New, Courier, monospace;">JSP</span> is here to provide a redirect to the dispatcher servlet but should be the only <span style="font-family: Courier New, Courier, monospace;">JSP</span> outside of <span style="font-family: Courier New, Courier, monospace;">WEB-INF</span>.
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="background: #ffffe8; color: #5f5035;"><%@</span><span style="background: #ffffe8; color: black;">page contentType=</span><span style="background: #ffffe8; color: #0000e6;">"text/html"</span><span style="background: #ffffe8; color: black;"> pageEncoding=</span><span style="background: #ffffe8; color: #0000e6;">"UTF-8"</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
<span style="background: #ffffe8; color: #5f5035;"><%</span><span style="background: #ffffe8; color: black;"> response</span><span style="background: #ffffe8; color: #808030;">.</span><span style="background: #ffffe8; color: black;">sendRedirect</span><span style="background: #ffffe8; color: #808030;">(</span><span style="background: #ffffe8; color: #0000e6;">"index.htm"</span><span style="background: #ffffe8; color: #808030;">)</span><span style="background: #ffffe8; color: purple;">;</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
</pre>
<h2 style="font-size: 18px;">
- Creating the main view file</h2>
Under <span style="font-family: Courier New, Courier, monospace;">../webapp/WEB-INF/views/</span> folder create a file named <span style="font-family: Courier New, Courier, monospace;">index.jsp</span>.
<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: #004a43;"><!DOCTYPE html></span>
<span style="background: #ffffe8; color: #5f5035;"><%@</span><span style="background: #ffffe8; color: black;">page contentType=</span><span style="background: #ffffe8; color: #0000e6;">"text/html"</span><span style="background: #ffffe8; color: black;"> pageEncoding=</span><span style="background: #ffffe8; color: #0000e6;">"UTF-8"</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
<span style="background: #ffffe8; color: #5f5035;"><%@</span><span style="background: #ffffe8; color: black;"> taglib uri=</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: #5555dd;">http://www.springframework.org/tags/form</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: black;"> prefix=</span><span style="background: #ffffe8; color: #0000e6;">"form"</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
<span style="background: #ffffe8; color: #5f5035;"><%@</span><span style="background: #ffffe8; color: black;"> taglib uri=</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: #5555dd;">http://www.springframework.org/tags</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: black;"> prefix=</span><span style="background: #ffffe8; color: #0000e6;">"spring"</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
<span style="background: #ffffe8; color: #5f5035;"><%@</span><span style="background: #ffffe8; color: black;"> taglib prefix=</span><span style="background: #ffffe8; color: #0000e6;">"c"</span><span style="background: #ffffe8; color: black;"> uri=</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: #5555dd;">http://java.sun.com/jsp/jstl/core</span><span style="background: #ffffe8; color: #0000e6;">"</span><span style="background: #ffffe8; color: black;"> </span><span style="background: #ffffe8; color: #5f5035;">%></span>
<span style="color: dimgrey;"><%--@elvariable id="accounts" type="java.util.List<com.paulius.hibernateviajpa.entity.Account>"--%></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">html</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">head</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">meta</span><span style="color: #274796;"> </span><span style="color: #074726;">http-equiv</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"Content-Type"</span><span style="color: #274796;"> </span><span style="color: #074726;">content</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"text/html; charset=UTF-8"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">title</span><span style="color: #a65700;">></span>Hibernate Via JPA Example<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">title</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">style</span><span style="color: #a65700;"> type="text/css"></span>
<span style="color: #808030;">.</span>label <span style="color: purple;">{</span>
<span style="color: #bb7977; font-weight: bold;">display</span><span style="color: #808030;">:</span> <span style="color: #074726;">block</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">style</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">head</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">body</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">h1</span><span style="color: #a65700;">></span>Hibernate Via JPA Example Application<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">h1</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #274796;"> </span><span style="color: #074726;">action</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${pageContext.servletContext.contextPath}/index.htm"</span><span style="color: #274796;"> commandName</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"index"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #274796;"> cssClass</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"label"</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"name"</span><span style="color: #a65700;">></span>Name: <span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">input</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"name"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #274796;"> cssClass</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"label"</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"email"</span><span style="color: #a65700;">></span>Email address: <span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">input</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"email"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #274796;"> cssClass</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"label"</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"username"</span><span style="color: #a65700;">></span>Username: <span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">input</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"username"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #274796;"> cssClass</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"label"</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"password"</span><span style="color: #a65700;">></span>Password: <span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">label</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:password</span><span style="color: #274796;"> path</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"password"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">input</span><span style="color: #274796;"> </span><span style="color: #074726;">type</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"submit"</span><span style="color: #274796;"> </span><span style="color: #074726;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"Register user"</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #5f5035;">:</span><span style="color: maroon; font-weight: bold;">form</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">hr</span><span style="color: #a65700;">/></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">a</span><span style="color: #274796;"> </span><span style="color: #074726;">href</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${pageContext.servletContext.contextPath}/index/show-users.htm"</span><span style="color: #a65700;">></span>Show all users<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">a</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">c:if</span><span style="color: #274796;"> test</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${not empty accounts}"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">h3</span><span style="color: #a65700;">></span>Registered Users:<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">h3</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">table</span><span style="color: #274796;"> </span><span style="color: #074726;">border</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"1"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">thead</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">tr</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>Name<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>Email<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>Username<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">th</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">tr</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">thead</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">tbody</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: #5f5035;">c:forEach</span><span style="color: #274796;"> var</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"account"</span><span style="color: #274796;"> items</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${accounts}"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">tr</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span><span style="color: #a65700;"><</span><span style="color: #5f5035;">c:out</span><span style="color: #274796;"> </span><span style="color: #074726;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${account.name}"</span><span style="color: #a65700;">/></span><span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span><span style="color: #a65700;"><</span><span style="color: #5f5035;">c:out</span><span style="color: #274796;"> </span><span style="color: #074726;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${account.email}"</span><span style="color: #a65700;">/></span><span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span><span style="color: #a65700;"><</span><span style="color: #5f5035;">c:out</span><span style="color: #274796;"> </span><span style="color: #074726;">value</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"${account.username}"</span><span style="color: #a65700;">/></span><span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">td</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">tr</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">c:forEach</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">tbody</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">table</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: #5f5035;">c:if</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">div</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">body</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">html</span><span style="color: #a65700;">></span>
</pre>
<h2 style="font-size: 18px;">
- Creating BaseEntity class. The parent class of all the entities</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.entity.BaseEntity</span>.<br />
<br />
<div style="text-align: justify;">
This class is the parent class of all the entities in this application. This example contains only one: <span style="font-family: Courier New, Courier, monospace;">Account</span> entity. Choosing to use inheritance in <span style="font-family: Courier New, Courier, monospace;">JPA</span> it is up to a developer. I prefer this approach so that the primary key of the entity is coming from the parent class and you don't have to define it in each entity.</div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">entity</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Column</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">GeneratedValue</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">GenerationType</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Id</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">MappedSuperclass</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">Serializable</span><span style="color: purple;">;</span>
@MappedSuperclass
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">abstract</span> <span style="color: maroon; font-weight: bold;">class</span> BaseEntity <span style="color: maroon; font-weight: bold;">implements</span> Serializable <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Id
<span style="color: #808030;">@</span>GeneratedValue<span style="color: #808030;">(</span>strategy <span style="color: #808030;">=</span> GenerationType<span style="color: #808030;">.</span>IDENTITY<span style="color: #808030;">)</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"ID"</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">Long</span> id<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">Long</span> getId<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> id<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating Account class</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.entity.Account</span>.<br />
<br />
This class represents a user in the database.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">entity</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Column</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Entity</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Inheritance</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">InheritanceType</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">Table</span><span style="color: purple;">;</span>
@Entity
@Table(name = "ACCOUNT")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> Account <span style="color: maroon; font-weight: bold;">extends</span> BaseEntity <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"NAME"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"EMAIL"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> email<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"USERNAME"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> username<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>Column<span style="color: #808030;">(</span>name <span style="color: #808030;">=</span> <span style="color: #0000e6;">"PASSWORD"</span><span style="color: #808030;">,</span> nullable <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> password<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setName<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>name <span style="color: #808030;">=</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getEmail<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> email<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setEmail<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> email<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>email <span style="color: #808030;">=</span> email<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getUsername<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> username<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setUsername<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> username<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>username <span style="color: #808030;">=</span> username<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getPassword<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> password<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setPassword<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> password<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>password <span style="color: #808030;">=</span> password<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating AbstractFacade class to perform JPA operations</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.facade.AbstractFacade</span>.<br />
<br />
<div style="text-align: justify;">
This class is a generic class and has to be inherited by all other <span style="font-family: Courier New, Courier, monospace;">Facade</span> class. In this case only one <span style="font-family: Courier New, Courier, monospace;">AccountFacade</span> is extending this class. This approach has been chosen because this class defines only generic methods like: create, find, edit, delete - the standard operations which most likely is going to be used among most of the entities. To have a separate facade for other entities is a benefit so that these methods are used from the parent class and all other - entity specific method is created in the specific facade.</div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">facade</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">EntityManager</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">PersistenceContext</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> javax</span><span style="color: #808030;">.</span><span style="color: #004a43;">persistence</span><span style="color: #808030;">.</span><span style="color: #004a43;">criteria</span><span style="color: #808030;">.</span><span style="color: #004a43;">CriteriaQuery</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: #808030;">.</span><span style="color: #004a43;">List</span><span style="color: purple;">;</span>
@SuppressWarnings("unchecked")
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">abstract</span> <span style="color: maroon; font-weight: bold;">class</span> AbstractFacade<T> <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>PersistenceContext<span style="color: #808030;">(</span>unitName <span style="color: #808030;">=</span> <span style="color: #0000e6;">"entityManager"</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">private</span> EntityManager entityManager<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;"><</span>T<span style="color: #808030;">></span> entityClass<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> AbstractFacade<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;"><</span>T<span style="color: #808030;">></span> entityClass<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityClass <span style="color: #808030;">=</span> entityClass<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> AbstractFacade<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">protected</span> EntityManager getEntityManager<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> create<span style="color: #808030;">(</span>T entity<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>persist<span style="color: #808030;">(</span>entity<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> edit<span style="color: #808030;">(</span>T entity<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>merge<span style="color: #808030;">(</span>entity<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> remove<span style="color: #808030;">(</span>T entity<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>remove<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>merge<span style="color: #808030;">(</span>entity<span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> T find<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Long</span> primaryKey<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>find<span style="color: #808030;">(</span>entityClass<span style="color: #808030;">,</span> primaryKey<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">List</span><span style="color: #808030;"><</span>T<span style="color: #808030;">></span> findAll<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
CriteriaQuery cq <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>getCriteriaBuilder<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>createQuery<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
cq<span style="color: #808030;">.</span>select<span style="color: #808030;">(</span>cq<span style="color: #808030;">.</span>from<span style="color: #808030;">(</span>entityClass<span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>entityManager<span style="color: #808030;">.</span>createQuery<span style="color: #808030;">(</span>cq<span style="color: #808030;">)</span><span style="color: #808030;">.</span>getResultList<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating AccountFacade class to perform JPA operations related to Account entity</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.facade.AccountFacade</span>.<br />
<br />
This class is used to perform operation for the specific entity.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">facade</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">entity</span><span style="color: #808030;">.</span><span style="color: #004a43;">Account</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">stereotype</span><span style="color: #808030;">.</span><span style="color: #004a43;">Repository</span><span style="color: purple;">;</span>
@Repository
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> AccountFacade <span style="color: maroon; font-weight: bold;">extends</span> AbstractFacade<Account> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">public</span> AccountFacade<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">super</span><span style="color: #808030;">(</span>Account<span style="color: #808030;">.</span>class<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating user RegistrationForm model attribute class</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.form.RegistrationForm</span>.<br />
<br />
This class is used as <span style="font-family: Courier New, Courier, monospace;">Spring</span> model attribute which refers to a property of the <span style="font-family: Courier New, Courier, monospace;">Model</span> object.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">form</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">Serializable</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> RegistrationForm <span style="color: maroon; font-weight: bold;">implements</span> Serializable <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> email<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> username<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: #bb7977; font-weight: bold;">String</span> password<span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setName<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> name<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>name <span style="color: #808030;">=</span> name<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getEmail<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> email<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setEmail<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> email<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>email <span style="color: #808030;">=</span> email<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getUsername<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> username<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setUsername<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> username<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>username <span style="color: #808030;">=</span> username<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> getPassword<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> password<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977;">void</span> setPassword<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> password<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">this</span><span style="color: #808030;">.</span>password <span style="color: #808030;">=</span> password<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating user RegistrationController class</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.controller.RegistrationController</span>.<br />
<br />
This class is used to create actual user and store his details in the database. Also it has a facility to retrieve all users later to be displayed in the view.<br />
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">controller</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">entity</span><span style="color: #808030;">.</span><span style="color: #004a43;">Account</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">facade</span><span style="color: #808030;">.</span><span style="color: #004a43;">AccountFacade</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">form</span><span style="color: #808030;">.</span><span style="color: #004a43;">RegistrationForm</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">beans</span><span style="color: #808030;">.</span><span style="color: #004a43;">factory</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">Autowired</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">stereotype</span><span style="color: #808030;">.</span><span style="color: #004a43;">Controller</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">transaction</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">Transactional</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">web</span><span style="color: #808030;">.</span><span style="color: #004a43;">bind</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">ModelAttribute</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">web</span><span style="color: #808030;">.</span><span style="color: #004a43;">bind</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">RequestMapping</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">springframework</span><span style="color: #808030;">.</span><span style="color: #004a43;">web</span><span style="color: #808030;">.</span><span style="color: #004a43;">bind</span><span style="color: #808030;">.</span><span style="color: #004a43;">annotation</span><span style="color: #808030;">.</span><span style="color: #004a43;">RequestMethod</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: #808030;">.</span><span style="color: #004a43;">List</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: #808030;">.</span><span style="color: #004a43;">Map</span><span style="color: purple;">;</span>
@Controller
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> RegistrationController <span style="color: purple;">{</span>
<span style="color: #808030;">@</span>Autowired
<span style="color: maroon; font-weight: bold;">private</span> AccountFacade accountFacade<span style="color: purple;">;</span>
<span style="color: #808030;">@</span>RequestMapping<span style="color: #808030;">(</span>value <span style="color: #808030;">=</span> <span style="color: #0000e6;">"index"</span><span style="color: #808030;">,</span> method <span style="color: #808030;">=</span> RequestMethod<span style="color: #808030;">.</span>GET<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> showMainView<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: #0000e6;">"index"</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #808030;">@</span>ModelAttribute<span style="color: #808030;">(</span><span style="color: #0000e6;">"index"</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">public</span> RegistrationForm getRegistrationForm<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: maroon; font-weight: bold;">new</span> RegistrationForm<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #808030;">@</span>Transactional
<span style="color: #808030;">@</span>RequestMapping<span style="color: #808030;">(</span>value <span style="color: #808030;">=</span> <span style="color: #0000e6;">"index"</span><span style="color: #808030;">,</span> method <span style="color: #808030;">=</span> RequestMethod<span style="color: #808030;">.</span>POST<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> processRegisterUser<span style="color: #808030;">(</span><span style="color: #808030;">@</span>ModelAttribute<span style="color: #808030;">(</span><span style="color: #0000e6;">"index"</span><span style="color: #808030;">)</span> RegistrationForm form<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
Account account <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> Account<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
account<span style="color: #808030;">.</span>setName<span style="color: #808030;">(</span>form<span style="color: #808030;">.</span>getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
account<span style="color: #808030;">.</span>setEmail<span style="color: #808030;">(</span>form<span style="color: #808030;">.</span>getEmail<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
account<span style="color: #808030;">.</span>setUsername<span style="color: #808030;">(</span>form<span style="color: #808030;">.</span>getUsername<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
account<span style="color: #808030;">.</span>setPassword<span style="color: #808030;">(</span>form<span style="color: #808030;">.</span>getPassword<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
accountFacade<span style="color: #808030;">.</span>create<span style="color: #808030;">(</span>account<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: #0000e6;">"index"</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #808030;">@</span>Transactional
<span style="color: #808030;">@</span>RequestMapping<span style="color: #808030;">(</span>value <span style="color: #808030;">=</span> <span style="color: #0000e6;">"index/show-users"</span><span style="color: #808030;">,</span> method <span style="color: #808030;">=</span> RequestMethod<span style="color: #808030;">.</span>GET<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: #bb7977; font-weight: bold;">String</span> showAllUsers<span style="color: #808030;">(</span>Map<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">Object</span><span style="color: #808030;">></span> model<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: #bb7977; font-weight: bold;">List</span><span style="color: #808030;"><</span>Account<span style="color: #808030;">></span> accounts <span style="color: #808030;">=</span> accountFacade<span style="color: #808030;">.</span>findAll<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
model<span style="color: #808030;">.</span>put<span style="color: #808030;">(</span><span style="color: #0000e6;">"accounts"</span><span style="color: #808030;">,</span> accounts<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">return</span> <span style="color: #0000e6;">"index"</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<h2 style="font-size: 18px;">
- Creating HibernateDDLGenerator class</h2>
Create a class: <span style="font-family: Courier New, Courier, monospace;">com.paulius.hibernateviajpa.util.HibernateDDLGenerator</span>.<br />
<br />
<div style="text-align: justify;">
This class is used to generate <span style="font-family: Courier New, Courier, monospace;">MySQL</span> schema - <span style="font-family: Courier New, Courier, monospace;">SQL</span> queries to create all tables, indexes, foreign keys. Depending on the provided dialect Hibernate will generate <span style="font-family: Courier New, Courier, monospace;">SQL</span> queries for the specific engine. In this case <span style="font-family: Courier New, Courier, monospace;">MySQL</span> is used so it will be <span style="font-family: Courier New, Courier, monospace;">MySQL</span> queries. Sometimes people are using Hibernate to update database schema automatically once application is being deployed - this is unsafe and definitely should not be used in production, because you don't know what Hibernate is doing in the background and you can't rely on automatic updates, you have to be in control of that yourself. The <span style="font-family: Courier New, Courier, monospace;">main</span> method of this class will be called when <span style="font-family: Courier New, Courier, monospace;">Maven</span> <span style="font-family: Courier New, Courier, monospace;">install</span> command is executed and generated schema will be placed under: <span style="font-family: Courier New, Courier, monospace;">${project.basedir}/target/schema.sql</span>. </div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">package</span><span style="color: #004a43;"> com</span><span style="color: #808030;">.</span><span style="color: #004a43;">paulius</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernateviajpa</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernate</span><span style="color: #808030;">.</span><span style="color: #004a43;">cfg</span><span style="color: #808030;">.</span><span style="color: #004a43;">Configuration</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernate</span><span style="color: #808030;">.</span><span style="color: #004a43;">cfg</span><span style="color: #808030;">.</span><span style="color: #004a43;">Environment</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> org</span><span style="color: #808030;">.</span><span style="color: #004a43;">hibernate</span><span style="color: #808030;">.</span><span style="color: #004a43;">tool</span><span style="color: #808030;">.</span><span style="color: #004a43;">hbm2ddl</span><span style="color: #808030;">.</span><span style="color: #004a43;">SchemaExport</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">File</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">io</span><span style="color: #808030;">.</span><span style="color: #004a43;">IOException</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">net</span><span style="color: #808030;">.</span><span style="color: #004a43;">URL</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: #808030;">.</span><span style="color: #004a43;">Enumeration</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">import</span><span style="color: #004a43;"> java</span><span style="color: #808030;">.</span><span style="color: #004a43;">util</span><span style="color: #808030;">.</span><span style="color: #004a43;">LinkedList</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">class</span> HibernateDDLGenerator <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">public</span> <span style="color: maroon; font-weight: bold;">static</span> <span style="color: #bb7977;">void</span> main<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span><span style="color: #808030;">[</span><span style="color: #808030;">]</span> args<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
execute<span style="color: #808030;">(</span>args<span style="color: #808030;">[</span><span style="color: #008c00;">0</span><span style="color: #808030;">]</span><span style="color: #808030;">,</span> args<span style="color: #808030;">[</span><span style="color: #008c00;">1</span><span style="color: #808030;">]</span><span style="color: #808030;">,</span> args<span style="color: #808030;">[</span><span style="color: #008c00;">2</span><span style="color: #808030;">]</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: maroon; font-weight: bold;">static</span> Iterable<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> getClasses<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> packageName<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">throws</span> <span style="color: #bb7977; font-weight: bold;">ClassNotFoundException</span><span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">IOException</span> <span style="color: purple;">{</span>
<span style="color: #bb7977; font-weight: bold;">ClassLoader</span> classLoader <span style="color: #808030;">=</span> <span style="color: #bb7977; font-weight: bold;">Thread</span><span style="color: #808030;">.</span>currentThread<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>getContextClassLoader<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: #bb7977; font-weight: bold;">String</span> path <span style="color: #808030;">=</span> packageName<span style="color: #808030;">.</span>replace<span style="color: #808030;">(</span><span style="color: #0000e6;">'.'</span><span style="color: #808030;">,</span> <span style="color: #0000e6;">'/'</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: #bb7977; font-weight: bold;">Enumeration</span><span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">URL</span><span style="color: #808030;">></span> resources <span style="color: #808030;">=</span> classLoader<span style="color: #808030;">.</span>getResources<span style="color: #808030;">(</span>path<span style="color: #808030;">)</span><span style="color: purple;">;</span>
LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">File</span><span style="color: #808030;">></span> dirs <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> LinkedList<span style="color: #808030;"><</span><span style="color: #808030;">></span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">while</span> <span style="color: #808030;">(</span>resources<span style="color: #808030;">.</span>hasMoreElements<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: #bb7977; font-weight: bold;">URL</span> resource <span style="color: #808030;">=</span> resources<span style="color: #808030;">.</span>nextElement<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
dirs<span style="color: #808030;">.</span>add<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">new</span> <span style="color: #bb7977; font-weight: bold;">File</span><span style="color: #808030;">(</span>resource<span style="color: #808030;">.</span>getFile<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> classes <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> LinkedList<span style="color: #808030;"><</span><span style="color: #808030;">></span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">for</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">File</span> directory <span style="color: #808030;">:</span> dirs<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
classes<span style="color: #808030;">.</span>addAll<span style="color: #808030;">(</span>findClasses<span style="color: #808030;">(</span>directory<span style="color: #808030;">,</span> packageName<span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">return</span> classes<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: maroon; font-weight: bold;">static</span> LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> findClasses<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">File</span> directory<span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span> packageName<span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">throws</span> <span style="color: #bb7977; font-weight: bold;">ClassNotFoundException</span> <span style="color: purple;">{</span>
LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> classes <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> LinkedList<span style="color: #808030;"><</span><span style="color: #808030;">></span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span><span style="color: #808030;">!</span>directory<span style="color: #808030;">.</span>exists<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">return</span> classes<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: #bb7977; font-weight: bold;">File</span><span style="color: #808030;">[</span><span style="color: #808030;">]</span> files <span style="color: #808030;">=</span> directory<span style="color: #808030;">.</span>listFiles<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span>files <span style="color: #808030;">!</span><span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">null</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">for</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">File</span> file <span style="color: #808030;">:</span> files<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span>file<span style="color: #808030;">.</span>isDirectory<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
classes<span style="color: #808030;">.</span>addAll<span style="color: #808030;">(</span>findClasses<span style="color: #808030;">(</span>file<span style="color: #808030;">,</span> packageName <span style="color: #808030;">+</span> <span style="color: #0000e6;">"."</span> <span style="color: #808030;">+</span> file<span style="color: #808030;">.</span>getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span> <span style="color: maroon; font-weight: bold;">else</span> <span style="color: maroon; font-weight: bold;">if</span> <span style="color: #808030;">(</span>file<span style="color: #808030;">.</span>getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>endsWith<span style="color: #808030;">(</span><span style="color: #0000e6;">".class"</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
classes<span style="color: #808030;">.</span>add<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">.</span>forName<span style="color: #808030;">(</span>
packageName <span style="color: #808030;">+</span> <span style="color: #0000e6;">'.'</span>
<span style="color: #808030;">+</span> file<span style="color: #808030;">.</span>getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>substring<span style="color: #808030;">(</span><span style="color: #008c00;">0</span><span style="color: #808030;">,</span> file<span style="color: #808030;">.</span>getName<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">.</span>length<span style="color: #808030;">(</span><span style="color: #808030;">)</span> <span style="color: #808030;">-</span> <span style="color: #008c00;">6</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">return</span> classes<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: maroon; font-weight: bold;">static</span> LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> findAnnotatedClasses<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> packageName<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
LinkedList<span style="color: #808030;"><</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;">></span> classes <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> LinkedList<span style="color: #808030;"><</span><span style="color: #808030;">></span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">try</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">for</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Class</span> clazz <span style="color: #808030;">:</span> getClasses<span style="color: #808030;">(</span>packageName<span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
classes<span style="color: #808030;">.</span>add<span style="color: #808030;">(</span>clazz<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span> <span style="color: maroon; font-weight: bold;">catch</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">ClassNotFoundException</span> ex<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">throw</span> <span style="color: maroon; font-weight: bold;">new</span> <span style="color: #bb7977; font-weight: bold;">RuntimeException</span><span style="color: #808030;">(</span><span style="color: #0000e6;">"Class not found exception occurred."</span><span style="color: #808030;">,</span> ex<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span> <span style="color: maroon; font-weight: bold;">catch</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">IOException</span> ex<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
<span style="color: maroon; font-weight: bold;">throw</span> <span style="color: maroon; font-weight: bold;">new</span> <span style="color: #bb7977; font-weight: bold;">RuntimeException</span><span style="color: #808030;">(</span><span style="color: #0000e6;">"IO exception occurred."</span><span style="color: #808030;">,</span> ex<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">return</span> classes<span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: maroon; font-weight: bold;">private</span> <span style="color: maroon; font-weight: bold;">static</span> <span style="color: #bb7977;">void</span> execute<span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">String</span> fileName<span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span> packageName<span style="color: #808030;">,</span> <span style="color: #bb7977; font-weight: bold;">String</span> dialect<span style="color: #808030;">)</span> <span style="color: purple;">{</span>
Configuration configuration <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> Configuration<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
configuration<span style="color: #808030;">.</span>setProperty<span style="color: #808030;">(</span>Environment<span style="color: #808030;">.</span>DIALECT<span style="color: #808030;">,</span> dialect<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: maroon; font-weight: bold;">for</span> <span style="color: #808030;">(</span><span style="color: #bb7977; font-weight: bold;">Class</span><span style="color: #808030;"><</span><span style="color: #808030;">?</span><span style="color: #808030;">></span> entityClass <span style="color: #808030;">:</span> findAnnotatedClasses<span style="color: #808030;">(</span>packageName<span style="color: #808030;">)</span><span style="color: #808030;">)</span> <span style="color: purple;">{</span>
configuration<span style="color: #808030;">.</span>addAnnotatedClass<span style="color: #808030;">(</span>entityClass<span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
SchemaExport schemaExport <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">new</span> SchemaExport<span style="color: #808030;">(</span>configuration<span style="color: #808030;">)</span><span style="color: purple;">;</span>
schemaExport<span style="color: #808030;">.</span>setDelimiter<span style="color: #808030;">(</span><span style="color: #0000e6;">";"</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
schemaExport<span style="color: #808030;">.</span>setOutputFile<span style="color: #808030;">(</span>fileName<span style="color: #808030;">)</span><span style="color: purple;">;</span>
schemaExport<span style="color: #808030;">.</span>setFormat<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
schemaExport<span style="color: #808030;">.</span>create<span style="color: #808030;">(</span><span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">,</span> <span style="color: maroon; font-weight: bold;">false</span><span style="color: #808030;">)</span><span style="color: purple;">;</span>
<span style="color: purple;">}</span>
<span style="color: purple;">}</span>
</pre>
<div style="text-align: justify;">
Once all the above listed files have been created you are ready to build and deploy your application. Don't forget that before deploying it database has to be created. In the <span style="font-family: Courier New, Courier, monospace;">project.properties</span> file there is<span style="font-family: Courier New, Courier, monospace;">
JDBC</span> configuration which most likely will be changed. Before deploying the application you have to create the database named: <span style="font-family: Courier New, Courier, monospace;">hibernate_via_jpa</span> and execute the following query which has been generated by <span style="font-family: Courier New, Courier, monospace;">HibernateDDLGenerator</span> during <span style="font-family: Courier New, Courier, monospace;">Maven install</span> phase:</div>
</div>
<pre style="background: #ffffff; border: 2px solid #91959C; color: black; font-size: 11px;"><span style="color: maroon; font-weight: bold;">CREATE</span> <span style="color: maroon; font-weight: bold;">TABLE</span> ACCOUNT <span style="color: purple;">(</span>
ID <span style="color: #bb7977;">BIGINT</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span> <span style="color: #074726;">AUTO_INCREMENT</span><span style="color: purple;">,</span>
EMAIL <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
NAME <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
<span style="color: #400000;">PASSWORD</span> <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
USERNAME <span style="color: #bb7977;">VARCHAR</span><span style="color: #808030;">(</span><span style="color: #008c00;">255</span><span style="color: #808030;">)</span> <span style="color: #808030;">NOT</span> <span style="color: #808030;">NULL</span><span style="color: purple;">,</span>
<span style="color: maroon; font-weight: bold;">PRIMARY</span> <span style="color: maroon; font-weight: bold;">KEY</span> <span style="color: #808030;">(</span>ID<span style="color: #808030;">)</span><span style="color: purple;">)</span><span style="color: purple;">;</span>
</pre>
<div style="text-align: justify;">
Once the query has been executed your database is ready. Start up <span style="font-family: Courier New, Courier, monospace;">Tomcat</span> and deploy your application via <span style="font-family: Courier New, Courier, monospace;">Tomcat</span> manager. Once application has been deployed open the browser: <a href="http://localhost:8080/hibernate-via-jpa/index.htm">http://localhost:8080/hibernate-via-jpa/index.htm</a> (I am assuming that your host is <span style="font-family: Courier New, Courier, monospace;">localhost</span> and port <span style="font-family: Courier New, Courier, monospace;">8080</span>) and you will see the following window:<br />
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-g-jv3HPP1c8/Udma8VGsM1I/AAAAAAAAAHg/pcWUSr-V8ak/s1600/application.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="339" src="http://1.bp.blogspot.com/-g-jv3HPP1c8/Udma8VGsM1I/AAAAAAAAAHg/pcWUSr-V8ak/s640/application.png" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Create a user by entering some details in the form fields. Please note, that there are no validation and you have to specify values for all the fields. Once you have created a user, you can click on the link "<span style="font-family: Courier New, Courier, monospace;">Show all users</span>" and all users will be listed in the table just after this link like displayed below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-nQDxflzJ84s/UdmcxFW-vMI/AAAAAAAAAH4/Mx4s1P0h74U/s1600/all-users.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="542" src="http://3.bp.blogspot.com/-nQDxflzJ84s/UdmcxFW-vMI/AAAAAAAAAH4/Mx4s1P0h74U/s640/all-users.png" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Pauliushttp://www.blogger.com/profile/15050693339844956304noreply@blogger.com0