大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> JSP专区 -> EJB3.0之实体Bean的继承

EJB3.0之实体Bean的继承

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

在ejb3.0中,实业bean不妨实行接受联系。 比方有个person的实业bean,它有全名和性别两个属性。   天主和女娲造人的功夫,造出两种人:man和woman。man和woman都是实业bean,并且她们都接受person。   简单表战略即是副实业和子实业的数据都寄存在一张表中,同声指定一列用来辨别那些实业。   如:   @entity   @inheritance(strategy = inheritancetype.single_table, discriminatortype = discriminatortype.string)   @discriminatorcolumn(name = "p_type", nullable = true)   @ inheritance的解释证明如次:   @ @target({type}) @retention(runtime)   public @interface inheritance {   inheritancetype strategy() default single_table;   discriminatortype discriminatortype() default string;   string discriminatorvalue() default "";   }   这个解释用来指定接受运用的战略,以及为了辨别那些实业所用的列的典型与值。   @discriminatorcolumn解释用在简单表战略和共同表战略上。用来指定辨别各实业所需的列。   @target({type}) @retention(runtime)   public @interface discriminatorcolumn {   string name() default "";   boolean nullable() default false;   string columndefinition() default "";   int length() default 10;   }   这个例子重要有以次几个文献,这个例子重要实行了person和man、woman之间的接受联系,底下两章引见的例子和这个例子沟通。man和woman接受person实业bean。前方的例子一律,咱们仍旧运用client尝试。   person.java:实业bean。   man.java:实业bean所依附的类。   woman.java:实业bean所依附的类。   persontest.java:对话bean的交易接口   persontestbean.java:对话bean的实行类   client.java:尝试ejb的存户端类。   jndi.properties:jndi属性文献,供给考察jdni的基础摆设属性。   build.xml:ant 摆设文献,用以编写翻译、颁布、尝试、废除ejb。   底下对准每个文献的实质做一个引见。   person.java   package com.kuaff.ejb3.singleinheritance;   import javax.ejb.discriminatorcolumn;   import javax.ejb.discriminatortype;   import javax.ejb.entity;   import javax.ejb.generatortype;   import javax.ejb.id;   import javax.ejb.inheritance;   import javax.ejb.inheritancetype;   @entity   @inheritance(strategy = inheritancetype.single_table, discriminatortype = discriminatortype.string)   @discriminatorcolumn(name = "p_type", nullable = true)   public class person implements java.io.serializable   {   private int id;   private string name;   private string gender;   @id(generate = generatortype.auto)   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;   }   public void setgender(string gender)   {   this.gender = gender;   }   public string getgender()   {   return gender;   }   }   指定运用p_type列用来辨别各实业bean。   man.java   package com.kuaff.ejb3.singleinheritance;   import javax.ejb.discriminatortype;   import javax.ejb.entity;   import javax.ejb.inheritance;   import javax.ejb.inheritancetype;   @entity   @inheritance(strategy = inheritancetype.single_table, discriminatortype = discriminatortype.string, discriminatorvalue = "man")   public class man extends person   {   private boolean isgood;   public void setgood(boolean isgood)   {   this.isgood = isgood;   }   public boolean isgood()   {   return isgood;   }   }   这个实业bean减少了一个能否是好男子的属性。   woman.java   package com.kuaff.ejb3.singleinheritance;   import javax.ejb.discriminatortype;   import javax.ejb.entity;   import javax.ejb.inheritance;   import javax.ejb.inheritancetype;   @entity   @inheritance(strategy = inheritancetype.single_table, discriminatortype = discriminatortype.string, discriminatorvalue = "woman")   public class woman extends person   {   private boolean isbeautiful;   public void setisbeautiful(boolean isbeautiful)   {   this.isbeautiful = isbeautiful;   }   public boolean isisbeautiful()   {   return isbeautiful;   }   }   entitytest.java   package com.kuaff.ejb3.singleinheritance;   import javax.ejb.remote;   import java.util.list;   @remote   public interface persondao   {   public int createman(string name,string gender,boolean b);   public int createwoman(string name,string gender,boolean b);   public person find(int i);   public list findbyname(string name);   public list findbyinfo(string gender);   }   persontestbean.java   package com.kuaff.ejb3.singleinheritance;   import javax.ejb.entitymanager;   import javax.ejb.inject;   import javax.ejb.stateless;   import java.util.list;   @stateless   public class persondaobean implements persondao   {   @inject   private entitymanager manager;   public int createman(string name,string gender,boolean b)   {   man man = new man();   man.setname(name);   man.setgender(gender);   man.setgood(b);   manager.create(man);   return man.getid();   }   public int createwoman(string name, string gender,boolean b)   {   woman woman = new woman();   woman.setname(name);   woman.setgender(gender);   woman.setisbeautiful(b);   manager.create(woman);   return woman.getid();   }   public person find(int i)   {   return manager.find(person.class,i);   }   public list findbyname(string name)   {   return manager.createquery("from person p where p.name =:name").setparameter("name", name).listresults();   }   public list findbyinfo(string gender)   {   return manager.createquery("from person p where p.gender =:gender").setparameter("gender", gender).listresults();   }   }   在这个对话bean中供给了创造man、woman实业bean的本领,并供给了搜索本领。   client.java   package com.kuaff.ejb3.singleinheritance;   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();   persondao dao = (persondao) ctx.lookup(persondao.class.getname());   int i = dao.createman("晁岳攀","男",true);   dao.createwoman("朱立焕","女",true);   person p = dao.find(i);   system.out.printf("%s的性别:%s%n",p.getname(),p.getgender());   list list = dao.findbyname("朱立焕");   for (object o:list)   {    woman w = (woman)o;    system.out.printf("%s美丽吗?论断:%b%n",w.getname(),w.isisbeautiful());   }   }   }   这个存户端用来尝试。   请运转{$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.