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

xiaoxiao2026-06-21  25

本文为原创,如需转载,请注明作者和出处,谢谢!上一篇: 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 /> --> package entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = " t_users " ) public class User { private int id; private Stringname; private Stringpassword; @Id public int getId() { return id; } public void setId( int id) { this .id = id; } public StringgetName() { return name; } public void setName(Stringname) { this .name = name; } @Column(name = " password_md5 " ) public StringgetPassword() { return password; } public void setPassword(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" ?> < persistence xmlns ="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-unit name ="myentity" > < jta-data-source > java:/MyPIM </ jta-data-source > < properties > < property name ="hibernate.hbm2ddl.auto" value ="none" /> < property name ="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 /> --> package service; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import entity.User; @Stateless public class UserBean implements UserBeanRemote { @PersistenceContext(unitName = " myentity " ) protected EntityManagerem; @Override public String getPassword() { Useruser = em.find(User. class , 1 ); return user.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 = new InitialContext(); 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开发速学宝典》出版,欢迎定购 相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5050549.html

最新回复(0)