Last Modified : 2010.02.26

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 ¿¡¼­ ¾²ÀÌ´Â µµ¸ÞÀθíÀÔ´Ï´Ù.
General ÅÇ ¼³Á¤
Persistence ÅÇ¿¡¼­ Primary Key Class: °¡ java.lang.Integer À̰í, Primary Key field: °¡ ssn À̾î¾ß ÇÕ´Ï´Ù.
Persistence ÅÇ¿¡¼­ ÁÖŰ¿Í ÁÖŰŬ·¡½º ¼³Á¤
È®ÀÎ ÈÄ, Datasource name: Ç׸ñ ¿·ÀÇ Browse ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
À¥·ÎÁ÷ ¼­¹ö·Î Á¢¼ÓÇÏ´Â ´ëÈ­»óÀÚ¿¡¼­ ¾Ë¸Â´Â ¼­¹ö °ü¸®ÀÚ À̸§°ú ÆÐ½º¿öµå·Î Á¢¼ÓÇÕ´Ï´Ù.
Connect to a WebLogic Server
Á¢¼ÓÀÌ µÇ¸é ¾Æ·¡¿Í °°ÀÌ µ¥ÀÌÅÍ ¼Ò½º¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Â ´ëÈ­»óÀÚ°¡ ³ªÅ¸³³´Ï´Ù.
DataSource ¼±ÅÃ
µ¥ÀÌÅÍ ¼Ò½º¸¦ ¼±ÅÃÇßÀ¸¸é Table name: Ç׸ñ ¿·ÀÇ Browse ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
Persistence ÅÇ¿¡¼­ Table nameÇ׸ñ ¼³Á¤
Å×À̺íÀ» ¼±ÅÃÇϴ â¿¡¼­ STUDENTTABLE À» ¼±ÅÃÇÑ ÈÄ OK ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
General ÅÇ ¼³Á¤
µ¥ÀÌÅÍ ¼Ò½º¿Í Å×À̺íÀ» ¾Ë¸Â°Ô ¼±ÅÃÇß´ÂÁö È®ÀÎÇÕ´Ï´Ù.
µ¥ÀÌÅÍ ¼Ò½º¿Í Å×ÀÌºí ¼³Á¤È®ÀÎ
¿ÞÂÊ ¸Þ´º¿¡¼­ Resources ¼±ÅÃÇϰí Resource References ÅÇÀ» ¼±ÅÃÇÕ´Ï´Ù.
Resource References ÅÇ¿¡¼­ µ¥ÀÌÅÍ ¼Ò½º Ãß°¡
Add ¹öưÀ» ÀÌ¿ëÇØ¼­ µ¥ÀÌÅÍ ¼Ò½º°¡ Ãß°¡ÇÕ´Ï´Ù.
µ¥ÀÌÅÍ ¼Ò½º Ãß°¡
µ¥ÀÌÅÍ ¼Ò½º°¡ Á¦´ë·Î Ãß°¡µÇ¾ú´ÂÁö È®ÀÎÇÕ´Ï´Ù.
µ¥ÀÌÅÍ ¼Ò½º Ãß°¡ È®ÀÎ
¿ÞÂÊ ¸Þ´º CMP Fields ¿¡¼­ °¢°¢ÀÇ Çʵ带 ¼±ÅÃÇÑ ÈÄ Edit ¹öưÀ» ÀÌ¿ëÇØ¼­ Column Type À» ¸ðµÎ LongString À¸·Î ÁöÁ¤ÇÕ´Ï´Ù.
General ÅÇ ¼³Á¤
ÀÌÁ¦ ¿ÞÂÊ ¸Þ´º Finder ¿¡¼­ °¢°¢ÀÇ ¸Þ¼Òµå¸¦ ¼±ÅÃÇÑ ÈÄ Edit ¹öưÀ» ÀÌ¿ëÇØ¼­ EJB-QL¸¦ ¼öÁ¤ÇÕ´Ï´Ù. General ÅÇ ¼³Á¤
General ÅÇ ¼³Á¤
General ÅÇ ¼³Á¤
General ÅÇ ¼³Á¤
¿©±â±îÁö ¼³Á¤Çß´Ù¸é 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 ÆÄÀÏ (¹èÄ¡½Ã ÀÍ¼Ê¼Ç ¹ß»ýÇÒ ¶§ Âü°í¿ë)