在你开始加包的时候无比要仔细阅读 上面的矩阵, hiberante core 3.3 和有的包是不兼容的!
昨天试了 spring 2.0 + hibernate core 3.3 + struts2..0.9 没有成功,
今天调试成功的 版本为 struts2.0.9+spring2.0+hibernate 3.2.1 + tomcat5.5.17+ eclipse3.2 wtp all in one
本指南演示了如何在Eclipse中配置Struts2,并让它与Spring2,Java Persistence API(使用Hibernate)和Struts2 Ajax 标签一起工作。
注意:按指南一步一步来需要Struts2.0.3或更高版本
Show me the code
你可以在 zipped Eclipse project下载源代码,必需的依赖库在/WebContent/WEB-INF/lib目录下,需要导入到Eclipse中。
Prerequisites
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文件名的版本号已经被去除了!
JarFrom
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.9, Spring2.0., Hibernate3.2.1。struts2-api.jar找不到,没有也可以运行成功;Hibernate Annotations和Hibernate Entity Manager需要在Hibernate的主页上下载,不包括在Core里面;
本网站上还有一位仁兄给出了如下 评语:
jta.jar和javassist.jar在Hibernate Tools里面,同样要下载;最后,上面列表并缺少一个包,因为Hibernate3.2对此有一点小小的修改,你需要把Hibernate Annotations里面的hibernate-commons-annotations.jar拷贝进来。
其实 jta.jar和javassist.jar 在 annotation and Entity manager 里有了, 不用tool 包, 还有没有hibernate-commons-annotations.jar 一样可以跑
要注意的是下面的所有xml 第一行要加<?xml version="1.0" encoding="UTF-8"?> , 在官方网站上的原文未来简洁省略了这句话, 一定要加上去
领域模型
我们的领域模型只有一个简单的"Person"类,它包含少量的实例变量。
- 创建一个新类并命名为"Person",然后输入"quickstart.model"作为包名。
- 添加"id"(int), "firstName"(String)和"lastName"(String)三个实例变量,并为它们加上setter/getter方法。
- 为你的类加上"@Entity"annotation,给"id" 加上 "@Id"和"@GeneratedValue" 注解
你的类如下:
package quickstart.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public 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"
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"
JPA 配置
- 在"src"目录下创建一个"META-INF"目录
- 在"META-INF"目录下创建一个名为"persistence.xml"的文件。
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="punit">
</persistence-unit>
</persistence>
JPA configuration can be set on this file. On this example it will be empty because the datasource configuration will be on the Spring configuration file. JPA的配置信息可以在这个文件中设置。本例中该文件为空,因为数据源(datasource)配置放在Spring的配置文件中。
Spring
- 更新/WebContent/WEB-INF/web.xml文件为以下内容:
这会使容器将所有请求转发给Struts的"FilterDispatcher"类。"index.jsp"被设为主页,Spring的"ContextLoaderListener"被配置为listener(监听器)
- 在/WebContent/WEB-INF目录下创建一个名为"applicationContext.xml"的文件,内容如下:
Struts
现在我们需要创建一个简单的Struts action,它封装了PersonServices的方法。并且我们配置Struts使用Spring作为对象工厂。
- 打开新建类对话框,输入"PersonAction"作为类名,包名为"quickstart.action",内容如下:
package quickstart.action;
import java.util.List;
import quickstart.model.Person;
import quickstart.service.PersonService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.Preparable;
public class PersonAction implements Preparable {
private PersonService service;
private List<Person> persons;
private Person person;
private Integer id;
public PersonAction(PersonService service) {
this.service = service;
}
public String execute() {
this.persons = service.findAll();
return Action.SUCCESS;
}
public String save() {
this.service.save(person);
this.person = new Person();
return execute();
}
public String remove() {
service.remove(id);
return execute();
}
public List<Person> getPersons() {
return persons;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public void prepare() throws Exception {
if (id != null)
person = service.find(id);
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
看,我的action是一个简单的POJO!
"Preparable"接口指示Struts去调用"prepare"方法,如果"PrepareInterceptor"被应用在action上(默认就是这样子的)。action的构造器有一个"PersonService"参数,在action被实例化的时候Spring会负责注入。
- 在"src"目录下创建一个名为"struts.xml"的文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value</sp>
分享到:
相关推荐
JPA配置装载 Jboss Envers Jasperreport ireport 项目源码 博文链接:https://neil-jh.iteye.com/blog/235838
spring springmvc jpa配置文件 内容详细简单易懂 可直接使用
JPA配置需要的jar,包括jpa 持久化jar和hibernate的一些jar文件
Spring JPA 配置类包集合 方便大家使用
Spring Boot使用spring-data-jpa配置Mysql多数据源,可用版本
JPA配置需要的jar,包括jpa 持久化jar和hibernate的一些jar文件
JPA 持久化
采用hibernate 4.3.6,spring 4.0.6 ,实现jpa配置,简单易懂明了。压缩文件中包含jpa依赖的hibernate包,如果下载者希望运行,需要自己写实体类。压缩包中含有精简的配置。
struts2+jpa+spring2.5配置基础框架,直接运行即可
Spring Boot+Jpa多数据源配置Demo,可同时支持多种数据库,不同数据库,同时支持不同数据库的JdbcTemplate
很简单的,只是搭建了平台,可以作为blank使用
Hibernate4之JPA规范配置详解
开发工具:IDEA 开发环境:jdk1.8 项目框架:springboot+jpa+aop 通过注解和aop切面自动切换数据源
Spring mvc + jpa +mysql5.6 配置,项目可运行。其中有两个案例,包含增删改查,复合主键开发 查询列表中,下拉列表显示名称所采用方式数据量大的时候存在问题,建议使用多表关联的方式。适合菜鸟学习。
库文件 博文链接:https://log-cd.iteye.com/blog/562054
websphere8.5默认支持的jpa版本是2.0,不支持2.1。因为websphere不能升级到9.0,而且需要代码改动比较少。可以配置服务器使8.5支持jpa2.1
我在博客提出的问题http://blog.csdn.net/yyzhq/article/details/7484620#comments,有人问我最终的配置方案,我在文章回复中找不到传的位置,只好传这里了。
配置jPA办法
NULL 博文链接:https://javahuhui.iteye.com/blog/1456960
JPA教程JPA教程JPA教程JPA教程JPA教程