ʹ 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 Ϊ־