EJB3.0之(Entity)Bean

【进阶EJB】深入探讨三种Bean(二)——Entity Bean 通过上一篇文章,我们介绍了【进阶EJB】深入探讨三种Bean(一)——Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity Bean。Entity Bean,通过名字我们就知道是实体Bean是存放数据的。Entity Bean是持久化的数据组件,代表持久存储的商业实体对象。通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据。上篇文章中说的Session Bean可作为Entity Bean的客户 阅读详情
 

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence>
 <persistence-unit name=" webapp">
  <jta-data-source>java:/webappDS</jta-data-source>
  <properties>
   <property name="hibernate.hbm2ddl.auto" value="update" />
  </properties>
 </persistence-unit>
</persistence>

persistence-unit 节点可以有一个或多个,每个persistence-unit 节点定义了持久化内容名称、使用的数据源名称及Hibernate属性。name 属性用作设置持久化名称。jta-data-source 节点用作指定实体Bean使用的数据源名称,指定数据源名称时java:/ 前缀不能缺少,数据源名称大小写敏感。properties 节点用作指定Hibernate的各项属性,如果hibernate.hbm2ddl.auto的值设为create-drop,在实体Bean发布及卸载时将自动创建及删除相应数据库表(注意:Jboss服务器启动或关闭时会引发实体Bean的发布及卸载)。

如果你的表已经存在,并且想保留数据,发布实体bean时可以把hibernate.hbm2ddl.auto的值设为none或update,以后为了实体bean 的改动能反应到数据表,建议使用update,这样实体Bean添加一个属性时能同时在数据表增加相应字段

persistence.xml要放到META-INF文件下,并打包进JAR文件里才行。

实体Bean

package ejb;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

@Entity
@Table(name="T_USER")//表名为T_USER,后面getUserList()方法里,用的是:from TUser u order by name,和EntityBean的类名相同。
@SuppressWarnings("serial")

public class TUser implements Serializable {
 private String name;
 private String sex;
 private Date birthday;
 
 @Id
 @Column(name="name",length=20,nullable=false)
 public String getName(){
  return name;
 } 
 
 public void setName(String name){
  this.name = name;
 }
 
 @Column(name="sex",length=1,nullable=false)
 public String getSex(){
  return sex;
 }
 
 public void setSex(String sex) throws Exception{
  if(sex.matches("[FMSfms]")){
   this.sex = sex;
  }else{
   throw new Exception("Sex Error!Must be in S,F,M");
  }
 }
 
 @Column(name="birthday")
 public Date getBirthday(){
  return birthday;
 }
 
 public void setBirthday(Date birthday){
  this.birthday = birthday;
 }
}

@Entity注释指明这是一个实体Bean,每个实体Bean类映射数据库中的一个表,@Table注释的name属性指定映射的数据表名称.

实体Bean的每个实例代表数据表中的一行数据,行中的一列对应实例中的一个属性。

@Column注释定义了映射到列的所有属性,如列名是否唯一,是否允许为空,是否允许更新等,他的属性介绍如下:
 ·name: 映射的列名。如:映射Person表的PersonName列,可以在name属性的getName 方法上面加入
 @Column(name = "PersonName"),如果不指定映射列名,容器将属性名称作为默认的映射列名。
 ·unique: 是否唯一
 ·nullable: 是否允许为空
 ·length: 对于字符型列,length属性指定列的最大字符长度
 ·insertable: 是否允许插入
 ·updatable: 是否允许更新
 ·columnDefinition: 定义建表时创建此列的DDL
 ·secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。
@Id 注释指定personid属性为表的主键,它可以有多种生成方式:
 ·TABLE:容器指定用底层的数据表确保唯一。
 ·SEQUENCE:使用数据库的SEQUENCE 列来保证唯一
 ·IDENTITY:使用数据库的INDENTIT列来保证唯一
 ·AUTO:由容器挑选一个合适的方式来保证唯一
 ·NONE:容器不负责主键的生成,由调用程序来完成。
@GeneratedValue注释定义了标识字段的生成方式

