`
seara
  • 浏览: 620362 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

eclipse + JBoss 5 + EJB3开发指南(6):编写第一个实体Bean程序

阅读更多
本文为原创,如需转载,请注明作者和出处,谢谢!

上一篇:eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean

EJB3容器通过EntityManager对象管理实体Bean,该类最主要的功能就是在记录和JavaBean之间进行互相映射。例如,我们从数据库中查出一条记录,这条记录有field1和field2两个字段,假设有一个JavaBean,也包含了field1和field2属性。那么EntityManager可以将这条记录中的值映射到JavaBean的field1和field2属性中。也就是说,在数据库中的一条记录就对应于一个JavaBean的对象实例。下面将给出一个简单的例子来演示如何来实现一个应用实体Bean的程序。在这个例子中使用无状态的session bean通过EntityManager对象从数据表中查找一条记录,将该记录映射成实体Bean的对象实例,最后通过session bean的方法返回该记录的某个字段值。

表名:t_users
表中的字段和记录
id name password_md5
1 bill TaokQpoNJQb02eafO/JgYw==

一、配置JBoss的数据库连接池

在<jboss安装目录>\server\default\deploy目录中建立一个mysql-ds.xml文件,内容如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><?xmlversion="1.0"encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MyPIM</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/pim</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>1234</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

mysql-ds.xml文件用于配置mysql的数据源。实际上,该文件可以在<jboss安装目录>\docs\examples\jca目录中找到,读者只需要将数据库名、用户名和密码以及jndi名改成自己的就可以了。最后将修改后的mysql-ds.xml文件复制到deploy目录中(必须叫这个文件名)。
连接mysql数据库需要一个jdbc驱动(jar文件),将该文件复制到<jboss安装目录>\server\default\lib目录中。

二、编写实体Bean

User类是一个实体Bean,代码如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packageentity;

importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.Id;
importjavax.persistence.Table;

@Entity
@Table(name
="t_users")
publicclassUser
{
privateintid;
privateStringname;
privateStringpassword;
@Id
publicintgetId()
{

returnid;
}
publicvoidsetId(intid)
{
this.id=id;
}
publicStringgetName()
{
returnname;
}
publicvoidsetName(Stringname)
{
this.name=name;
}
@Column(name
="password_md5")
publicStringgetPassword()
{
returnpassword;
}
publicvoidsetPassword(Stringpassword)
{
this.password=password;
}

}

三、配置persistence.xml文件

在META-INF目录中建立一个persistence.xml文件,代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><?xmlversion="1.0"encoding="UTF-8"?>
<persistencexmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

version
="1.0">
<persistence-unitname="myentity">
<jta-data-source>java:/MyPIM</jta-data-source>
<properties>
<propertyname="hibernate.hbm2ddl.auto"value="none"/>
<propertyname="hibernate.dialect"value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
</persistence-unit>
</persistence>

其中<jta-data-source>元素的值就是mysql-ds.xml文件中配置的数据源名。如果使用注释配置session bean,META-INF目录下只有两个文件即可:MANIFEST.MF和persistence.xml。

四、在session bean中调用实体bean


<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->packageservice;

importjava.util.ArrayList;
importjava.util.List;
importjavax.ejb.Stateless;
importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceContext;
importentity.User;

@Stateless
publicclass UserBeanimplements UserBeanRemote
{
@PersistenceContext(unitName
="myentity")
protectedEntityManagerem;

@Override
publicString getPassword()
{

Useruser
=em.find(User.class,1);
returnuser.getPassword();
}
}

其中UserBeanRemote为远程接口。要注意的是,@PersistenceContext注释的unitName属性值必须和persistence.xml文件中的<persistence-unit>元素的name属性值相同。

五、客户端调用session bean

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->InitialContextctx=newInitialContext();
UserBeanRemote
userBeanRemote =(UserBeanRemote)ctx.lookup("MyEnterprise/UserBean/remote");
System.out.println(userBeanRemote.getPassword(
));

由于本书的程序都在一个ear包中,因此,默认的jndi名是MyEnterprise/UserBean/remote,如果直接发布包含EJB的jar包,默认的jndi名称为UserBean/remote。
运行上面的代码后,将输出如下的字符串:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->TaokQpoNJQb02eafO/JgYw==

下一篇:eclipse + JBoss 5 + EJB3开发指南(7):实现Entity Bean的一对一(one-to-one)映射



国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

分享到:
评论

相关推荐

    eclipse + JBoss 5 + EJB3开发指南

    [6] 使用 Eclipse 建立第一个 EJB3 Project [ 即 HelloWorld ]: 18 [7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces: 19 [8] 建立客户端测试程序: 20 [9] 使用 ANT 建立 EJB-JAR 并...

    Eclipse+Jboss EJB技术 会话Bean

    广东工业大学Java EE Web编程技术课程实验,使用JBoss,实现EJB技术中的会话Bean,简单的Helloworld。

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到实际开发中。该案例采用目前最流行、最规范的java ee架构,整个应用...

    Jboss下开发ejb应用之一会话bean的应用

    NULL 博文链接:https://fruitking.iteye.com/blog/562868

    使用JBoss 4.2书写EJB3.0无状态会话Bean + JPA + MySql 5.0的Hello World Java EE应用

    本示例是对上一个资源“演示EJB3.0 + JPA + MySQL5.0 + C3P0连接池技术实战编程(Top-Down的XP开发方式)”的简化版本--主要是使用Eclipse 3.4 Ganymede版本来开发EJB3.0中间件与JPA持久层的实战应用。 使用步骤: ...

    传智播客 EJB3.0PPT 完整版 黎明活

    02_开发第一个无状态会话bean 03_开发EJB的客户端 04_把jboss集成进eclipse 05_通过ANT提高EJB应用的开发效率 06_开发具有本地接口的无状态bean 07_开发有状态bean 08_通过注解方式注入并使用其他EJB或者服务...

    jboss-as-7.1.1.Final

    四、第一个EJB工程 【File】——&gt;【New】——&gt;【Other】 (找到EJB,并且选择EJB Project)——&gt;【Next】 输入: Project name:TestEJB Target runtime:选择JBoss7.1 EJB module version:选择3.1 ——&gt;【Next】...

    eclipse-ejb项目.zip

    使用的是eclipse创建ejb项目,并使用wildfly(jboss也可以)进行有状态/无状态sessionbean的部署

    jboss5 as development源码

    jboss5 as developemnt是一本很好的书,基本上包括了从entitybean,sessionbean,messagedrivenbean,managedbean的开发。 从ejb工程,到jsf2.0工程,很好的示例,手把手交的。底层连接数据库,开发工具是eclipse ...

    EJB HelloWorld

    1定义一个业务方法接口 public interface HelloWorld { public String SayHello(String name); } 2编写BeanClass @Stateless @Remote ({HelloWorld.class}) public class HelloWorldBean implements Hello...

    第一个JPA演示程序

    理由:持久层技术从EJB 2.0的实体bean开始,相继出现JDO, Hibernate, iBats等技术,到今天统一的标准JPA出现。因为JPA是一种标准,所以它是我们Java程序员应该主动掌握的技术。该技术与EJB 3.0配合使用,相信会在...

    jee7_development_wildfly

    Java EE 7 技术: Eclipse Mars + JBoss AS插件JBoss Cli Projeto票务机构: Maven(commódulos) EJB Singleton,无状态,Statefull电子客户端EJB 锁定/写入和并发管理(ConcurrencyManagementType.BEAN) ...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.2. 第一个例子:注册示例.............................................................................................................................................. 15 1.2.1. 了解代码.................

    javaee登陆页面源码-lab2:实验室2

    在2台机器上模拟2个录入员,生成1000个校友用户,并进行各种增删改的操作。 环境设置、工具 java jdk (1.6或者以上) IDEA 或者 eclipse 等开发环境 Wildfly服务器 mysql数据库 具体过程 1. 安装Wildfly服务器 ####...

Global site tag (gtag.js) - Google Analytics