Tomcat
首先要安装好Tomcat如果在安装的时候遇到任何问题请查看Tomcat的安装指南
MySql
安装并配置MySQL创建一个名为quickstart的数据库并运行下面脚本来创建Person表后面在applicationContextxml里我们将使用root数据库用户名和密码记得用你自己的数据库设置来替换它们
CREATE TABLE quickstartPerson
( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
firstName VARCHAR() NOT NULL
lastName VARCHAR() 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 Tomcat并点击下一步 输入Tomcat的安装路径并选择一下已安装的JRE(需要) 现在你应该回到了项目创建向导并且Tomcat是你的Target Runtime点击下一步选择Dynamic Web Module和Javafacets最后点finish (上面讲的都是Eclipse WTP中的配置如果使用MyEclipse请自行修正)库依赖关系你的项目应该包含srcbuild和WebContent目录我们把所有必需的jar文件放在/WebContent/WEBINF/lib目录下请复制它们到${workspace}\quickstart\WebContent\WEBINF\lib目录jar文件名的版本号已经被去除了!Jar From xworkjar Struts strutsapijar Struts strutscorejar Struts strutsSpringpluginjar Struts ognljar Struts freemarkerjar Struts mysqlconnectorjavajar MySql JDBC Driver springjar Sping antlrjar Hibernate Core asmjar Hibernate Core asmattrsjar Hibernate Core cglibjar Hibernate Core domjjar Hibernate Core jdbc_stdextjar Hibernate Core ehcachejar Hibernate Core hibernatejar Hibernate Core xmlapisjar Hibernate Core commonscollectionsjar Hibernate Core ejbpersistencejar Hibernate Annotations jtajar Hibernate Annotations hibernateannotationsjar Hibernate Annotations hibernateentitymanagerjar Hibernate Entity Manager javassistjar Hibernate Entity Manager jbossarchivebrowsingjar Hibernate Entity Manager 右击项目点刷新通知Eclipse我们加入了很多的jar文件我使用Struts Spring Hibernatestrutsapijar找不到没有也可以运行成功Hibernate Annotations和Hibernate Entity Manager需要在Hibernate的主页上下载不包括在Core里面另外jtajar和javassistjar在Hibernate Tools里面同样要下载最后上面列表并缺少一个包因为Hibernate对此有一点小小的修改你需要把Hibernate Annotations里面的hibernatecommonsannotationsjar拷贝进来领域模型我们的领域模型只有一个简单的Person类它包含少量的实例变量创建一个新类并命名为Person然后输入quickstartmodel作为包名 添加id(int) firstName(String)和lastName(String)三个实例变量并为它们加上setter/getter方法 为你的类加上@Entityannotation给id 加上 @Id和@GeneratedValue 注解 你的类如下
Personjavapackage quickstartmodel;
import javaxpersistenceEntity;
import javaxpersistenceGeneratedValue;
import javaxpersistenceId;
@Entitypublic
class Person
{
@Id
@GeneratedValue
private Integer id;
private String lastName;
private String firstName;
public String getFirstName()
{
return firstName;
}
public void setFirstName(String firstName)
{
thisfirstName = firstName;
}
public String getLastName()
{
return lastName;
}
public void setLastName(String lastName)
{
thislastName = lastName;
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
thisid = id;
}
}
@Entity让JPA服务Provider知道这个类可以被持久化@Id标识id域为这个类的主键@GeneratedValue使id域被提供者(Hibernate)自动生成类和实例变量默认都被映射到同名的表和列上详细情况请查看JPA文档Person service我们现在来写对Person对象进行CRUD操作的类创建一个接口命名为PersonService包名为quickstartservice PersonServicejava
package quickstartservice;
import javautilList;
import quickstartmodelPerson;
public interface PersonService
{
public List
findAll();
public void save(Person person);
public void remove(int id);
public Person find(int id);
}
@Entity让JPA服务Provider知道这个类可以被持久化@Id标识id域为这个类的主键@GeneratedValue使id域被提供者(Hibernate)自动生成类和实例变量默认都被映射到同名的表和列上详细情况请查看JPA文档Person service我们现在来写对Person对象进行CRUD操作的类创建一个接口命名为PersonService包名为quickstartservice PersonServicejava
创建一个类命名为PersonServiceImpl包名为quickstartservice PersonServiceImpljava
package quickstartservice;
import javautilList;
import javaxpersistenceEntityManager;
import javaxpersistencePersistenceContext;
import javaxpersistenceQuery;
import orgspringframeworktransactionannotationTransactional;
import quickstartmodelPerson;
@Transactional
public class PersonServiceImpl implements PersonService {
private EntityManager em;
@PersistenceContext
public void setEntityManager(EntityManager em) {
thisem = em;
}
@SuppressWarnings(unchecked)
public List
findAll() {
Query query = getEntityManager()createQuery(select p FROM Person p);
return querygetResultList();
}
public void save(Person person) {
if (persongetId() == null) {
// new
empersist(person);
} else {
// update
rge(person);
}
}
public void remove(int id) {
Person person = find(id);
if (person != null) {
emremove(person);
}
}
private EntityManager getEntityManager() {
return em;
}
public Person find(int id) {
return emfind(Personclass id);
}
}
@PersistenceContext会让Spring在实例化的时候给服务注入一个EntityManager@PersistenceContext注解可以放在实例变量或者setter方法前面如果一个类被注解为@TransactionalSpring将会确保类的方法在运行在一个事务中