CMP(EJB-QL ÀÌ¿ë)
¿öÅ©½ºÆäÀ̽º¸¦ C:/ejb ·Î ¼±ÅÃÇϰí ÀÌŬ¸³½º¸¦ ½ÇÇàÇÕ´Ï´Ù.
student2 ¶ó´Â »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÕ´Ï´Ù.
student2 ÇÁ·ÎÁ§Æ®¿¡ weblogic.jar ¸¦ Add External JARs.. ¹öưÀ» ÀÌ¿ëÇÏ¿© Ãß°¡ÇÕ´Ï´Ù.
¿ø°Ý ÀÎÅÍÆäÀ̽º ÀÛ¼º
Student2.java
package kr.co.hanbitbook.ejb.examples.student2;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface Student2 extends EJBObject {
public void setName(String name) throws RemoteException;
public String getName() throws RemoteException;
public Integer getSsn() throws RemoteException;
public void setGrade(BigDecimal grade) throws RemoteException;
public BigDecimal getGrade() throws RemoteException;
}
Ȩ ÀÎÅÍÆäÀ̽º ÀÛ¼º
Student2Home.java
package kr.co.hanbitbook.ejb.examples.student2;
import java.rmi.RemoteException;
import java.util.Collection;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
import javax.ejb.FinderException;
public interface Student2Home extends EJBHome {
public Student2 create(Integer ssn) throws CreateException, RemoteException;
public Collection findStudentsInGrade(int gradeValue) throws FinderException, RemoteException;
public Collection findStudentsInGrade(int startGradeValue, int endGradeValue) throws FinderException, RemoteException;
public Collection findName(String name) throws FinderException, RemoteException;
public Student2 findByPrimaryKey(Integer ssn) throws FinderException, RemoteException;
}
ºó Ŭ·¡½º ÀÛ¼º
ÀÌŬ¸³½ºÀÇ ¼Ò½º ÀÛ¼º½Ã¿¡ »ç¿ëÇÏ´Â ±âº» ±â´É°ú ¿¡µðÅÍ ºä¿¡¼ ÄÁÅØ½ºÆ® ¸Þ´º(Source - Override/Implement Methods ... )
¸¦ ÀÌ¿ëÇÏ¸é ¾Æ·¡¿Í °°Àº ¼Ò½º¸¦ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Student2EJB.java
package kr.co.hanbitbook.ejb.examples.student2;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
public abstract class Student2EJB implements EntityBean {
/**
*
*/
private static final long serialVersionUID = 5953344302645715673L;
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbLoad() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbRemove() throws RemoveException, EJBException,
RemoteException {
// TODO Auto-generated method stub
}
public void ejbStore() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void setEntityContext(EntityContext arg0) throws EJBException,
RemoteException {
// TODO Auto-generated method stub
}
public void unsetEntityContext() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
}
¿ø°Ý ÀÎÅÍÆäÀ̽º¿¡¼ Á¤ÀÇÇÑ ¸Þ¼ÒµåµéÀ» ¾Æ·¡¿Í °°ÀÌ Ãß»ó¸Þ¼Òµå Ãß°¡ÇÕ´Ï´Ù.
À̶§ Çʵ带 Ãß°¡ÇÏÁö ¾Ê½À´Ï´Ù.
Student2EJB.java
public abstract void setName(String name); public abstract void setSsn(Integer ssn); public abstract void setGrade(BigDecimal grade); public abstract String getName(); public abstract Integer getSsn(); public abstract BigDecimal getGrade();
ejbCreate, ejbPostCreate ¸Þ¼Òµå¸¦ ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÇÕ´Ï´Ù.
À̶§ finder ¸Þ¼Òµå¸¦ ¼±¾ðÇϰųª ±¸ÇöÇÏÁö ¾Ê½À´Ï´Ù.
StudentBean.java
public Integer ejbCreate(Integer ssn) throws CreateException {
setSsn(ssn);
return null;
}
public void ejbPostCreate(Integer ssn) throws CreateException {
}
setEntityContext ¿Í unsetEntityContext ¸Þ¼Òµå¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù.
¸ÕÀú EntityContext Çʵ带 Ãß°¡ÇÕ´Ï´Ù.
StudentBean.java
EntityContext entityContext;
public void setEntityContext(EntityContext arg0) throws EJBException,
RemoteException {
this.entityContext = arg0;
}
public void unsetEntityContext() throws EJBException, RemoteException {
this.entityContext = null;
}
¹èÄ¡ µð½ºÅ©¸³ÅÍ ÀÛ¼º(À¥·ÎÁ÷ ºô´õ ÀÌ¿ë) ¹× ¹èÄ¡
À¥·ÎÁ÷ ºô´õ¸¦ ½ÇÇàÇϰí Open ¹öưÀ» ÀÌ¿ëÇØ¼ student2 ÇÁ·ÎÁ§Æ®ÀÇ bin Æú´õ¸¦ ¼±ÅÃÇÕ´Ï´Ù.
À̾îÁö´Â ȸé(General ÅÇ) EJB name Ç׸ñÀÇ °ªÀÌ EJB-QL ¿¡¼ ¾²ÀÌ´Â µµ¸ÞÀθíÀÔ´Ï´Ù.

