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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
  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文件,内容如下:
<? xml version="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,代码如下:
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  String name;
    
private  String password;
    @Id
    
public   int  getId()
    {
        
        
return  id;
    }
    
public   void  setId( int  id)
    {
        
this .id  =  id;
    }
    
public  String getName()
    {
        
return  name;
    }
    
public   void  setName(String name)
    {
        
this .name  =  name;
    }
    @Column(name 
=   " password_md5 " )
    
public  String getPassword()
    {
        
return  password;
    }
    
public   void  setPassword(String password)
    {
        
this .password  =  password;
    }
    
}

三、配置persistence.xml文件

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

<? xml version="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

    
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  EntityManager em;

    @Override
    
public  String getPassword()
    {

        User user 
=  em.find(User. class 1 );        
        
return  user.getPassword();
    }
}

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

五、客户端调用session bean

InitialContext ctx  =   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。
    运行上面的代码后,将输出如下的字符串:

TaokQpoNJQb02eafO / JgYw ==



 本文转自 androidguy 51CTO博客,原文链接: http://blog.51cto.com/androidguy/214437 ,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
Java Android开发
eclipse开发和运行Java程序
eclipse开发和运行Java程序
47 0
|
Android开发
错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
79 0
|
Java 程序员 Android开发
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
266 0
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
|
Java Android开发 C语言
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
|
Java Android开发 Spring
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
121 0
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
|
Java Android开发 Spring
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
196 0
sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
|
Java Android开发 Spring
spring练习,使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出。
spring练习,使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出。
130 0
spring练习,使用Eclipse搭建的Spring开发环境,使用set注入方式为Bean对象注入属性值并打印输出。
|
Java Android开发
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
133 0
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
|
Java 数据库 Android开发
用Eclipse调试Java程序的一些小技巧
用Eclipse调试Java程序的一些小技巧
用Eclipse调试Java程序的一些小技巧
|
Java 应用服务中间件 Maven
Eclipse 部署应用程序到阿里云 EDAS
在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云 EDAS 了,那该如何配合这个插件部署应用呢?在本文中,我们来介绍 部署 Java 应用程序到阿里云 EDAS。
3799 0

推荐镜像

更多