ʹ EJB 3.0 EJB ʹ EJB 3.0 EJB

ʹ EJB 3.0 EJB


ߣDebu Panda

࿪Աҵ JavaBean (EJB) ĸEJB 3.0 Java Community Process JSR-220 ּڼӦóĿ Java ƽ̨ɳ־ API ı׼

Ľ EJB 3.0 — Oracle Ӧ÷ EJB 3.0 Ԥṩʵ — μ EJB ıģͲһ򵥵 API ʵֳ־ԡ

EJB 2.x ĸ

ǰ EJB 2.x ģڸԭڸӣ

  • ǰ EJB ģҪӿڲʵֶҪĻص
  • ӿҪʵ EJBObject EJBLocalObject Լ಻Ҫ쳣
  • EJB ȽϸӲ׳
  • EJB ģ͵־ڿ͹ڸӣʧȥ˼--ʹݿжı׼EJBQL ﷨dzޡ
  • EJB ģΪڼ̳кͶ̬Էʹơ
  • Ա޷ EJB ⲿ EJB ģ飬ڲ EJB һجΡ
  • Һ͵ EJB һӵ񡣼ʹӦóʹ EJB ҲҪ JNDI һϸ˽⡣

򻯿Աͼ

ʹõǰ淶 EJBô˽⵽һ EJB HelloWorld EJBҲǼѵġʹ򵥵ҲҪӿڣһ bean һ Oracle JDeveloper IDE Լ XDoclet ʵóЩͨ񣻵ԱҪЩಢſԽ EJB ѡС

EJB 3.0 ּڽǰ EJB ģ͵ĸԣڣ

  • ˲ҪĽӿԼصʵ
  • ʹԪע沿
  • Java EJB ҵӿ EJB

Ԫע

EJB 3.0 ں̶ܴԪעԪע JSR 175 ˱׼ J2SE 5.0 һ֡ עԱ̷һ֣ڹ Xdoclet XDoclet ͬעڱʱ Java 뵽Уȡ @Retention ãܵ˵EJB 3.0 Ŀ֧ͨԪעɶӿڣ滻򻯿

Աעη public һҿࡢֶΡرöٺͳʹá Java ʹעָɴԡдṩǿҵ񼶱İȫԻʱڼҵ߼Ҫ˽йעϸϢԲ Jason Hunter д Java Ԫ

J2EE 5.0 ҪĿ֮һʹע򻯿ģעע·ʽʹ @ бǣ

@Author("Debu Panda") @Bean public class MySessionBean

ʹ POJO POJI

ڵ͵,JavaBean ͽӿֱͨͨʽ Java (POJO) ͨʽ Java ӿ (POJI)EJB ͽӿڷֱ POJO POJIѾ˶ӿIJҪ

javax.ejb ʵij EJB ӿڣSessionBeanEntityBean MessageDrivenBean෴ʹ StatelessStatefulMessageDriven Entity ǵ bean ע磬Ҫ״̬ EJB Ϊ HelloWorldӦʾ EJB

import javax.ejb.Stateless; @Stateless public class HelloWorldBean implements HelloWorld { public void sayHello(String name) { System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); } }

EJB ĽӿڣԶ̽ӿڻDZؽӿڣʵ EJBObject EJBLocalObject ڱʾУbean Ϊ EJB ʵҵӿ ڱʾУHelloWorldBean ʵ HelloWorld ӿڡ

import javax.ejb.Remote; @Remote public interface HelloWorld { public void sayHello(String name); }

鿴ϵĴʾԷdzؿ @Remote ڽӿڱΪԶ̽ӿڡҪ EJB ӵԶ̽ӿںͱؽӿڡӿڼʹԻỰ Bean Ҳǿѡġ

ʾУؿʹ EJB 3.0ೣ紴ʵֲҪĻصڶѾˡ

ԻصҪ

EJB 2.1 ֮ǰİ汾ҪΪÿ EJB ʵֶڷ ejbPassivateejbActivateejbLoadejbStore ȣܴӹܷDzDZġ磬״̬Ự bean Ҫ ejbPassivateҪ bean ʵָ÷ EJB 3.0 ڳ Java ࣬˿Щڷʵǿѡġڿ bean жڻصЩΪⲿࡣ԰ʾʾʹעⷽΪص

@PostConstruct public void initialize() { items = new ArrayList(); }

Էṩϸȿơ״̬Ự bean״̬Ự bean Ϣ bean ʹǡͬһ bean еķһⲿࡣ

ע벿

ǰ EJB 3.0 Уע滻еÿԶȱʡֵָЩԣҪȱʡֵֵʹ bean ౾еעָЩֵ