Persistence ÅÇ¿¡¼ Primary Key Class: °¡ java.lang.Integer À̰í, Primary Key field: °¡ ssn À̾î¾ß ÇÕ´Ï´Ù.

È®ÀÎ ÈÄ, Datasource name: Ç׸ñ ¿·ÀÇ Browse ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
À¥·ÎÁ÷ ¼¹ö·Î Á¢¼ÓÇÏ´Â ´ëÈ»óÀÚ¿¡¼ ¾Ë¸Â´Â ¼¹ö °ü¸®ÀÚ À̸§°ú ÆÐ½º¿öµå·Î Á¢¼ÓÇÕ´Ï´Ù.

Á¢¼ÓÀÌ µÇ¸é ¾Æ·¡¿Í °°ÀÌ µ¥ÀÌÅÍ ¼Ò½º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ´ëÈ»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù.

µ¥ÀÌÅÍ ¼Ò½º¸¦ ¼±ÅÃÇßÀ¸¸é Table name: Ç׸ñ ¿·ÀÇ Browse ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.

Å×À̺íÀ» ¼±ÅÃÇϴ â¿¡¼ STUDENTTABLE À» ¼±ÅÃÇÑ ÈÄ OK ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.

µ¥ÀÌÅÍ ¼Ò½º¿Í Å×À̺íÀ» ¾Ë¸Â°Ô ¼±ÅÃÇß´ÂÁö È®ÀÎÇÕ´Ï´Ù.

¿ÞÂÊ ¸Þ´º¿¡¼ Resources ¼±ÅÃÇϰí Resource References ÅÇÀ» ¼±ÅÃÇÕ´Ï´Ù.

Add ¹öưÀ» ÀÌ¿ëÇØ¼ µ¥ÀÌÅÍ ¼Ò½º°¡ Ãß°¡ÇÕ´Ï´Ù.

µ¥ÀÌÅÍ ¼Ò½º°¡ Á¦´ë·Î Ãß°¡µÇ¾ú´ÂÁö È®ÀÎÇÕ´Ï´Ù.

¿ÞÂÊ ¸Þ´º CMP Fields ¿¡¼ °¢°¢ÀÇ Çʵ带 ¼±ÅÃÇÑ ÈÄ Edit ¹öưÀ» ÀÌ¿ëÇØ¼ Column Type À» ¸ðµÎ LongString À¸·Î ÁöÁ¤ÇÕ´Ï´Ù.

ÀÌÁ¦ ¿ÞÂÊ ¸Þ´º Finder ¿¡¼ °¢°¢ÀÇ ¸Þ¼Òµå¸¦ ¼±ÅÃÇÑ ÈÄ Edit ¹öưÀ» ÀÌ¿ëÇØ¼ EJB-QL¸¦ ¼öÁ¤ÇÕ´Ï´Ù.




