java

位置:IT落伍者 >> java >> 浏览文章

Eclipse整合JPA + Struts 2 +&nbs


发布日期:2023年04月08日
 
Eclipse整合JPA + Struts 2 +&nbs

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 ModuleJavafacets最后点finish (上面讲的都是Eclipse WTP中的配置如果使用MyEclipse请自行修正)库依赖关系你的项目应该包含srcbuildWebContent目录我们把所有必需的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方法 为你的类加上@Entityannotationid 加上 @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将会确保类的方法在运行在一个事务中

上一篇:J2EE综合——Struts常见错误的全面汇总

下一篇:Spring 3.0 M2发布 大部分新特性开发完成