网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.java 参数是如何传递的.
.Spring XML配置的12个技巧.
.由http暗藏通道看网络安全.
.JAVA TECHNOLOGY EXAM OBJECTIVES.
.NaN 属性.
.使用Java Annotations来管理对象.
.JAVA生成JPG缩略图.
.探索研究Laszlo的类、属性及事件.
.关于Apache Axis2的Web service消.
.JavaScript如何与Applet通讯.
.JAVA基础:JAVA变量类型之间的相.
.java设计模式之Composite(组合).
.SSO各产品单点登录的简单实现.
.类反射简化Struts应用程序的开发.
.体验流调试的威力.
.Java语言编程思想面向对象逻辑思.
.Struts 中 html:options 的使用.
.在spring MVC框架中显示xml视图.
.JAVA数据结构示例---逆波兰式求值.
.Struts应用程序的流程控制简介.

EJB 3.0开发指南之多表映射

发表日期:2008-1-5


在前面的例子中,我们每一个实体Bean只映射到数据库中的一张表上。事实上,一个实体Bean可以映射到多张表上。在一些需要字典表的项目上会经常用到,象以前我做过的项目,使用到很多国标规定的数据表。在我们下面这个例子中,性别作为一个字典表存在,学生这个实体将映射到学生信息表、性别表这两个表。

  从表可以使用@SecondaryTable来注释:

@Target({TYPE}) @Retention(RUNTIME)

public @interface SecondaryTable {
 String name();
 String catalog() default "";
 String schema() default "";
 JoinColumn[] join() default {};
 UniqueConstraint[] uniqueConstraints() default {};
}
  这个注释可以指定表名、分类、schema、联合列、约束等。假如你使用多张表,你可以使用下面的注释来声明多张表:

@SecondaryTable
@Target({TYPE}) @Retention(RUNTIME)

public @interface SecondaryTables {
 SecondaryTable[] value() default {};
}
  这个例子主要有以下几个文件,这个例子主要实现了治理学生的功能。Student是一个实体Bean,这个Bean的name属性是一个类,也就是Name类,这个Name类就是一个依靠值对象。学生的性别映射到第二张表中。StudentDAOBean是一个无状态的会话Bean,用来调用实体Bean。和前面的例子一样,我们还是使用Client测试。

  这个例子和上一个例子基本相同,只是Student.Java和Client有所不同。

   Student.java:实体Bean。

   Name.java:实体Bean所依靠的类。

   StudentDAO.java:会话Bean的业务接口

   StudentDAOBean.java:会话Bean的实现类

   Client.java:测试EJB的客户端类。

   jndi.properties:jndi属性文件,提供访问jdni的基本配置属性。

   Build.XML:ant 配置文件,用以编译、发布、测试、清除EJB。

  下面针对每个文件的内容做一个介绍。

Student.java

package com.kuaff.ejb3.secondary;

import javax.ejb.Dependent;
import javax.ejb.DependentAttribute;
import javax.ejb.Column;
import javax.ejb.Entity;
import javax.ejb.GeneratorType;
import javax.ejb.Id;
import javax.ejb.Table;
import javax.ejb.SecondaryTables;
import javax.ejb.SecondaryTable;
import javax.ejb.JoinColumn;

@Entity
@Table(name = "STUDENT")
@SecondaryTables({
@SecondaryTable(name = "GENDER", join = {@JoinColumn(name = "GENDER_ID")})
})

public class Student implements java.io.Serializable
{
 private int id;
 private Name name;
 private String grade;
 private String email;
 private String gender;

 @Id(generate = GeneratorType.AUTO)

 public int getId()
 {
  return id;
 }

 public void setId(int id)
 {
  this.id = id;
 }

 public void setName(Name name)
 {
  this.name = name;
 }

@Dependent({ @DependentAttribute(name = "first", column ={ @Column(name = "FIRST") }),

@DependentAttribute(name = "last", column ={ @Column(name = "LAST") }) })

public Name getName()
{
 return name;
}

public void setGrade(String grade)
{
 this.grade = grade;
}

@Column(name = "GRADE")

public String getGrade()
{
 return grade;
}

public void setEmail(String email)
{
 this.email = email;
}

@Column(name = "EMAIL")

public String getEmail()
{
 return email;
}

public void setGender(String gender)
{
 this.gender = gender;
}

@Column(name = "gender", secondaryTable = "GENDER")

public String getGender()
{
 return gender;
}

}

  Student.java实现了Student实体Bean,它提供学生的基本情况。在类上声明上加上了第二张表的注释:


上一篇:浅析Java语言中两种异常的差别 人气:480
下一篇:“老虎”来了 J2SE1.5新功能一览 人气:583
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