Why use Node.js? You may hear people saying that node.js is not good, poor performance, and not for enterprise application. Before answering this question, we better to have a look to the below pros and cons. Then, we can conclude what kind of application is good to build with node.js, and what is not.
Now, everything is ready, let’s try to run the application and see what is happening… Right-click the project, select “Run As” => “Run on server” With URL : http://localhost:8080/SpringMVCExample/ , You can see … For this web UI, it is using AngularJS, Angular Material, bootstrap and ng-Table to buildup, please reference to the
What is Spring MVC Controller? It helps to: process user requests based on the requested URL call Service Manager => DAO for some database actions, such as insert/update/delete/query output the query result to valid view (JSP) What if my application need to be multiple users? By default, scope of Spring controller is Singaton, only
All DAO classes will extend the GenericDao.java, which includes some common database actions, such as saveOrUpdate() and findByID(). Besides, it is also using to auto-wired the sessionFactory: package com.itblogs.dao; import java.util.List; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.Criteria; import org.springframework.beans.factory.annotation.Autowired; /** * @author Kelvin Hui * @see it-blogs.com *
We will create five model classes mapping to our database tables, please download here: Java Class Files Table Name Address.java ADDRESS Customer.java CUSTOMER Orders.java ORDERS Product.java PRODUCT Shop.java SHOP Nil We don’t need to create a model class for this table. But, we will use @ManyToMany annotation in Orders.java to state this join table
Our example will demonstrate three different table relationships: One-to-One One-to-Many Many-to-Many You can download the schema.sql here, and run it with MySQL client. /* create database */ CREATE DATABASE itblogs DEFAULT CHARACTER SET utf8; USE itblogs; /* One-to-One relationship */ /* SHOP – ADDRESS */ CREATE TABLE ADDRESS( id BIGINT NOT NULL AUTO_INCREMENT,
Let’s try running the app by right-click the project: Choose “Always use this server when running this project. You can change to other web server, such as JBoss or other if you want to. Simply click finish to run it. Done, it is running!!! Please rate this Useful?
Before running the app, you need to setup the web.xml, dispatcher-servlet.xml and other property files properly. Let’s update the web.xml file by right-click src/main/webapp/WEB-INF/web.xml => Open With Text Editor and then update with below settings: <?xml version=”1.0″ encoding=”UTF-8″?> <web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://java.sun.com/xml/ns/javaee” xmlns:web=”http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” id=”WebApp_ID” version=”2.5″> <display-name>SpringMVCExample</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file>
Starting from Spring 3.1, you can run the app without web.xml and dispatch-servlet.xml. Simply storing all your settings in Spring configuration and servlet initizer, it helps to simplify the web configuration with Spring. Let’s create a Spring configuration file called AppConfiguration.java under src/main/java/com/itblogs/config/ as: package com.itblogs.config; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import
Now, we will create two property files to src/main/resources/ , right-click to create a new file called log4j.properties with below settings. After running the app, you can find the log file (SpringMVCExample.log) under C:\logs\ folder. # logger option for File and stdout log4j.rootLogger=INFO, File, stdout # Logging levels : ALL, DEBUG, INFO, WARN, ERROR, FATAL,