Используемые технологии:
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 .