实体bean需要在网络上传送时必须实现Serializable接口,否则将引发java.io.InvalidClassException例外。


用户实体Bean的Session Bean

package ejb;

import java.util.Date;
import java.util.List;
import ejb.TUser;

public interface TUserDAO {
 public boolean addUser(String name,String sex,Date birthday);
 public boolean updateUser(TUser user);
 public boolean deleteUser();
 public List getUserList();
}

package ejb;

import javax.ejb.Stateless;
import javax.ejb.Remote;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
import ejb.TUserDAO;
import ejb.TUser;

@Remote(TUserDAO.class)
@Stateless
public class TUserDAOBean implements TUserDAO {
 @PersistenceContext(unitName="webapp")
 protected EntityManager em;
 
 public boolean addUser(String name,String sex,Date birthday){
  try{
  TUser user = new TUser();
  user.setName(name);
  user.setSex(sex);
  user.setBirthday(birthday);
  em.persist(user);
  }catch(Exception e){
   //e.printStackTrace();
   return false;
  }
  return true;
 }
 
 public boolean updateUser(TUser user){
  try{
   em.merge(user);
  }catch(Exception e){
   e.printStackTrace();
   return false;
  }
  return true;
 }
 
 public boolean deleteUser(){
  return false;
 }
 
 public List getUserList(){
  try{
   Query query = em.createQuery("from TUser u order by name");
   List list = query.getResultList();
   em.clear();
   return list;
  }catch(Exception e){
   e.printStackTrace();
   return null;
  }
 }
}


EntityManager em,EntityManager 是由EJB容器自动地管理和配置的,不需要用户自己创建,他用作操作实体Bean
em.find()方法用作查询主键记录。em.persist()方法用作向数据库插入一条记录。在类中并没有看到对EntityManager em进行赋值,后面却可以直接使用他。这是因为在实体Bean加载时,容器通过@PersistenceContext注释动态注入EntityManager 对象。
如果persistence.xml文件中配置了多个不同的持久化内容。你需要指定持久化名称注入EntityManager 对象,可以
通过@PersistenceContext注释的unitName属性进行指定,例:
@PersistenceContext(unitName="webapp")
EntityManager em;
如果只有一个持久化内容配置,不需要明确指定。


JSP调用:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import = "ejb.*" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<%@ page import = "javax.naming.*" %>
<%@ page import = "java.util.Iterator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<%
InitialContext ctx = new InitialContext();
TUserDAO userDao = (TUserDAO) ctx.lookup("TUserDAOBean/remote");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try{
 if(userDao.addUser("werewi","M",sdf.parse("19830714")))
  out.println("Success");
 else
  out.println("Failure");
 
 Iterator it = userDao.getUserList().iterator();
 while(it.hasNext()){
  TUser user = (TUser) it.next();
  out.println(user.getName() + " " + user.getSex() + " " + sdf.format(user.getBirthday()));
 }
 
}catch(Exception e){
 out.println(e.toString());
}
%>
</body>
</html>

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南) 本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。 阅读详情

相关推荐

1.28寸圆屏LCD驱动开发:GC9A01与RT-Thread嵌入式实现

圆形TFT-LCD是一种面向可穿戴、IoT终端的紧凑型人机交互显示技术,其核心在于SPI/QSPI接口时序控制与GRAM内存映射原理。通过驱动芯片(如GC9A01)完成电源管理、伽马校正和MADCTL方向配置,可实现低功耗、高刷新率的图形渲染。该技术显著提升嵌入式设备的UI表现力与空间利用率,在智能手环、传感器节点、微型HMI等资源受限场景中具备突出工程价值。本文围绕1.28寸圆屏LCD模块,详解硬件接口规范、RT-Thread下QSPI驱动架构及Bresenham算法优化实践。

weixin_42599908的博客 157

Java:bean、entity、model、domain区别与作用

暂无

qq_45507768的博客 1万+

免费大容量国外网盘测评:冷数据归档与rclone加密接入

