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
和
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
struts
api
jar Struts
struts
core
jar Struts
struts
Spring
plugin
jar Struts
ognl
jar Struts
freemarker
jar Struts
mysql
connector
java
jar MySql JDBC Driver spring
jar Sping
antlr
jar Hibernate Core asm
jar Hibernate Core asm
attrs
jar Hibernate Core cglib
jar Hibernate Core dom
j
jar Hibernate Core jdbc
_
stdext
jar Hibernate Core ehcache
jar Hibernate Core hibernate
jar Hibernate Core xml
apis
jar Hibernate Core commons
collections
jar Hibernate Core ejb
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文件
我使用Struts
Spring
Hibernate
struts
api
jar找不到
沒有也可以運行成功
Hibernate Annotations和Hibernate Entity Manager需要在Hibernate的主頁上下載
不包括在Core裡面
另外jta
jar和javassist
jar在Hibernate Tools裡面
同樣要下載
最後
上面列表並缺少一個包
因為Hibernate
對此有一點小小的修改
你需要把Hibernate Annotations裡面的hibernate
commons
annotations
jar拷貝進來
領域模型我們的領域模型只有一個簡單的
Person
類
它包含少量的實例變量
創建一個新類並命名為
Person
然後輸入
quickstart
model
作為包名
添加
id
(int)
firstName
(String)和
lastName
(String)三個實例變量
並為它們加上setter/getter方法
為你的類加上
@Entity
annotation
給
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
包名為
quickstart
service
PersonService
java
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將會確保類的方法在運行在一個事務中
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28527.html