¿©±â±îÁö ¼³Á¤Çß´Ù¸é Save ¹öưÀ» Ŭ¸¯ÇÏ¿© ÀúÀåÇÕ´Ï´Ù.
Archive...¸Þ´º¸¦ ÀÌ¿ëÇØ¼ student2.jar ÆÄÀÏÀ» »ý¼ºÇÑ ´ÙÀ½ À¥·ÎÁ÷ Äֿܼ¡¼ ¹èÄ¡ÇÕ´Ï´Ù.
Å×½ºÆ®
Å×½ºÆ®¸¦ À§ÇÑ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ student2_client ¶õ À̸§À¸·Î »ý¼ºÇÕ´Ï´Ù
¹èÄ¡½Ã »ç¿ëÇß´ø student2.jar ¿Í weblogic.jar ¸¦ Add External JARs... ¹öưÀ» ÀÌ¿ëÇØ¼ student2_client ÇÁ·ÎÁ§Æ®¿¡ µî·ÏÇÕ´Ï´Ù.
´ÙÀ½°ú °°ÀÌ Å¬¶óÀÌ¾ðÆ® ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù.
Student2Test.java
import javax.rmi.*;
import javax.naming.*;
import kr.co.hanbitbook.ejb.examples.student2.*;
public class Student2Test{
public static void main(String args[]){
Context ctx = null;
try{
java.util.Properties p = new java.util.Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, "t3://localhost:7001");
ctx = new InitialContext(p);
Object h = ctx.lookup("Student2EJB");
Student2Home home = (Student2Home)PortableRemoteObject.narrow(h, Student2Home.class);
Student2 Student2 = home.findByPrimaryKey(new Integer(10));
System.out.println("ÇÁ¶óÀ̸Ӹ® Ű °ªÀÌ 10ÀÎ ÇлýÀÇ Á¤º¸");
System.out.println("ssn :" + Student2.getSsn());
System.out.println("À̸§ :" + Student2.getName());
System.out.println("Grade :" + Student2.getGrade());
System.out.println("--- --- --- --- --- --- --- --- --- --- --- --- ---");
java.util.Collection col = home.findStudentsInGrade(85, 97);
java.util.Iterator iter = col.iterator();
System.out.println("Grade°¡ 85ÀÌ»ó 97¹Ì¸¸ÀÎ ÇлýµéÀÇ Á¤º¸");
while(iter.hasNext()){
Student2 tmp = (Student2)iter.next();
System.out.println("ssn :" + tmp.getSsn());
System.out.println("À̸§ :" + tmp.getName());
System.out.println("Grade :" + tmp.getGrade());
System.out.println("---");
}
}catch(Exception e){
System.out.println(e.toString());
}
}
}
½ÇÇàÇϱâ Àü¿¡ ¾Æ·¡¿Í °°Àº SQL¹®À» SQL*PLUS ¸¦ ÀÌ¿ëÇØ¼ ½ÇÇàÇÕ´Ï´Ù.
insert into studenttable (name,ssn,grade) values ('È«±æµ¿',10,90);
insert into studenttable (name,ssn,grade) values ('±è¼º¹Ú',11,100);
insert into studenttable (name,ssn,grade) values ('µÑ¸®',12,50);
insert into studenttable (name,ssn,grade) values ('¶ÇÄ¡',13,95);
insert into studenttable (name,ssn,grade) values ('±èÀ¯½Å',14,80);
commit;
ÀÌŬ¸³½º¿¡¼ Student2Test.java ¸¦ ½ÇÇàÇÕ´Ï´Ù.
Âü°í ¹®¼
¾Ë±â½±°Ô Ç®¾î ¾´ À¥·ÎÁ÷°ú EJB 9Àå -ÇѺû¹Ìµð¾î,±è¼º¹Ú Àú-
¿¹Á¦¿¡ ¾²¿´´ø jar,war,ear ÆÄÀÏ (¹èÄ¡½Ã ÀÍ¼Ê¼Ç ¹ß»ýÇÒ ¶§ Âü°í¿ë)
- ´ÙÀ½ : CMR
- ÀÌÀü : ¿£Æ¼Æ¼ ºó(BMP)