云存储的本质,是通过对象存储、冗余编码和分层缓存,把本地磁盘容量问题转化为网络访问与数据管理问题。免费大容量国外网盘常以空间换用户规模或付费转化,容量政策、传输策略、协议支持和退出成本,往往比标称容量更决定长期可用性。支持 WebDAV、S3 兼容和命令行工具的服务,可接入 rclone 等自动化流程,再配合客户端加密与冷热分层,用于冷数据归档、老项目备份和家庭影像保存。理解带宽换算、单文件上限、保活机制与传输一致性后,评估话题型大容量网盘与专业向协议网盘,就能把免费空间纳入可靠存储层。围绕免费大容量国外网

weixin_31292729的博客 213

java---为什么要有bean

Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。 举个例子,假如有人要用Java实现一个单向链表类,可能会这样写: // ...

wenph2008的专栏 1353

Windows BITS服务:后台智能文件传输技术详解

后台文件传输技术是现代IT基础设施中的关键组件,Windows BITS(Background Intelligent Transfer Service)作为微软原生解决方案,通过队列管理和智能调度实现高效数据传输。其核心技术原理包括分块传输、断点续传和带宽自适应,能够根据网络状况动态调整传输速率(默认占用空闲带宽的80%)。在工程实践中,BITS特别适用于企业软件分发和自动化数据采集场景,通过PowerShell命令即可实现高优先级传输和代理配置。相比传统FTP方案,BITS在跨国文件传输中将失败率从30

weixin_42116058的博客 276

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 781

EJB3.0学习总结(一)--实体Bean(EntityBean)

[size=xx-large]EJB3的运行环境[/size] [size=medium]EJB3.0应用需要运行在JDK1.5以上版本。 进入http://java.sun.com/javase/downloads/index_jdk5.jsp下载JDK。在页面中找到JDK 5.0 Update 16(版本在不断更新中,有可能大于16),点击右边的Download。 按照安装向导提...

LC2586的专栏 390

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2223

EJB3.0学习笔记之EntityBean

一、在JBoss中配置好Data Source我使用的是MySQL数据库,所以首先将MySQL的JDBC驱动复制到jboss-4.0.3SP1/server/all/lib目录,然后将jboss-4.0.3SP1/docs/examples/jca下的mysql-ds.xml作出适当修改后复制到jboss-4.0.3SP1/server/all/deploy目录下,这是我修改后的mysql

1093

11、气动外形优化中的连续伴随方法

本文探讨了连续伴随方法在气动外形优化中的理论背景、实现和验证过程。通过使用DLR的FLOWer求解器,将伴随方法应用于Euler和Navier-Stokes方程,以高效计算成本函数梯度,从而显著减少优化过程中的计算成本。文章还介绍了该方法在RAE2822翼型和ONERA M6机翼等案例中的应用,并展示了其准确性和效率。未来展望包括扩展到复杂流动模拟和多学科优化。

desk3的博客 167

量化交易 米筐 多因子合成(回测中使用)

多因子合成 1、因子合成 将一些相关(高、低)的因子合成一个因子 方法: 使用PCA方式(使用于较强相关性) 2、核心代码 将因子 inc_revenue_ttm 和 operating_revenue_growth_ratio_ttm 合成为一个因子 inc_operating from sklearn.decomposition import PCA pca = PCA(n_components=1) # 因子合并 fund['inc_operating'] = pca.fit_transform(fu

廷益_飞鸟的博客 1062

EJB3.0开发指南:实体Bean

在EJB3.0中开发实体Bean非常简单,你可以象开发一般的java bean一样编程,只需做少量的注释。一个实体bean不需要实现Home接口或者Remote、Local接口。 实体Bean通过EntityManager产生、查找、和持久层结合、从持久层收回等操作。 JBoss的EJB3.0架构在Hibernate之上。 注释: @Entity:如果你要建立一个实体...

192

AutoSAR配置视频讲解:总目录

