大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> JSP专区 -> EJB 3.0开发指南之多表映射

EJB 3.0开发指南之多表映射

时间: 2021-07-31 作者:daque

在前方的例子中,咱们每一个实业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,它供给弟子的基础情景。在类上证明上加上了第二张表的解释:   @secondarytables({   @secondarytable(name = "gender", join = {@joincolumn(name = "gender_id")})   })   在gender属性上加上了映照第二张的解释:   @column(name = "gender", secondarytable = "gender")   client.java   package com.kuaff.ejb3.secondary;   import javax.naming.initialcontext;   import javax.naming.namingexception;   import java.util.list;   public class client   {   public static void main(string[] args) throws namingexception   {   initialcontext ctx = new initialcontext();   studentdao dao = (studentdao) ctx.lookup(studentdao.class.getname());   int id = dao.create("晁","岳攀","8","smallnest@kuaff.com","男");   dao.create("朱","立焕","6","zhuzhu@kuaff.com","女");   list list = dao.findall();   for(object o:list)   {   student s = (student)o;   system.out.printf("%s%s的性别:%s%n",s.getname().getfirst(),s.getname().getlast(),s.getgender());   dao.evict(s);   }   这个存户端减少弟子的分数,而且尝试表露这个弟子的email。   请运转{$jboss_home}/bin目次下的run.bat: run –c all,启用jboss。   http://localhost:8080/jmx-console/htmladaptor?action=inspectmbean&name=jboss%3aservice%3dhypersonic%2cdatabase%3dlocaldb,   而后挪用startdatabasemanager()本领,翻开hsql处置东西处置数据库。   在eclipse的ant视图中实行ejbjar target。大概在吩咐行下,加入到此工程目次下,实行ant ejbjar,将编写翻译打包颁布此ejb。   在eclipse的ant视图中实行run target。大概在吩咐行下,加入到此工程目次下,实行ant run,尝试这个ejb。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.