創(chuàng)建項(xiàng)目:
打開(kāi)NetBeans 6.5.1,選擇文件—》新建項(xiàng)目,選擇Java Web,然后在項(xiàng)目列表中選擇 Web 應(yīng)用程序,下一步
選擇使用專(zhuān)用文件夾存儲(chǔ)庫(kù),指定庫(kù)文件夾的位置,通常是默認(rèn)的.\lib,即項(xiàng)目文件夾下的lib文件夾,下一步
選擇Web應(yīng)用服務(wù)器。這里選擇Tomcat 6.0.18 ,Java EE版本選擇 Java EE 5,下一步
在框架對(duì)話(huà)框中什么都不選擇,直接點(diǎn)擊完成。
配置項(xiàng)目:
1. 配置OperaMask
在WEB-INF文件夾下新建一個(gè)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)目中,右鍵單擊“庫(kù)”節(jié)點(diǎn),選擇添加庫(kù)
然后選擇導(dǎo)入,選擇Spring 2.5庫(kù),選擇導(dǎo)入庫(kù),添加庫(kù)。
再次選擇添加庫(kù),然后選擇創(chuàng)建。庫(kù)名稱(chēng)為OperaMask,庫(kù)類(lèi)型為類(lèi)庫(kù):
在“定制庫(kù)”中選擇“添加JAR/文件夾”,在彈出的對(duì)話(huà)框中選擇OperaMask的基本jar包,并將導(dǎo)入方式指定為:復(fù)制到庫(kù)文件夾。
一路選是。
2. 配置Spring以及與OperaMask的整合
然后再創(chuàng)建一個(gè)OperaMask_SpringCompatibility庫(kù),將OperaMask中的spring文件夾下的operamasks-spring.jar添加進(jìn)來(lái)
然后在新創(chuàng)建的項(xiàng)目中展開(kāi)WEB-INF文件夾,打開(kāi)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,選擇如圖所示的幾個(gè)命名空間:
選擇完成,然后在Beans節(jié)點(diǎn)之間添加如下內(nèi)容:
<!-- 開(kāi)啟基于注解的配置 --> <context:annotation-config/> <!-- 使 AOM 中的 LiteBean 同樣能夠被 Spring 所感應(yīng)到 --> <bean class="org.operamasks.faces.spring.ManagedBeanConfigurer"/> |
3. 配置JPA持久化支持
在服務(wù)選項(xiàng)卡中,選擇MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng),然后右鍵單擊,選擇連接設(shè)置,配置你要使用的數(shù)據(jù)庫(kù):
數(shù)據(jù)庫(kù)配置完畢,然后回到項(xiàng)目選項(xiàng)卡,右鍵單擊剛創(chuàng)建的項(xiàng)目,選擇新建-->其它-->持久性-->持久性單元
在新建持久性單元對(duì)話(huà)框中選擇持久性庫(kù)為Hibernate,即選擇Hibernate為JPA持久單元的實(shí)現(xiàn),數(shù)據(jù)庫(kù)連接選擇我們剛配置好的MySQL連接。
單擊完成。此時(shí),Hibernate的JPA庫(kù)已經(jīng)被添加到項(xiàng)目的lib目錄下了。包含了基本的Hibernate jar包和Hibernate JPA支持jar包。
注:使用JPA的一個(gè)好處就是我們不需要在一個(gè)統(tǒng)一的配置文件里羅列所有的實(shí)體類(lèi),而是可以讓實(shí)體管理器自動(dòng)掃描所有被@Entity注解了的實(shí)體類(lèi)。要實(shí)現(xiàn)這種功能,如果項(xiàng)目的JPA實(shí)現(xiàn)遷移到TopLink Essential,需要加入下面的配置:
找到項(xiàng)目中的“配置文件”節(jié)點(diǎn),打開(kāi)persistence.xml文件,調(diào)整到XML視圖中,在<provider> </provider>節(jié)點(diǎn)后添加:
<exclude-unlisted-classes>false</exclude-unlisted-classes> 一行。如果希望使用Hibernate實(shí)現(xiàn),請(qǐng)一定不要加入這一行,否則,您必須將您創(chuàng)建的所有實(shí)體類(lèi)逐一添加到persistence.xml中。
如果要使用Spring提供的JpaTemplate(即實(shí)現(xiàn)JpaDaoSupport方式),則回到spring的applicationContext.xml文件,在<beans>節(jié)點(diǎn)里面添加:
<!-- 利用Spring的實(shí)體管理器工廠來(lái)創(chuàng)建JPA實(shí)體管理器,傳入的參數(shù)為persistence.xml中指定的持久化單元名稱(chēng) --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="DMCSv1PU"/> </bean> <!-- 聲明一個(gè)Spring提供的JPA事務(wù)管理器,傳入的參數(shù)正是Spring中的實(shí)體管理器工廠 --> <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- 開(kāi)啟Spring提供的基于注解的聲明式事務(wù)管理 --> <tx:annotation-driven transaction-manager="txManager"/> |
至此,持久化支持配置完畢。
創(chuàng)建實(shí)體類(lèi)和相應(yīng)的JPA控制類(lèi)
右鍵單擊項(xiàng)目,選擇新建-->其它-->持久性-->通過(guò)數(shù)據(jù)庫(kù)生成實(shí)體類(lèi),選擇數(shù)據(jù)庫(kù)表:
點(diǎn)擊下一步,輸入合適的包名
下一步,映射選項(xiàng)如下圖所示:
選擇新建-->其它-->持久性-->基于實(shí)體類(lèi)的JPA控制器類(lèi),下一步:
添加要生成控制器類(lèi)的實(shí)體類(lèi),下一步:
選擇合適的包,然后完成。
后面的配置無(wú)非就是將JPA的控制器類(lèi)寫(xiě)入Spring的配置文件,然后在AOM的LiteBean中注入這些控制器類(lèi),實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作以及相應(yīng)的業(yè)務(wù)邏輯。
注:解決Spring與Hibernate JPA的沖突:
如上圖所示:選擇工具--> 庫(kù) --> 庫(kù)位置-->選擇當(dāng)前編輯的項(xiàng)目,選中Spring Framework 2.5,然后去掉cglib2.2那個(gè)jar包。這個(gè)包與Hibernate JPA中的cglib 2.1.3.jar有沖突
文章來(lái)源:http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!776.entry