日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > EJB初級篇--EJB組件之實體Bean

EJB初級篇--EJB組件之實體Bean

來源:程序員人生   發布時間:2015-01-07 08:29:57 閱讀次數:3429次

     上文我們對會話Bean的生命周期和兩個子類型(有狀態會話Bean和無狀態會話Bean)進行了詳細解說,本篇博文中我們繼續說說EJB組件中的實體Bean

     其實實體Bean就是1個加了注釋符@Entity)的簡單java對象POJO),實體關系和O/R映照也是通過注釋符來定義的,并且提供了幾種不同的數據庫操作規范。1旦被EntityManager訪問,它就成了1個持久化對象,我們就能夠像之前使用Hibernate1樣來使用實體對象了。

     下圖是實體Bean內容結構圖,方便我們宏觀的了解實體Bean。通過實體管理器操作實體Bean,來實現對數據庫的更新、JPQL查詢和SQL查詢。可以說,實體管理器工具實體Bean則是數據

計算機生成了可選文字:實體管理器執行更新十JP區查詢十日朗n~“口飯月/-產困叭尸‘、‘/氣J交0門Cle夕~、沂一\SqIServer,~_一尸、~

     下面主要是通過1個實體Bean實例,來理解其調用進程。其進程主要包括以下各個進程:

     1)配置數據源

     2)指定數據源

     3)開發1個實體Bean

     4)開發會話Bean進行調用

     5)打包并部署到JBoss服務器

     6)開發客戶端進行測試

     看著上面6個步驟是否是覺得記不住啊,沒有關系,這個不需要記,理解了自然就會了。當我們需要新建1個項目時,(1)首先需要肯定數據源并且進行配置吧,這就是我們上面的第1個進程--配置數據源;2)配置完數據源(1個或多個)后,我們就需要肯定當前實體Bean分別需要使用哪一個數據源,也就是第2個進程--指定數據源;3)做好和數據庫連接的準備了,我們需要開發實體Bean來對應數據庫中的表,就是第3個進程--開發1個實體Bean4)實體Bean開發完成后,可以被會話Bean調用,也能夠被其他類調用,在本實例中我們采取會話Bean調用實體Bean,所以需要第4個進程--開發會話Bean進行調用;5)到此我們服務器真個代碼編寫就完成了,但是我們還需要進行打包并部署到JBoss服務器上,以供客戶端調用,故第5個進程--打包并部署到JBoss服務器6)最后就是我們客戶端對服務器端組件的調用了,第6個進程--開發客戶端進行測試。

     通過上面簡單通俗的介紹,不知道你對實體Bean調用進程的幾個步驟加深印象了沒有,暫時沒有也沒有關系,以后多用,用著用著就理解深入了,用著用著就爛記于心了。下面我在對這幾個進程進行1個詳細的演示和解說。


1)配置數據源


     在實際利用中,我們可能需要使用不同的數據庫,如MySQLOracleMSSQL Server等。各個數據庫數據源配置模板都在%Jboss_Home%docsexamplesjca目錄下,共包括38中數據源的連接。要配置到某1個數據源的連接,需要進行以下步驟:

     1.復制模板--復制該數據庫類型的配置模板到%Jboss_Home%serverdefaultdeploy目錄,并設置數據源參數(以MSSQL Server為例);

<span style="font-size:18px;"><datasources> <local-tx-datasource> <!-- 數據源名稱 --> <jndi-name>MSSQLDS</jndi-name> <!-- 指定連接本地的Demo數據庫 --> <connection-url>jdbc:microsoft:sqlserver://localhost:8080;DatabaseName=Demo</connection-url> <!-- 數據庫驅動類 --> <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> <!-- Demo數據庫登錄用戶名--> <user-name>sunliduan</user-name> <!-- Demo數據庫登錄密碼--> <password>sunliduan</password> <metadata> <type-mapping>MSSQLSERVER2000</type-mapping> </metadata> </local-tx-datasource> </datasources></span>

     如果JBoss服務器處于啟動狀態,則此時JBoss會自動監控到該文件,并加載起來,并在控制臺輸出相應信息。

     2.添加驅動--添加該數據庫的驅動程序包到%Jboss_Home%serverdefaultlib目錄,并重啟JBoss服務器加載該程序包。

     各個數據庫的數據源配置都是這兩個步驟,基本類似。


2)指定數據源


     以上配置的數據源都是由JBoss服務器加載和管理的,要使用這些數據源,還需要在利用中指定援用哪個數據源。而這項工作的完成靠persistence.xml便可。

<span style="font-size:18px;"><SPANstyle="FONT-SIZE: 14px; FONT-FAMILY: MicrosoftYaHei"><persistence> <!-- Name屬性用于定義持久化內容的名稱 --> <persistence-unitname="demo"> <!-- Jta-data-source 用于指定實體Bean使用的數據源名稱 --> <jta-data-source>java:/MSSQLDS</jta-data-source> <!-- 廠商專有屬性(可選) --> <properties> <!--自動輸出schema創建DDL語句 --> <propertyname="hibernate.hbm2ddl.auto" value="create-drop"/> </properties> </persistence-unit> </persistence></SPAN></span>

     這里需要注意的1點是:"hibernate.hbm2ddl.auto"的值,若為上文中的"create-drop",則在實體Bean發布及卸載時將自動創建及刪除相應的數據庫表。為了使以后實體Bean的改動能反應到數據庫表,建議使用update,這樣實體Bean添加1個屬性時能同時在數據庫表增加相應字段。


