Primefaces,Hibernate和SpringRoo集成
SpringRoo是一个开源软件工具,它使用约定优于配置的概念,以便以驱动的命令行方式生成基于Java的企业软件应用程序。我们已经介绍了一套教程,可以帮助您创建企业应用程序。Primefaces,Spring Framework,Hibernate,EclipseLink和不同类型的数据存储有选择地组合在一起,以帮助您创建企业应用程序。
本教程不同,即您不会开发以前开发过的任何图层。所有内容都将分配给SpringRoo,您将学习所需的集成和命令,以帮助您安装和运行第一个应用程序。
目录[ 隐藏 ]
最终项目结构
必备工具
- SpringRoo 1.2.5
- JDK 1.6+
- Apache Tomcat 7
- Maven 2+
- Eclipse Kepler 4.3
- MySQL 5.x
Eclipse Spring Roo集成
要将Eclipse IDE与SpringRoo软件集成,您必须仔细遵循以下步骤:
- 将SpringRoo软件下载到您的本地目录并解压缩。为了澄清目的,我们将其解压缩到 D:\ SpringRoo \ spring-roo-1.2.5.RELEASE中。
- 将SpringRoo插件安装到Eclipse IDE中。这可以通过进入“ 帮助 - 安装新软件” 并
http://dist.springsource.com/release/TOOLS/update/e4.3/
在“使用 地址输入”中键入此内容来完成。
- 检查Core / Spring IDE 和 Extensions / Spring IDE。
- 单击“下一步”完成并等待安装过程完成。
- 确保重新启动Eclipse IDE。如果您已成功安装Spring Roo,那么您将获得如下所示的欢迎屏幕。
- 从Project Explorer中,创建一个新项目并选择Spring Roo Project 。
- 单击“下一步”,然后在项目名称中键入 Primefaces-SpringRoo-Hibernate-Sample 。命名您的 顶级包名称 ,并确保您的 项目类型 是标准的。
- 单击Configure Roo Installations 并添加下载的Spring Roo库。
- 确保选择 WAR 包装方式。单击下一步,完成。SpringRoo将使用您提供的信息开始构建您的项目。
- 一旦SpringRoo Project创建,您必须注意到SpringRoo Shell命令 - 插件Shell - 已打开。如果您在启动和准备就绪时遇到一些障碍,只需重新启动eclipse并再次通过单击Open Roo Shell来激活SpringRoo shell 。
- 现在,您已准备好开始构建项目。
数据库视图
SpringRoo推动了一种已知的范例,可让您的JPA实体一目了然。您的数据库表可以反向设计,以消除执行其他命令的需要。那么让我们看看我们真正想要实现的业务表是什么。
一般来说,我们有两个表; 以一对多关联类型关联的员工和电话。Phone Table包含一个外键,在Employee Table中引用employeeId字段。以下是必需的SQL创建脚本。
EmployeeTable.sql
CREATE TABLE `employee` (
`EMP_ID` int(11) NOT NULL AUTO_INCREMENT,
`EMP_NAME` varchar(45) DEFAULT NULL,
`EMP_HIRE_DATE` varchar(30) DEFAULT NULL,
`EMP_SALARY` decimal(11,4) DEFAULT NULL,
PRIMARY KEY (`EMP_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;
PhoneTable.sql
CREATE TABLE `phone` (
`PH_ID` int(11) NOT NULL AUTO_INCREMENT,
`PH_NO` varchar(30) DEFAULT NULL,
`EMP_ID` int(11) DEFAULT NULL,
PRIMARY KEY (`PH_ID`),
KEY `PH_EMP_ID_idx` (`EMP_ID`),
CONSTRAINT `PH_EMP_ID` FOREIGN KEY (`EMP_ID`) REFERENCES `employee` (`EMP_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
开发SpringRoo应用程序
使用SpringRoo软件开发企业应用程序确实包含针对SpringRoo shell执行多个命令。按照明确的步骤创建想要的应用程序。
- 安装程序通过执行使用持久性框架
persistence setup --database MYSQL --provider HIBERNATE --hostName localhost --userName root --password root --databaseName journaldev --persistenceUnit hibernate.jpa
- 安装MySQL驱动程序,这将有助于您的SpringRoo软件在逆向工程开始过程中加载所需的驱动程序。我们在D:\ mysql-connector-java-5.1.18-bin.jar上有一个MySQL驱动程序 。执行
osgi install --url file:\\\D:\mysql-connector-java-5.1.18-bin.jar
将是公平的。如果您错过了执行此指令,那么在连接MySQL数据库进行逆向工程阶段时,您将获得 “com.mysql.jdbc.Driver”消息不可用的JDBC驱动程序。 - 创建JPA实体,SpringRoo为您提供了一种创建实体的简便方法。通过执行
database reverse engineer --schema journaldev --package ~.jpa.data --disableVersionFields --activeRecord true --disableGeneratedIdentifiers
SpringRoo将扫描您的数据库并通过在那里反转已定义的表来创建实体。 - 创建Primefaces Web层,SpringRoo提供的选项之一是使用JSF实现创建表示层。执行
web jsf setup --implementation ORACLE_MOJARRA --library PRIMEFACES --theme BLUESKY
将为您的表示层创建所有必需的文件,包括所需的表单,如:员工注册,电话注册,管理员工和管理电话。 - 创建所有Web内容,包括实用程序bean,所需的托管bean,转换器,消息等。执行
web jsf all --package ~.web
将帮助您创建所有这些东西。
- 要避免标识符生成异常,请使用Eclipse CTRL + SHIFT + R 打开 Employee_Roo_Jpa_Entity.aj和 Phone_Roo_Jpa_Entity.aj,如下所示:
- 将@GeneratedValue(strategy = GenerationType.Auto)注释添加 到Employee的标识符和Phone的标识符上。
Employee_Roo_Jpa_Entity.aj
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).
package com.journaldev.jpa.data;
import com.journaldev.jpa.data.Employee;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
privileged aspect Employee_Roo_Jpa_Entity {
declare @type: Employee: @Entity;
declare @type: Employee: @Table(name = "employee");
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "EMP_ID")
private Integer Employee.empId;
public Integer Employee.getEmpId() {
return this.empId;
}
public void Employee.setEmpId(Integer id) {
this.empId = id;
}
}
Phone_Roo_Jpa_Entity.aj
// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.
// You may push code into the target .java compilation unit if you wish to edit any member(s).
package com.journaldev.jpa.data;
import com.journaldev.jpa.data.Phone;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
privileged aspect Phone_Roo_Jpa_Entity {
declare @type: Phone: @Entity;
declare @type: Phone: @Table(name = "phone");
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "PH_ID")
private Integer Phone.phId;
public Integer Phone.getPhId() {
return this.phId;
}
public void Phone.setPhId(Integer id) {
this.phId = id;
}
}
- 执行mvn clean包以生成SpringRoo所需的一些Java文件,AspectJ确实生成并为下一个即将发布的部署任务生成所需的WAR。
- 将生成的WAR文件复制到Apache Tomcat home / webapp文件夹中。
- 启动Apache Tomcat并键入下面显示的给定URL。
演示
现在,您已经启动了Apache Tomcat,并且您将继续使用SpringRoo应用程序的主页。正如您所注意到的,自动开发了四种形式; 创建员工,创建电话,列出所有员工并列出所有电话。在开始创建新员工和手机之前,我们先来看一看。
坚持记录
现在,让我们看一下持久存储到MySQL数据库中的记录。
摘要
SpringRoo用于快速应用程序开发(RAD),它常用于开发企业应用程序,其中Hibernate是持久层,Primefaces是表示层。通过下面的评论为我们做贡献,并找到下载的源代码。
下载Primefaces SpringRoo Hibernate项目
原创翻译,译文来源:https://www.journaldev.com/4260/primefaces-hibernate-and-springroo-integration