創(chuàng)建項(xiàng)目:

打開NetBeans 6.5.1,選擇文件—》新建項(xiàng)目,選擇Java Web,然后在項(xiàng)目列表中選擇 Web 應(yīng)用程序,下一步

clip_image002

選擇使用專用文件夾存儲庫,指定庫文件夾的位置,通常是默認(rèn)的.\lib,即項(xiàng)目文件夾下的lib文件夾,下一步

clip_image004

選擇Web應(yīng)用服務(wù)器。這里選擇Tomcat 6.0.18 ,Java EE版本選擇 Java EE 5,下一步

clip_image006

在框架對話框中什么都不選擇,直接點(diǎn)擊完成。

配置項(xiàng)目:

1. 配置OperaMask

在WEB-INF文件夾下新建一個faces-config.xml文件,內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2">

<application>

<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>

</application>

</faces-config>

在新創(chuàng)建的項(xiàng)目中,右鍵單擊“庫”節(jié)點(diǎn),選擇添加庫

clip_image008

然后選擇導(dǎo)入,選擇Spring 2.5庫,選擇導(dǎo)入庫,添加庫。

clip_image010

再次選擇添加庫,然后選擇創(chuàng)建。庫名稱為OperaMask,庫類型為類庫:

clip_image012

在“定制庫”中選擇“添加JAR/文件夾”,在彈出的對話框中選擇OperaMask的基本jar包,并將導(dǎo)入方式指定為:復(fù)制到庫文件夾。

clip_image014

一路選是。

2. 配置Spring以及與OperaMask的整合

然后再創(chuàng)建一個OperaMask_SpringCompatibility庫,將OperaMask中的spring文件夾下的operamasks-spring.jar添加進(jìn)來

然后在新創(chuàng)建的項(xiàng)目中展開WEB-INF文件夾,打開web.xml:按照OperaMask包中的blank樣例程序的配置進(jìn)行配置。

之后,在web.xml中配置如下內(nèi)容:

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext*.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

然后,在源包節(jié)點(diǎn)下創(chuàng)建Spring配置文件applicationContext.xml,選擇如圖所示的幾個命名空間:

clip_image016

clip_image018

選擇完成,然后在Beans節(jié)點(diǎn)之間添加如下內(nèi)容:

<!-- 開啟基于注解的配置 -->

<context:annotation-config/>

<!-- 使 AOM 中的 LiteBean 同樣能夠被 Spring 所感應(yīng)到 -->

<bean class="org.operamasks.faces.spring.ManagedBeanConfigurer"/>

3. 配置JPA持久化支持

在服務(wù)選項(xiàng)卡中,選擇MySQL數(shù)據(jù)庫驅(qū)動,然后右鍵單擊,選擇連接設(shè)置,配置你要使用的數(shù)據(jù)庫:

clip_image020

數(shù)據(jù)庫配置完畢,然后回到項(xiàng)目選項(xiàng)卡,右鍵單擊剛創(chuàng)建的項(xiàng)目,選擇新建-->其它-->持久性-->持久性單元

clip_image022

在新建持久性單元對話框中選擇持久性庫為Hibernate,即選擇Hibernate為JPA持久單元的實(shí)現(xiàn),數(shù)據(jù)庫連接選擇我們剛配置好的MySQL連接。

clip_image024

單擊完成。此時,Hibernate的JPA庫已經(jīng)被添加到項(xiàng)目的lib目錄下了。包含了基本的Hibernate jar包和Hibernate JPA支持jar包。

注:使用JPA的一個好處就是我們不需要在一個統(tǒng)一的配置文件里羅列所有的實(shí)體類,而是可以讓實(shí)體管理器自動掃描所有被@Entity注解了的實(shí)體類。要實(shí)現(xiàn)這種功能,如果項(xiàng)目的JPA實(shí)現(xiàn)遷移到TopLink Essential,需要加入下面的配置:

找到項(xiàng)目中的“配置文件”節(jié)點(diǎn),打開persistence.xml文件,調(diào)整到XML視圖中,在<provider> </provider>節(jié)點(diǎn)后添加:

<exclude-unlisted-classes>false</exclude-unlisted-classes> 一行。如果希望使用Hibernate實(shí)現(xiàn),請一定不要加入這一行,否則,您必須將您創(chuàng)建的所有實(shí)體類逐一添加到persistence.xml中。

如果要使用Spring提供的JpaTemplate(即實(shí)現(xiàn)JpaDaoSupport方式),則回到spring的applicationContext.xml文件,在<beans>節(jié)點(diǎn)里面添加:

<!-- 利用Spring的實(shí)體管理器工廠來創(chuàng)建JPA實(shí)體管理器,傳入的參數(shù)為persistence.xml中指定的持久化單元名稱 -->

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">

<property name="persistenceUnitName" value="DMCSv1PU"/>

</bean>

<!-- 聲明一個Spring提供的JPA事務(wù)管理器,傳入的參數(shù)正是Spring中的實(shí)體管理器工廠 -->

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">

<property name="entityManagerFactory" ref="entityManagerFactory"/>

</bean>

<!-- 開啟Spring提供的基于注解的聲明式事務(wù)管理 -->

<tx:annotation-driven transaction-manager="txManager"/>

至此,持久化支持配置完畢。

創(chuàng)建實(shí)體類和相應(yīng)的JPA控制類

右鍵單擊項(xiàng)目,選擇新建-->其它-->持久性-->通過數(shù)據(jù)庫生成實(shí)體類,選擇數(shù)據(jù)庫表:

clip_image026

點(diǎn)擊下一步,輸入合適的包名

clip_image028

下一步,映射選項(xiàng)如下圖所示:

clip_image030

選擇新建-->其它-->持久性-->基于實(shí)體類的JPA控制器類,下一步:

clip_image032

添加要生成控制器類的實(shí)體類,下一步:

clip_image034

選擇合適的包,然后完成。

clip_image036

后面的配置無非就是將JPA的控制器類寫入Spring的配置文件,然后在AOM的LiteBean中注入這些控制器類,實(shí)現(xiàn)數(shù)據(jù)庫操作以及相應(yīng)的業(yè)務(wù)邏輯。

注:解決Spring與Hibernate JPA的沖突:

clip_image038

如上圖所示:選擇工具--> 庫 --> 庫位置-->選擇當(dāng)前編輯的項(xiàng)目,選中Spring Framework 2.5,然后去掉cglib2.2那個jar包。這個包與Hibernate JPA中的cglib 2.1.3.jar有沖突

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


文章來源:http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!776.entry