选择Upload a new deployment。点击Next。
选择解压得到的jar文件。点击Next。
保持默认,点击Finish。
回到首页,点击Create a datasource旁边的start链接。在随后出现的页面中选择 Subsystems -> Datasources -> Non-XA。点击右边的 Add。
选择MySQL datasource. 点击Next。
指定一个Datasource名称和JNDI名称。 JNDI 名称十分重要,会在JPA连接到JDBC Resource的时候用到。点击Next。
选择Detected driver并选择第一个检测出来的驱动。点击next。
定义连接 URL。这里我创建的数据库名称为notebook,在配置URL之前,先在mysql中使用“create database notebook”命令创建此数据库。指定MySQL用户名和密码之后,点击next。
查看配置概要,如果正确点击finish。
可通过下图的方式测试是否连接成功:
如果成功连接到数据库,会弹出下图提示框:
创建JPA module
============
从IntelliJ中创建一个Maven 模块。使用下图所示的groupId, artifactId, 并选择择之前所创建的notebookRoot做为父项目: com.zxuqian:notebookRoot:0.0.1-SNAPSHOT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bfQkS6gV-1651211626187)(http://upload-images.jianshu.io/upload_images/4914554-e9bbe8b416b8aaf1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
创建完成后,修改pom.xml文件内容:
4.0.0
com.zxuqian
notebookDomain
jar
com.zxuqian
notebookRoot
0.0.1-SNAPSHOT
…/notebookRoot/pom.xml
maven-compiler-plugin
3.5.1
1.81.8
org.hibernate.javax.persistence
hibernate-jpa-2.1-api
provided
此模块打包为Jar项目,为Java EE所要求的JPA模块打包结构。
因为wildfly运行环境提供JPA实现,所以这里JPA依赖的scope为provided,仅在编译时提供。
创建一个 Entity
Entity是Java对象和数据库表建立关系的桥梁,使用JPA注解来配置如何生成对应的数据库表。首先创建一个class,类名为User,并填入如下代码:
package com.zxuqian.notebook.domain;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
/**
Entity implementation class for Entity: User
*/
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String username;
private String password;
private Date dateOfBirth;
private String email;
private String phone;
public User() {
super();
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
此类为POJO(simple plain old java bean),意思为此类提供一组属性,并提供用这些属性初始化对象的构造方法,以及访问和设置这些属性的getter和setter方法。Entity需要实现Serializable接口以便JPA把对象序列化到数据库和从数据库中反序列化出来。
@Entity注解表明此类为Entity,默认使用类名作为表名。
@Id注解声明此成员变量为数据库中的主键,使用IDENTITY生成策略,即JPA负责生成ID的数值。
在src/META-INF 目录, 创建名为 persistence.xml 的文件,填入如下内容:
java:/MySqlDS
此文件为JPA的配置文件。
使用在wildfly下创建的JNDI名称。 javax.persistence.schema-generation.database.action 属性的值,drop-and-create ,表示数据库表会在每次项目部署后重新创建。 javax.persistence.schema-generation.scripts.action 表示是否生成SQL 文件。
创建EAR 模块
因为JSF模块和JPA模块为独立的两个项目,所以我们需要把它们打包成一个EAR包部署到wildfly服务器中。它包含的JSF和JPA模块会自动被wildfly识别并部署。创建此项目(groupId和artifacitId请参考下方pom文件),并在pom.xml中填入下方代码:
4.0.0
com.zxuqian
notebookEAR
0.0.1-SNAPSHOT
ear
maven-ear-plugin
2.10
EarContent
7
lib
com.zxuqian
notebook
/notebook
org.wildfly.plugins
wildfly-maven-plugin
1.2.0.Alpha2
/Users/zxuqian/development/tools/wildfly-10.1.0.Final
com.zxuqian
notebook
0.0.1-SNAPSHOT
war
com.zxuqian
notebookDomain
0.0.1-SNAPSHOT
iguration>
/Users/zxuqian/development/tools/wildfly-10.1.0.Final
com.zxuqian
notebook
0.0.1-SNAPSHOT
war
com.zxuqian
notebookDomain
0.0.1-SNAPSHOT