前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EJB3入门(4)实体Bean

EJB3入门(4)实体Bean

作者头像
EltonZheng
发布2021-01-26 14:59:21
4220
发布2021-01-26 14:59:21
举报

实体Bean就是跟数据库中某个表对应的一个类。 类的每个实例对应数据库的一行记录。如果用过hibernate的人一定很熟悉这个概念。这个就是所谓的ORM模型。Jboss就是使用的Hibernate来实现的。

假设数据库中有这样一个表 caption id=”attachment_66” align=”alignnone” width=”498” caption=”mysql 表结构”

/caption 我们来写一个EJB应用,来把用户的密码得到。

先对Jboss做相关配置,便于读取数据库。 设置数据源 拷贝jboss安装目录下docs/jca中的mysql-ds.xml到default/deploy目录中,对其中的参数进行修改

代码语言:javascript
复制
    ejb
    jdbc:mysql://localhost:3306/ejb
    com.mysql.jdbc.Driver
    root
    
    org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
    
       mySQL

再将mysql的驱动拷贝到default/lib中 在源代码目录下的META-INF中建立配置文件persistence.xml,以便ejb项目可以使用jboss的数据源

代码语言:javascript
复制
        java:/ejb

其中jta-data-source中java后面的值一定要跟jboss数据源的jndi-name一致

下面就可以开始写一个与上面的表对应的实体Bean了

代码语言:javascript
复制
package me.prosight.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="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;
	}
}

@Entity 标记表明这是一个实体bean @Table 标记声明数据库的表的名字,如果不声明,同类名 @Id 表明这个字段是主键 @Column 标记说明这个属性对应的数据库中的字段名,不声明则同属性名。

我们需要建立一个无状态的session bean来调用实体bean

代码语言:javascript
复制
package me.prosight.service;

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

import me.prosight.entity.User;

/**
 * Session Bean implementation class UserBean
 */
@Stateless
public class UserBean implements UserBeanRemote {

	@PersistenceContext(unitName="myentity")
	protected EntityManager em;

	public String getPassword() {
		User user = em.find(User.class, 1);
		return user.getPassword();
	}

}

其中PersistenceContext中的unitName一定要跟persistence.xml中的persistence-unit中的name一致

最后,再写个测试类

代码语言:javascript
复制
package me.prosight.client;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import me.prosight.service.UserBeanRemote;

public class Client {
	public static void main(String[] args) throws NamingException {
		InitialContext ctx = new InitialContext();
		UserBeanRemote user = (UserBeanRemote)ctx.lookup("UserBean/remote");

		System.out.println(user.getPassword());
	}

}

部署好ejb后,再使用这个类测试,应该就可以得到数据库中的数据了。


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档