3)開發實體Bean


     實體Bean實際上對應了數據庫中的,它是數據庫中表在Java類中的表現。EJB容器能夠根據實體Bean自動在數據庫中創建數據表。

     開發1個實體Bean很簡單,只需要新建1個POJO,添加與數據表字段同名的變量,同時使用1些注釋符來表示該實體Bean數據庫表的對應映照關系便可。

<span style="font-size:18px;">/** * @ClassName: 用戶實體Bean * @Description: 用戶實體Bean * @author 孫麗端 * @date 2014年11月28日20:22:51 */ package com.tgb.ejb; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="user") public class User implements Serializable { private int id; //用戶ID private String username; //用戶名 private String password; //密碼 @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name="userName",length=50) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(name="password",length=50) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }</span>

     需要注意:實體Bean需要實現Serializable接口,這樣就能夠有EJB客戶端創建該對象,并將該對象傳送到服務器端。

 

4)開發會話Bean并調用


     實體Bean既可以被會話Bean調用,也能夠被任何的JavaJSP調用,在EJB利用程序中,我們通常會在會話Bean中調用實體Bean,來實現對數據庫的操作。

     新建1個遠程的會話Bean組件后會生成1個遠程接口類實現類。代碼以下:


<span style="font-size:18px;">/** * @ClassName: 用戶管理的遠程接口類 * @Description: 用戶管理的遠程接口類 * @author 孫麗端 * @date 2014年11月28日20:22:51 */ package com.tgb.ejb; import javax.ejb.Remote; @Remote public interface UserManager { public void addUser(User user); }</span>

<span style="font-size:18px;">/** * @ClassName: 用戶管理的實現類 * @Description: 用戶管理的實現類 * @author 孫麗端 * @date 2014年11月28日20:22:51 */ package com.tgb.ejb; import javax.ejb.Local; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless @Local public class UserManagerBean implements UserManager { @PersistenceContext protected EntityManager em; @Override public void addUser(User user) { em.persist(user); //保存記錄 } }</span>

     其中我們比較陌生的多是@PersistenceContextEntityManager。先說EntityManager,它是實體管理器,也就是實體Bean的管理容器。通過該對象,我們能夠實現與數據庫的各種交互,包括增刪改查等。再說@PersistenceContextEntityManager通過注釋@PersistenceContext可以實現動態注入EntityManager對象,如果persistence.xml文件中配置了多個不同的持久化內容,則還需要通過unitName屬性來指定持久化名稱,以下:

<span style="font-size:18px;">@PersistenceContext(unitName="demo") protected EntityManager em;</span>


(5)打包并部署到JBoss服務器


     完成了以上的開發,我們就能夠將當前利用發布到JBoss中,構成JNDI服務以供外部訪問了。發布的方法很簡單,只需要導出該項目的JAR包到JBoss服務器的部署目錄%Jboss_Home%serverdefaultdeploy便可。然后JBoss服務器就會自動加載該服務,創建數據庫表,并且發布JNDI服務UserManagerBean/remote,我們就能夠通過客戶端訪問JNDI服務UserManagerBean/remote了。

 

6)開發客戶端進行測試


     首先我們需要把實體類User.java和接口類UserManager.java導出為Jar添加到客戶端項目的類路徑下,然后新建測試類UserManagerClient.java,代碼以下:

<span style="font-size:18px;">/** * @ClassName: 用戶管理的客戶端測試類 * @Description: 用戶管理的客戶端測試類 * @author 孫麗端 * @date 2014年11月28日20:22:51 */ package com.tgb.ejb; import javax.naming.InitialContext; import javax.naming.NamingException; public class UserManagerClient { public static void main(String[] args) throws NamingException { InitialContext context = new InitialContext(); UserManager usermanager = (UserManager)context.lookup("UserManagerBean/remote"); User user = new User(); user.setUsername("孫麗端"); user.setPassword("sunliduan"); usermanager.addUser(user); System.out.print("用戶已成功保存!"); } }</span>

     該類就通過訪問遠程JNDI服務UserManagerBean/remote”,獲得了遠程會話Bean實例usermanager。然后創建了1個實體對象,調用addUser方法插入該對象。

 

     這樣就是1個完全的利用實體Bean數據庫中添加數據的1個小demo了。最后用1張圖來表示1下以上6個進程之間的關系:


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 美女视频网站久久 | 91精品国产综合久久久久蜜臀 | 欧美亚洲三区 | 国产精品热 | 免费中文字幕日韩 | 国产尤物av | 国产精品乱码一区二区三区 | 免费看黄网址 | 日韩av免费在线观看 | 国产激情第一页 | 一级毛片成人免费看a | 精品美女一区二区 | 成人h视频在线观看 | 国产精品成 | 免费a视频 | 黄色成人在线观看 | 久久国产精品99久久久久久老狼 | 亚洲免费网站 | 欧美日韩一区二区三区不卡 | 成人国产 | 国产精品国产三级国产三级人妇 | 日韩 欧美 亚洲 国产 | 日韩一区二区三区四区五区六区 | 99精品久久久 | 精品视频免费看 | 黄色免费av| 日韩久久久久久久久久久久 | 69成人网| 国产一区二区三区欧美 | 亚洲区视频在线 | 久久久夜精品 | 久久精品国产一区二区三区不卡 | 国产成人精品久久二区二区91 | 国产精品国色综合久久 | 一区二区三区四区视频在线观看 | 91精品入口 | 日韩免费一区 | 精品一区二区三区国产 | 中文字幕一区二区在线播放 | 亚洲最黄网站 | 国产午夜精品久久久久久久 |