在ejb3.0中开发实体bean非常简单,你可以象开发一般的java bean一样编程,只需做少量的注释。一个实体bean不需要实现home接口或者remote、local接口。
实体bean通过entitymanager产生、查找、和持久层结合、从持久层收回等操作。
jboss的ejb3.0架构在hibernate之上。
注释:
@entity:如果你要建立一个实体bean的类,你必须在类上加上这个注释,用来告诉容器这个类是实体bean。这个bean的主键由@id指定。
这个注释的声明如下:
| @target(type) @retention(runtime) public @interface entity { string name() default ""; entitytype entitytype() default cmp; accesstype access() default property; int version() default 3; } |
| @target({method, field}) @retention(runtime) public @interface .netomany { string targetentity() default ""; cascadetype[] cascade() default {}; fetchtype fetch() default lazy; } |
| package com.kuaff.ejb3.entity; import javax.ejb.cascadetype; import javax.ejb.entity; import javax.ejb.fetchtype; import javax.ejb.generatortype; import javax.ejb.id; import javax.ejb.joincolumn; import javax.ejb..netomany; import javax.ejb.table; import java.util.arraylist; import java.util.collection; import java.io.serializable; @entity @table(name = "student") public class student implements serializable { //主键 private int id; //学生名 private string name; //学生的分数 private collection<score> scores; //主键自动产生 @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 addscores(string name,int number) { if (scores == null) { scores = new arraylist<score>(); } score score = new score(); score.setname(name); score.setnumber(number); score.setstudent(this); scores.add(score); } @.netomany(cascade = cascadetype.all, fetch = fetchtype.eager) @joincolumn(name = "student_id") public collection<score> getscores() { return scores; } public void setscores(collection<score> scores) { this.scores = scores; } } |
| package com.kuaff.ejb3.entity; import java.io.serializable; import javax.ejb.entity; import javax.ejb.generatortype; import javax.ejb.id; import javax.ejb.joincolumn; import javax.ejb.manytoone; import javax.ejb.table; @entity @table(name = "score") public class score implements serializable { private int id; private string name; private int number; private student student; //主键自动产生 @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 int getnumber() { return number; } public void setnumber(int number) { this.number = number; } @manytoone @joincolumn(name = "student_id") public student getstudent() { return student; } public void setstudent(student student) { this.student = student; } } |
| package com.kuaff.ejb3.entity; import javax.ejb.remote; import javax.ejb.remove; import java.util.map; @remote public interface teacher { public void addscore(string studentname,map<string,integer> map); public student getstudent(); @remove public void leave(); } |
| package com.kuaff.ejb3.entity; import javax.ejb.entitymanager; import javax.ejb.inject; import javax.ejb.remove; import javax.ejb.stateful; import java.util.map; import java.util.set; @stateful public class teacherbean implements teacher { @inject private entitymanager manager; private student student; public student getstudent() { return student; } public void addscore(string studentname, map<string,integer> map) { if (student == null) { student = new student(); } student.setname(studentname); set<string> set = map.keyset(); for (string sname:set) { student.addscores(sname,map.get(sname).intvalue()); } } @remove public void leave() { manager.create(student); } } |
| package com.kuaff.ejb3.entity; import java.util.map; import java.util.hashmap; import java.util.collection; import javax.naming.initialcontext; import javax.naming.namingexception; public class client { public static void main(string[] args) throws namingexception { initialcontext ctx = new initialcontext(); teacher teacher = (teacher) ctx.lookup(teacher.class.getname()); map<string,integer> map = new hashmap<string,integer>(); map.put("语文",new integer(98)); map.put("化学",new integer(149)); map.put("物理",new integer(143)); teacher.addscore("smallnest",map); student student = teacher.getstudent(); string name = student.getname(); system.out.printf("显示%s的分数:%n",name); collection<score> c = student.getscores(); for (score score:c) { system.out.printf("%s:%s%n",score.getname(),score.getnumber()+""); } } } |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器