<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    EJB 3.0 學習筆記——Entity Bean(轉)

    在EJB 3.0 學習筆記——準備工作中只是簡單的搭好了EJB3.0開發的基本環境,之

    后就可以開發最簡單的Session Bean了,我感興趣的還是Entity Bean,所以接下來

    我想先試驗一下Entity Bean。
    ?
    一、在JBoss中配置好Data Source
    我使用的是MySQL數據庫,所以首先將MySQL的JDBC驅動復制到
    jboss-4.0.3SP1\server\all\lib目錄,然后將jboss-4.0.3SP1\docs\examples\jca

    下的mysql-ds.xml作出適當修改后復制到jboss-4.0.3SP1\server\all\deploy目錄

    下,這是我修改后的mysql-ds.xml文件:

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

    <!-- $Id: mysql-ds.xml,v 1.3.2.1 2004/12/01 11:46:00 schrouf Exp $ -->
    <!--? Datasource config for MySQL using 3.0.9 available from:
    http://www.mysql.com/downloads/api-jdbc-stable.html
    -->

    <datasources>
    ? <local-tx-datasource>
    ??? <jndi-name>MySqlDS</jndi-name>
    ??? <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
    ??? <driver-class>com.mysql.jdbc.Driver</driver-class>
    ??? <user-name>test</user-name>
    ??? <password></password>
    ??? <exception-sorter-class-

    name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</excepti

    on-sorter-class-name>
    ??? <!-- sql to call when connection is created
    ??? <new-connection-sql>some arbitrary sql</new-connection-sql>
    ????? -->
    ??? <!-- sql to call on an existing pooled connection when it is obtained

    from pool
    ??? <check-valid-connection-sql>some arbitrary sql</check-valid-

    connection-sql>
    ????? -->

    ??? <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml

    (optional) -->
    ??? <metadata>
    ?????? <type-mapping>mySQL</type-mapping>
    ??? </metadata>
    ? </local-tx-datasource>
    </datasources>
    這樣之后,JBoss下的MySQL Data Source配置完成。

    二、創建數據庫并編寫Entity Bean代碼

    create table book(
    id int not null auto_increment primary key,
    title varchar(20) not null,
    author varchar(40) not null
    );
    新建Java Project,導入User Library:EJB3_JBoss,以下是類代碼。

    //Book.java
    package ejb.bean.entity;

    import java.io.Serializable;

    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;

    @Entity
    @Table(name="book")
    public class Book implements Serializable {
    ?/**
    ? *
    ? */
    ?private static final long serialVersionUID = 1L;
    ?private Integer id;?
    ?private String title;?
    ?private String author;
    ?
    ?public Book() {??
    ??super();?
    ?}?
    ?public Book(Integer id, String title, String author) {?
    ??super();??
    ??this.id = id;??
    ??this.title = title;??
    ??this.author = author;?
    ??}
    ?@Override
    ?public String toString() {?
    ??
    ??return "Book: " + getId() + " Title " + getTitle() + "

    Author "?+ getAuthor();?
    ?}
    ?public String getAuthor() {
    ??return author;
    ?}
    ?
    ?@Id @GeneratedValue(strategy=GenerationType.AUTO)
    ?public Integer getId() {
    ??return id;
    ?}
    ?public String getTitle() {
    ??return title;
    ?}
    ?public void setAuthor(String author) {
    ??this.author = author;
    ?}
    ?public void setId(Integer id) {
    ??this.id = id;
    ?}
    ?public void setTitle(String title) {
    ??this.title = title;
    ?}

    }

    三、編寫一個簡單的Stateless Session Bean 并進行測試

    //BookTestLocal.java
    package ejb.bean.entity;

    import javax.ejb.Local;

    @Local
    public interface BookTestLocal {

    ?public void test();
    }

    //BookTestRemote.java
    package ejb.bean.entity;

    import javax.ejb.Remote;
    @Remote
    public interface BookTestRemote {
    ?
    ?public void test();

    }

    //BookTestBean.java
    package ejb.bean.entity;

    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;

    @Stateless
    public class BookTestBean implements BookTestLocal, BookTestRemote {

    ?@PersistenceContext
    ?EntityManager em;
    ?public void test() {
    ??// TODO Auto-generated method stub
    ??Book book = new Book(null, "My first bean book",

    "Sebastian");
    ??em.persist(book);

    ?}

    }


    //Client.java
    package ejb.client.entity;

    import ejb.bean.entity.*;


    import javax.naming.InitialContext;

    /**
    ?* Comment
    ?*
    ?* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
    ?* @version $Revision: 1.1.6.7 $
    ?*/
    public class Client
    {
    ?? public static void main(String[] args) throws Exception
    ?? {
    ????? InitialContext ctx = new InitialContext();
    ????? BookTestRemote book = (BookTestRemote) ctx.lookup

    ("BookTestBean/remote");

    ????

    ??
    ????? book.test();
    ?????
    ????? System.out.println("test successful! ");

    ?? }
    }

    三、其他文件
    將jboss-EJB-3.0_RC5-PFD\docs\tutorial中的找到的jndi.properties、log4j.xml

    、builder.xml等復制到當前工程中,其中builder.xml需要修改。
    //builder.xml
    <?xml version="1.0"?>

    <!--

    =======================================================================

    -->
    <!-- JBoss build file????????????????????????????????????????????????????

    ? -->
    <!--

    =======================================================================

    -->

    <project name="JBoss" default="ejbjar" basedir=".">

    ?? <property file="../local.properties" />
    ?? <property environment="env"/>
    ?? <property name="src.dir" value="${basedir}/src"/>
    ?? <property name="jboss.home" value="E:/Programming/Servers/jboss-

    4.0.3SP1/"/>
    ?? <property name="jboss.server.config" value="all"/>
    ?? <property name="build.dir" value="${basedir}/build"/>
    ?? <property name="build.classes.dir" value="${build.dir}/classes"/>

    ?? <!-- Build classpath -->
    ?? <path id="classpath">
    ????? <!-- So that we can get jndi.properties for InitialContext -->
    ????? <pathelement location="${basedir}"/>
    ????? <fileset dir="${jboss.home}/lib">
    ???????? <include name="**/*.jar"/>
    ????? </fileset>
    ????? <fileset dir="${jboss.home}/server/${jboss.server.config}/lib">
    ???????? <include name="**/*.jar"/>
    ????? </fileset>
    ????? <fileset dir="${jboss.home}/server/

    ${jboss.server.config}/deploy/ejb3.deployer">
    ???????? <include name="*.jar"/>
    ????? </fileset>
    ????? <fileset dir="${jboss.home}/server/

    ${jboss.server.config}/deploy/jboss-aop-jdk50.deployer">
    ???????? <include name="*.jar"/>
    ????? </fileset>
    ????? <pathelement location="${build.classes.dir}"/>
    ?? </path>

    ?? <property name="build.classpath" refid="classpath"/>

    ?? <!--

    =================================================================== -->
    ?? <!-- Prepares the build directory?????????????????????????????????????

    ? -->
    ?? <!--

    =================================================================== -->
    ?? <target name="prepare">
    ????? <mkdir dir="${build.dir}"/>
    ????? <mkdir dir="${build.classes.dir}"/>
    ?? </target>

    ?? <!--

    =================================================================== -->
    ?? <!-- Compiles the source code?????????????????????????????????????????

    ? -->
    ?? <!--

    =================================================================== -->
    ?? <target name="compile" depends="prepare">
    ????? <javac srcdir="${src.dir}"
    ???????? destdir="${build.classes.dir}"
    ???????? debug="on"
    ???????? deprecation="on"
    ???????? optimize="off"
    ???????? includes="**">
    ???????? <classpath refid="classpath"/>
    ????? </javac>
    ?? </target>

    ?? <target name="ejbjar" depends="compile">
    ????? <jar jarfile="build/tutorial.jar">
    ???????? <fileset dir="${build.classes.dir}">
    ??????????? <include name="**/*.class"/>
    ???????? </fileset>
    ????? ? <fileset dir=".">
    ????? ???? <include name="META-INF/persistence.xml"/>
    ????? ? </fileset>
    ????? </jar>
    ????? <copy file="build/tutorial.jar" todir="${jboss.home}/server/

    ${jboss.server.config}/deploy"/>
    ?? </target>

    ?? <target name="run.stateless" depends="ejbjar">
    ????? <java classname="ejb.client.stateless.Client" fork="yes" dir=".">
    ???????? <classpath refid="classpath"/>
    ????? </java>
    ?? </target>
    ?
    ?<target name="run.stateful" depends="ejbjar">
    ?????? <java classname="ejb.client.stateful.Client" fork="yes"

    dir=".">
    ????????? <classpath refid="classpath"/>
    ?????? </java>
    ?</target>
    ?
    ?<target name="run.timer" depends="ejbjar">
    ?????? <java classname="ejb.client.timer.Client" fork="yes"

    dir=".">
    ????????? <classpath refid="classpath"/>
    ?????? </java>
    ?</target>
    ?
    ?<target name="run.entity" depends="ejbjar">
    ??????? <java classname="ejb.client.entity.Client"

    fork="yes" dir=".">
    ?????????? <classpath refid="classpath"/>
    ??????? </java>
    ??</target>
    ?

    ?? <!--

    =================================================================== -->
    ?? <!-- Cleans up generated stuff????????????????????????????????????????

    ? -->
    ?? <!--

    =================================================================== -->
    ?? <target name="clean.db">
    ????? <delete dir="${jboss.home}/server/

    ${jboss.server.config}/data/hypersonic"/>
    ?? </target>

    ?? <target name="clean">
    ????? <delete dir="${build.dir}"/>
    ????? <delete file="${jboss.home}/server/

    ${jboss.server.config}/deploy/tutorial.jar"/>
    ?? </target>


    </project>

    最后,在工程目錄下新建目錄META-INF,在目錄META-INF新建persistence.xml文件

    ,以下是文件內容:
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence>
    ?? <persistence-unit name="test">
    ????? <jta-data-source>java:/MySqlDS</jta-data-source>
    ????? <properties>
    ????? ?<property name="hibernate.dialect"

    value="org.hibernate.dialect.MySQLDialect"/>????? ?
    ??????? <property name="hibernate.hbm2ddl.auto" value="update"/>
    ????? </properties>
    ?? </persistence-unit>
    </persistence>

    四、運行測試
    run as->ant build后,選擇運行目標為run.entity->run。
    運行結果:
    Buildfile: D:\Programs\Java\EclipseWork\EJB3\build.xml
    prepare:
    compile:
    ejbjar:
    run.entity:
    ???? [java] test successful!
    BUILD SUCCESSFUL
    Total time: 9 seconds


    MySQL中select * from book;
    id??????? title???????????????????? author
    1??????? My first bean book???????? Sebastian
    已經成功寫入。

    ?

    posted on 2006-07-21 01:39 liaojiyong 閱讀(609) 評論(0)  編輯  收藏 所屬分類: EJB

    主站蜘蛛池模板: 亚洲午夜在线电影| 99爱免费观看视频在线| 亚洲三级在线视频| 亚洲伊人久久大香线蕉综合图片| 性盈盈影院免费视频观看在线一区| 你是我的城池营垒免费观看完整版| 国产成人亚洲精品蜜芽影院| 国产精品高清视亚洲精品| 亚洲最新视频在线观看| 久久夜色精品国产亚洲| 在线日韩日本国产亚洲| 亚洲精品国产精品乱码不卡 | 亚洲综合另类小说色区| 国产大片线上免费看| 成人毛片免费网站| 皇色在线视频免费网站| 国产成人精品免费午夜app| 亚洲免费视频网站| 日韩免费电影网站| 久久久国产精品福利免费| 高清永久免费观看| 亚洲免费视频一区二区三区| 三年片在线观看免费观看大全中国 | 国产成人精品日本亚洲11| 亚洲神级电影国语版| 亚洲麻豆精品果冻传媒| 久久久久亚洲av无码专区导航 | 中文字幕无码日韩专区免费| 精品国产福利尤物免费| 一区二区3区免费视频| 黄 色一级 成 人网站免费| AAAAA级少妇高潮大片免费看| 久久www免费人成精品香蕉| 人成电影网在线观看免费| av电影在线免费看| 拍拍拍无挡视频免费观看1000| 国产午夜精品免费一区二区三区 | 亚洲精品动漫人成3d在线| 国产gv天堂亚洲国产gv刚刚碰| 亚洲欧洲日产国码无码网站| 国产亚洲一区二区三区在线观看|