参考文献:
myeclipse+jboss开发EJB3.0之实体Bean
一. 配置
Jboss有一个默认的数据源DefaultDS,他使用Jboss内置的HSQLDB数据库。实际应用中你可能使用不同的数据库,如MySql、MsSqlServer、Oracle等。各种数据库的数据源配置模版你可以在[Jboss_home]\docs\examples\jca 目录中找到,默认名称为:数据库名+ -ds.xml 。不管你使用那种数据库都需要把他的驱动类Jar 包放置在[Jboss_home]\server\all\lib 目录下,放置后需要启动Jboss服务器。前一篇博客有提到相关内容: JBoss中配置数据源出现错误:“Failed to register driver for: com.mysql.jdbc.Driver”的解决方法
下面介绍Mysql的数据源配置,数据源配置文件的取名格式必须为 xxx–ds.xml ,如:mysql-ds.xml ,mssqlserver-ds.xml,oracle-ds.xml 。 数据源文件配置好后需要放置在[jboss_home]/server/config-name/deploy目录下,我现在采用的配置名为:default,所以路径为[jboss_home]/server/default/deploy目录下面定义一个名为MySqlDS的Mysql数据源,连接数据库为ejb,数据库登录用户名为root,密码为root,数据库驱动类为com.mysql.jdbc.Driver。大家只需修改数据库名及登录用户名密码就可以直接使用。
mysql-ds.xml
二. 开发实体bean
开发前先介绍需要映射的数据库表:person
注意:在这里并没有在数据库中建表,表是在发布ejb这个jar包的时候创建的。
Person.java
为了使用上面的实体Bean,我们定义一个Session Bean作为他的使用者。下面是Session Bean 的业务接,他定义了两个业务方法insertPerson和getPersonNameByID,insertPerson用作添加一个Person,getPersonNameByID 根据personid获取人员的姓名。
PersonDAO.java
下面是Session Bean的实现
上面我们使用到了一个对象:EntityManager em,EntityManager 是由EJB容器自动地管理和配置的,不需要用户自己创建,他用作操作实体Bean。关于他的更多介绍请参考持久化实体管理器EntityManager。 上面em.find()方法用作查询主键ID 为personid的记录。em.persist()方法用作向数据库插入一条记录。
大家可能感觉奇怪,在类中并没有看到对EntityManager em进行赋值,后面却可以直接使用他。这是因为在实体Bean加载时,容器通过@PersistenceContext注释动态注入EntityManager 对象。
如果persistence.xml文件中配置了多个不同的持久化内容。你需要指定持久化名称注入EntityManager 对象,可以通过@PersistenceContext注释的unitName属性进行指定,例:
如果只有一个持久化内容配置,不需要明确指定。
下面是persistence.xml文件的配置:
三.打包项目并发布
1. 配置数据源文件mysql-ds.xml并放置在[jboss_home]/server/deploy/deploy 目录,把数据库驱动Jar 包mysql-connector-java-bin.jar放置在[Jboss_home]\server\default\lib 目录下,放置后需要重启Jboss服务器。如果数据源已经存在就不需要配置。
2. 配置persistence.xml文件,在文件中指定使用的源据源及各项参数。
3. 把实体类和persistence.xml文件打成Jar,persistence.xml 放在jar 文件的META-INF目录
打包方法:在eclipse中右键项目EJBStudy->export->java->jar file,然后选择要打包的内容,如下图所示:
将生成的EJBStudy.jar放到目录jboss-5.0.1.GA\server\default\deploy下。这个时候eclipse的console中会提示信息:
我们在mysql数据库中也会看到ejb数据中创建了一张person表。
四.测试
创建一个EJB客户端来测试,代码如下
不明白为什么会有如下这么多警告,不过数据已经正确插入表person中
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2011/10/20/2296954.html,如需转载请自行联系原作者