EJB 3.0 淶һԪע bean ͡ӿ͡ԴáԡȫԵȡ磬Ҫ EJB İȫã bean жݣ

@MethodPermissions("user") public void sharedTask() { System.out.println("Shared admin/user method called"); }

Щ XML Ѿ

־

CMP ʵ bean EJB 3.0 нҪĽȡÿԱEJB 3.0 ǰһͳ־ģͣ Oracle TopLink Hibernate

ʵ bean POJOҲҪӿڡʵ bean ּ֧̳кͶ̬ԡ

һdz򵥵ʵ bean Դ룺

@Entity @Table(name = "EMP") public class Employee implements java.io.Serializable { private int empNo; private String eName; private double sal; @Id @Column(name="EMPNO", primaryKey=true) public int getEmpNo() { return empNo; } public void setEmpNo(int empNo) { this.empNo = empNo; } public double getSal() { return sal; } ... }

ᷢ bean һ࣬һࣨ CMP 2.x ʵ bean

Ƕʵ bean һЩҪǿ

  • ϵӳԪע
  • ̳кͶ̬֧
  • ʵ bean CRUD EntityManager API
  • ѯеǿ

ϵӳԪ

ͨϵӳעԪݣûʹöϵӳԪ“”ǵ EJB 3.0 ʵ bean ࡣ󣬴Ԫڶʵ bean ij־ԺͼҲ˵ڹӦרежϵӳ䡣

ʾʹ @Table @Column עΪʵ bean ָݿơʹӳעʵ֮Ĺϵ磺

@ManyToOne(cascade=PERSIST, fetch=LAZY) @JoinColumn(name="MANAGER_ID", referencedColumnName="EMP_ID") public Employee getManager() { return manager; }

йؿɹʹõӳעбӳע

̳

̳ںܶ·dzáOracle Ӧ÷ EJB 3.0 Ԥͨʹúֵ֧̳а

  • ÿһ
  • ӵ෽

̳ʹעʾһʹӵ෽ʾ룺

@Entity @Table(name="EJB_PROJECT") @Inheritance(strategy=JOINED, discriminatorValue="P") @DiscriminatorColumn(name="PROJ_TYPE") public class Project implements Serializable {...} @Entity @Table(name="EJB_LPROJECT") @Inheritance(discriminatorValue="L") public class LargeProject extends Project { ... } @Entity @Table(name="EJB_PROJECT") @Inheritance(discriminatorValue="S") public class SmallProject extends Project { ... }

ʵ Bean CRUD API

javax.persistence.EntityManager API ڴҡºɾʵ bean ʵٱдӴԲʵ bean ʵԼǡԽ EntityManager ʵע뵽Ự bean У EntityManager ʹó־ûҷԴѯʵ bean ´ʾ

@Inject private EntityManager em; private Employee emp; public Employee findEmployeeByEmpNo(int empNo) { return ((Employee) em.find("Employee",empNo)); } public void addEmployee(int empNo, String eName, double sal) { if (emp == null) emp = new Employee(); emp.setEmpNo(empNo); ....... em.persist(emp); } }

ѯǿ

ʹԪʵ bean жѯڲжǡEJB 3.0 EJBQL ƣºɾ֧֡˶Ա SQL ѯ֧֡

EJB Ŀͻ֧

ʹͬһӦóж EJB ãʹ EJB Ҳdzӡ磬Ҫ EJB ʹ EJB 2.xڲж ejb-ref ejb-local-ref EJBʵȻ÷ʹ EJB 3.0ֻʹע bean Բʾô˷

@EJB AdminService bean; public void privilegedTask() { bean.adminTask(); }

ʹעκ͵ĻԴãԴJMSWeb ȡ

ⲿIJԿ

EJB 2.1 淶ĿԱԣԾһجΡͲ EJB Ҫ EJB ϤյIJƽִ̨вԡ

˵ǣEJB 3.0 ⲿ EJBOracle Ӧ÷ EJB 3.0 Ԥ渽ʵԹʵ˶ EJB 3.0 вԡ

ҵ Java ԱԣEJB 3.0 dzǰEJB 3.0 淶ṩĽ齫ÿԱٵĸԡOracle Ӧ÷ EJB 3.0 Ԥ EJB 3.0 Early Release Draft2 淶ʵ֣ʼ EJB 3.0 Ӧó

οϺ

߽

Debu Panda Oracle Ӧ÷СϯƷ EJB ڳ 13 IT ҵҵڶ־£ϯೡ顣 http://radio.weblogs.com/0135826/ ҵд J2EE Ϊ־

寄送此页面
Printer View 打印机视图