AutoSAR实验视频讲解:闪烁一颗LED实验【总目录】 欢迎大家来到雪云飞星的《AutoSAR实验视频讲解》,本专栏是一个关于AutoSAR的闪烁LED灯的实验课程,一共8节课,每节课的视频都放在文章最后,传送门如下: 前言 AutoSAR实验视频讲解:简介 EB 的Mcal配置 AutoSAR实验视频讲解:Mcal配置 DaVinci Cfg配置 AutoSAR实验视频讲解:新建DaVinci工程 AutoSAR实验视频讲解:Os配置(预计2021-3-10更新) AutoSAR实验视频讲解:检查校验报

雪云飞星的博客 2万+

Jboss Ejb3.0 Entity Bean

  Order.javapackage org.jboss.tutorial.entity.bean; import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratorType;impor

rosonsandy的专栏 1066

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java EE5到底有什么系列 – Java Persistence API 1.0( EJB3 Entity Bean)

转自: http://blog.csdn.net/redmarketing/archive/2006/01/16/580440.aspxJava EE5作为新一代Java企业开发平台的规范,从开始设计就引来了整个java开发社区的注目,引起无数的辩论和带来了众多的期盼。Java EE5作为J2EE平台诞生几近6年后的第4代规范重点关注的是目前java开发的几个热点:开发效率,运行效率和企业应用整合

微风拂岸的专栏 2375

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jboss下ejb简介

jboss下ejb简介 ad1();1.jboss简介jboss是一个运行ejb的j2ee应用服务器。它是开放源代码的项目,遵循最新的j2ee规范。从jboss项目开始至今,它已经从一个ejb容器发展成为一个基于的j2ee的一个web 操作系统(operating system for web),它体现了j2ee规范中最新的技术,并且它还在the javaworld editors choi

空中花园的专栏 1545

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入学习EJB3.0之一:概述与搭建环境

<br /><br />    现在做的项目正在使用EJB3,虽然用了有一段时间,但是自己总感觉并不是十分理解其中的许多内容,也并不清楚到底用EJB有什么好处,所以找了一本书(EJB3.0入门经典)进行研读,并根据自己和网上大家的理解准备写一系列详细的学习日志,如有错误,请大家不吝赐教。<br />一、EJB的概述:<br />1.EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。在J2EE里,Enterprise Java Beans

DryKillLogic的专栏 4288

EJB简介

一个技术规范:EJB是一种标准描述了构建应用组件要解决的

st_linxiaoling的专栏 998

看完了ejb3.0 early draft Review 2

ejb3.0 early draft Review 2是今年的2月8号发布的:http://jcp.org/en/jsr/detail?id=220这两天抽空浏览了一下,把总体印象记在这里:1)entity  bean完全就是hibernate的思路,当然,接口的名称肯定要改的2)EJBQL和HQL基本没有多大改动3)非容器环境下也可以使用ejb3其实上面说的几点全是废话,因为early dr

软件开发资料汇总 284

EJB的基本分类

1.企业bean (1)session bean(stateless和stateful session bean) 会话bean:从客户端获得EJB对象开始,然后调用EJB方法,直到客户端释放EJB对象为止。客户端通过JNDI查找EJB对象。若每次会话查找同一对象时,则返回不同对象。 对象的状态由它的实例变量的值决定的。 有状态sessio...

weixin_30886233的博客 116

EJB3.0 注释

1.依赖注入(dependency injection)A.依赖注入之@EJB:@EJB注释,其常用属性如下:beanName:指定EJB的类名(不带包名),mappedName:指定Bean实例的JNDI名。    例如:        @EJB(beanName=”A”)        IA a;    A 就是IA 的实现类,如果IA 的实现只有一个,那么这里

哈哈__哈哈的专栏 2278

JBoss3.0 下配置和部署EJB简介

1.JBoss简介 JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors Choice 2002评选中获得“最佳Java

!Java 3746

5.JBoss3.0中EJB使用JavaMail服务的配置

1.JBoss简介JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors Choice 2002评选中获得“最佳Java应

allenzhong0932的专栏 921
上一篇: JSON 简介
下一篇: EJB3.0 消息驱动:MDB(Message Driven Bean)
danning
博客等级 码龄22年 5粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值