Используемые технологии:
JDK 1.6.0_21
Maven 3.0.2
JSF 2.0.3
PrimeFaces 2.2.1
Hibernate 3.6.7
MySQL Java Connector 5.1.17
MySQL 5.5.8
Apache Tomcat 7.0
ШАГ 1: СОЗДАТЬ ТАБЛИЦУ ПОЛЬЗОВАТЕЛЯ
Новая таблица USER создается с помощью следующего скрипта:
|
1
2
3
4
5
6
|
CREATE TABLE USER ( id int(11) NOT NULL, name varchar(45) NOT NULL, surname varchar(45) NOT NULL, PRIMARY KEY (`id`)); |
ШАГ 2: СОЗДАТЬ MAVEN ПРОЕКТ
Maven проект создается как показано ниже. (Его можно создать с помощью Maven или IDE Plug-in).
ШАГ 3: БИБЛИОТЕКИ
JSF, Hibernate и библиотеки зависимостей добавляются в pom.xml Maven. Эти библиотеки будут загружены Центральным репозиторием Maven.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<!-- JSF library --><dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.3</version></dependency><dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.3</version></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version></dependency><!-- Hibernate library --><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.7.Final</version></dependency><dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.1.GA</version></dependency><!-- MySQL Java Connector library --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version></dependency><!-- Log4j library --><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version></dependency> |
Примечание: primefaces-2.2.1.jar также можно скачать по ссылке maven или ниже:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <layout>default</layout></repository> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>2.2.1</version></dependency> |
или же
http://www.primefaces.org/downloads.html
ШАГ 4: СОЗДАТЬ КУЛЬТУРУ БИЛЛА
Создан новый класс управляемых бинов. Этот компонент используется, который может быть связан с компонентами пользовательского интерфейса. Управляемые компоненты содержат свойства, методы получения и установки. Также они могут охватывать методы обработки событий, навигации, проверки и т. Д.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
package com.otv;import java.io.Serializable;import java.util.List;import org.apache.log4j.Logger;import org.hibernate.Session;import org.hibernate.Transaction;import com.otv.hbm.User;import com.otv.util.HibernateUtil;/** * @author onlinetechvision.com * @since 3 Oct 2011 * @version 1.0.0 * */public class UserManagedBean implements Serializable{ private static final long serialVersionUID = 1L; private static Logger log = Logger.getLogger(UserManagedBean.class); private static final String SUCCESS = 'success'; private static final String ERROR = 'error'; private String name; private String surname; private String message; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getMessage() { StringBuffer strBuff = new StringBuffer(); strBuff.append('Name : ').append(this.getName()); strBuff.append(', Surname : ').append(this.getSurname()); this.setMessage(strBuff.toString()); return this.message; } public void setMessage(String message) { this.message = message; } public String save() { String result = null; Session session = HibernateUtil.getSessionFactory().openSession(); User user = new User(); user.setName(this.getName()); user.setSurname(this.getSurname()); Transaction tx = null; try { tx = session.beginTransaction(); session.save(user); tx.commit(); log.debug('New Record : ' + user + ', wasCommitted : ' + tx.wasCommitted()); result = SUCCESS; } catch (Exception e) { if (tx != null) { tx.rollback(); result = ERROR; e.printStackTrace(); } } finally { session.close(); } return result; } public List<User> getUsers() { Session session = HibernateUtil.getSessionFactory().openSession(); List<User> userList = session.createCriteria(User.class).list(); return userList; } public void reset() { this.setName(''); this.setSurname(''); }} |
ШАГ 5: СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЬСКИЙ КЛАСС
Новый класс User создан для моделирования User Table.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package com.otv.hbm;/** * @author onlinetechvision.com * @since 3 Oct 2011 * @version 1.0.0 * */public class User { private int id; private String name; private String surname; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } @Override public String toString() { StringBuffer strBuff = new StringBuffer(); strBuff.append('id : ').append(id); strBuff.append(', name : ').append(name); strBuff.append(', surname : ').append(surname); return strBuff.toString(); }} |
ШАГ 6: СОЗДАТЬ КЛАСС HIBERNATEUTIL
Класс Singleton HibernateUtil создан для создания объекта Hibernate SessionFactory.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package com.otv.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * @author onlinetechvision.com * @since 3 Oct 2011 * @version 1.0.0 * */public class HibernateUtil { private static SessionFactory sessionFactory = null; public static SessionFactory getSessionFactory() { if(sessionFactory == null) { sessionFactory = new Configuration().configure().buildSessionFactory(); } return sessionFactory; } public static void setSessionFactory(SessionFactory sessionFactory) { HibernateUtil.sessionFactory = sessionFactory; }} |
ШАГ 7: СОЗДАТЬ index.xhtml
index.xhtml создан.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<h:head><title>Welcome to JSF_PrimeFaces_Hibernate Project</title></h:head> <body> <h:form> <table> <tr> <td><h:outputLabel for='name' value='Name:' /></td> <td><p:inputText id='name' value='#{userMBean.name}'/></td> </tr> <tr> <td><h:outputLabel for='surname' value='Surname:' /></td> <td><p:inputText id='surname' value='#{userMBean.surname}'/> </td> </tr> <tr> <td><p:commandButton id='submit' value='Save' action='#{userMBean.save}' ajax='false'/></td> <td><p:commandButton id='reset' value='Reset' action='#{userMBean.reset}' ajax='false'/></td> </tr> </table> </h:form></body></html> |
ШАГ 8: СОЗДАТЬ welcome.xhtml
welcome.xhtml создан.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<h:head> <title>Welcome to JSF_PrimeFaces_Hibernate Project</title></h:head><body> <h:form> <h:outputText value='Saved Record is #{userMBean.message}'></h:outputText> <p:dataTable id='users' value='#{userMBean.getUsers()}' var='user' style='width: 10%'> <p:column> <f:facet name='header'> <h:outputText value='ID' /> </f:facet> <h:outputText value='#{user.id}' /> </p:column> <p:column> <f:facet name='header'> <h:outputText value='Name' /> </f:facet> <h:outputText value='#{user.name}' /> </p:column> <p:column> <f:facet name='header'> <h:outputText value='Surname' /> </f:facet> <h:outputText value='#{user.surname}' /> </p:column> </p:dataTable> </h:form></body></html> |
ШАГ 9: СОЗДАЙТЕ error.xhtml
error.xhtml создан.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<h:head><title>Welcome to JSF_PrimeFaces_Hibernate Project</title></h:head> <body> <f:view> <h:form> <h:outputText value='Transaction Error has occurred!'></h:outputText> </h:form> </f:view></body></html> |
ШАГ 10: НАСТРОЙКА face-config.xml
Face-config.xml создается как показано ниже. Он охватывает настройку управляемых bean-компонентов и навигацию между страницами xhtml.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?xml version='1.0' encoding='UTF-8'?><faces-config xsi:schemaLocation='http://java.sun.com/xml/ns/javaee version='2.0'> <managed-bean> <managed-bean-name>userMBean</managed-bean-name> <managed-bean-class>com.otv.UserManagedBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/pages/index.xhtml</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/pages/welcome.xhtml</to-view-id> </navigation-case> <navigation-case> <from-outcome>error</from-outcome> <to-view-id>/pages/error.xhtml</to-view-id> </navigation-case> </navigation-rule></faces-config> |
ШАГ 11: ОБНОВЛЕНИЕ web.xml
web.xml обновляется.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?xml version='1.0' encoding='UTF-8'?> 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>OTV_JSF_PrimeFaces_Hibernate</display-name> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <welcome-file-list> <welcome-file>/pages/index.xhtml</welcome-file> </welcome-file-list> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.faces</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping></web-app> |
ШАГ 12: СОЗДАТЬ user.hbm.xml
Конфигурация таблицы пользователя установлена.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
<?xml version='1.0'?><!DOCTYPE hibernate-mapping PUBLIC'-//Hibernate/Hibernate Mapping DTD 3.0//EN'<hibernate-mapping> <class name='com.otv.hbm.User' table='USER'> <id name='id' type='int' column='ID' > <generator class='increment'/> </id> <property name='name'> <column name='NAME' /> </property> <property name='surname'> <column name='SURNAME'/> </property> </class></hibernate-mapping> |
ШАГ 13: СОЗДАЙТЕ hibernate.cfg.xml
hibernate.cfg.xml создан для управления взаимодействием между приложением и базой данных:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC '-//Hibernate/Hibernate Configuration DTD//EN'<hibernate-configuration><session-factory> <property name='hibernate.connection.driver_class'>com.mysql.jdbc.Driver</property> <property name='hibernate.connection.url'>jdbc:mysql://localhost:3306/Test</property> <property name='hibernate.connection.username'>root</property> <property name='hibernate.connection.password'>root</property> <property name='hibernate.connection.pool_size'>10</property> <property name='show_sql'>true</property> <property name='dialect'>org.hibernate.dialect.MySQLDialect</property> <!-- Mapping files --> <mapping resource='hbm/user.hbm.xml'/></session-factory></hibernate-configuration> |
ШАГ 14: ЗАДЕРЖКА ПРОЕКТА СЕРВЕРУ ПРИЛОЖЕНИЯ
Когда Project развернут на сервере приложений (Apache tomcat), экран будет выглядеть следующим образом:
После нажатия кнопки «Отправить» страница welcome.xhtml будет выглядеть следующим образом:
ШАГ 15: СКАЧАТЬ
Ссылка: JSF — проект интеграции PrimeFaces & Hibernate от нашего партнера JCG Эрен Авсарогуллари в блоге Online Technology Vision .


