[关键字: Struts 2 Spring 2 JPA AJAX]
Tomcat
首先要安装好Tomcat,如果在安装的时候遇到任何问题,请查看Tomcat的安装指南
MySql
安装并配置MySQL。创建一个名为“quickstart”的数据库,并运行下面脚本来创建“Person”表。后面在applicationContext.xml里,我们将使用"root"数据库用户名和密码,记得用你自己的数据库设置来替换它们。
CREATE TABLE 'quickstart'.'Person'
( 'id' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
'firstName' VARCHAR(45) NOT NULL,
'lastName' VARCHAR(45) NOT NULL,
PRIMARY KEY('id'))ENGINE = InnoDB;
注:上面的DDL需要保存在文件中,然后在MySQL中导入。我直接复制然后在查询分析器中执行失败
创建Eclipse项目
打开Eclipse,我是认真的,你必须打开Eclipse
点击File -> New -> Project. 选择"Dynamic Web Project"并点击下一步(注:如果使用MyEclipse,这里不太一样)
输入项目名,这里我使用"quickstart"。这个项目将要在Tomcat中运行,所以我们需要为它创建应用服务器配置
在"Target Runtime"下面点击"New",选择"Apache Tomcat5.5"并点击下一步
输入Tomcat的安装路径并选择一下已安装的JRE(需要1.5)
现在你应该回到了项目创建向导,并且Tomcat是你的Target Runtime。点击下一步,选择"Dynamic Web Module"和"Java"facets,最后点"finish"。
(上面讲的都是Eclipse WTP中的配置,如果使用MyEclipse请自行修正)
库依赖关系
你的项目应该包含"src","build"和"WebContent"目录。我们把所有必需的jar文件放在"/WebContent/WEB-INF/lib"目录下。请复制它们到${workspace}\quickstart\WebContent\WEB-INF\lib目录。jar文件名的版本号已经被去除了!
Jar From xwork.jar Struts 2 struts2-api.jar Struts 2 struts2-core.jar Struts 2 struts2-Spring-plugin.jar Struts 2 ognl.jar Struts 2 freemarker-2.3.4.jar Struts 2 mysql-connector-java.jar MySql JDBC Driver spring.jar Sping 2.0 antlr.jar Hibernate Core asm.jar Hibernate Core asm-attrs.jar Hibernate Core cglib.jar Hibernate Core dom4j.jar Hibernate Core jdbc2_0-stdext.jar Hibernate Core ehcache.jar Hibernate Core hibernate3.jar Hibernate Core xml-apis.jar Hibernate Core commons-collections.jar Hibernate Core ejb3-persistence.jar Hibernate Annotations jta.jar Hibernate Annotations hibernate-annotations.jar Hibernate Annotations hibernate-entitymanager.jar Hibernate Entity Manager javassist.jar Hibernate Entity Manager jboss-archive-browsing.jar Hibernate Entity Manager
右击项目点“刷新”,通知Eclipse我们加入了很多的jar文件。
我使用Struts2.0.6, Spring2.0.3, Hibernate3.2。struts2-api.jar找不到,没有也可以运行成功;Hibernate Annotations和Hibernate Entity Manager需要在Hibernate的主页上下载,不包括在Core里面;另外jta.jar和javassist.jar在Hibernate Tools里面,同样要下载;最后,上面列表并缺少一个包,因为Hibernate3.2对此有一点小小的修改,你需要把Hibernate Annotations里面的hibernate-commons-annotations.jar拷贝进来。
领域模型
我们的领域模型只有一个简单的"Person"类,它包含少量的实例变量。
创建一个新类并命名为"Person",然后输入"quickstart.model"作为包名。
添加"id"(int), "firstName"(String)和"lastName"(String)三个实例变量,并为它们加上setter/getter方法。
为你的类加上"@Entity"annotation,给"id" 加上 "@Id"和"@GeneratedValue" 注解
你的类如下:
Person.java
package quickstart.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entitypublic
class Person
{
@Id
@GeneratedValue
private Integer id;
private String lastName;
private String firstName;
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
this.firstName = firstName;
}
public String getLastName()
{
return lastName;
}
public void setLastName(String lastName)
{
this.lastName = lastName;
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
}
@Entity让JPA服务Provider知道这个类可以被持久化。@Id标识"id"域为这个类的主键,@GeneratedValue使id域被提供者(Hibernate)自动生成。类和实例变量默认都被映射到同名的表和列上,详细情况请查看JPA文档。
Person service.
我们现在来写对"Person"对象进行CRUD操作的类。
创建一个接口,命名为"PersonService",包名为"quickstart.service"
PersonService.java
package quickstart.service;
import java.util.List;
import quickstart.model.Person;
public interface PersonService
{
public List<Person> findAll();
public void save(Person person);
public void remove(int id);
public Person find(int id);
}
2. 创建一个类,命名为"PersonServiceImpl",包名为"quickstart.service"
PersonServiceImpl.java
package quickstart.service;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Transactional;
import quickstart.model.Person;
@Transactional
public class PersonServiceImpl implements PersonService {
private EntityManager em;
@PersistenceContext
public void setEntityManager(EntityManager em) {
this.em = em;
}
@SuppressWarnings("unchecked")
public List<Person> findAll() {
Query query = getEntityManager().createQuery("select p FROM Person p");
return query.getResultList();
}
public void save(Person person) {
if (person.getId() == null) {
// new em.persist(person);
} else {
// update em.merge(person);
}
}
public void remove(int id) {
Person person = find(id);
if (person != null) {
em.remove(person);
}
}
private EntityManager getEntityManager() {
return em;
}
public Person find(int id) {
return em.find(Person.class, id);
}
}
@PersistenceContext会让Spring在实例化的时候给服务注入一个EntityManager。@PersistenceContext注解可以放在实例变量,或者setter方法前面。如果一个类被注解为@Transactional,Spring将会确保类的方法在运行在一个事务中。
分享到:
相关推荐
Eclipse开发 Struts 2 + Spring 2 + JPA + AJAX 例子
在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。
help\Struts 2 + Spring 2 + JPA + AJAX.
struts2+spring2+jpa+ajax的组合运用。
Struts 2 + Spring 2 + JPA + AJAX 英文手澈
Struts2+AJAX+JPA+Spring合集(英文版)
经典的Struts2+Spring 2+JPA+AJAX学习项目
Struts 2 + Spring 2 + JPA + hibernate + AJAX +实例, 包含依赖jar包。
【资源介绍】毕设项目:基于springboot+jpa+thymeleaf的网络点餐系统.zip毕设项目:基于springboot+jpa+thymeleaf的网络点餐系统.zip毕设项目:基于springboot+jpa+thymeleaf的网络点餐系统.zip毕设项目:基于...
Struts2+Spring+Jpa+ExtJS Crud mysql 含jar文件 myeclipse版本
oa系统_ssh2_Struts2+spring2.5+JPA) oa系统_ssh2_Struts2+spring2.5+JPA) oa系统_ssh2_Struts2+spring2.5+JPA) oa系统_ssh2_Struts2+spring2.5+JPA)
struts2+jpa+spring的详细整合,PPT上面有详细解说
Struts2+Spring+JPA整合配置实例,及增删改查实例 (jar包放在另外一个文件中,超过15M了,请从新下载)
权限管理代码(struts2+spring2.5+jpa)权限管理代码(struts2+spring2.5+jpa)权限管理代码(struts2+spring2.5+jpa)权限管理代码(struts2+spring2.5+jpa)权限管理代码(struts2+spring2.5+jpa)权限管理代码...
struts2+spring+jpa+extjs4 Demo
eclipse(struts2+spring3+hibernate3)案例附带mysql数据库
Spring+Struts2+JPA入门小例子
毕设项目:后端springboot + mybatis + jpa,前端vue实现的简易网盘系统.zip毕设项目:后端springboot + mybatis + jpa,前端vue实现的简易网盘系统.zip毕设项目:后端springboot + mybatis + jpa,前端vue实现的...
struts2+jpa+spring2.5配置基础框架,直接运行即可
Struts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdfStruts2.1+Spring3.0+JPA1.0 .pdf