com.poscoict.glueframework.biz.activity.hibernate
Class GlueHibernateSearch

java.lang.Object
  extended by com.poscoict.glueframework.biz.activity.GlueActivity<GlueContext>
      extended by com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch

public class GlueHibernateSearch
extends GlueActivity<GlueContext>

GlueHibernateSearch Activity. GlueHibernateSearch Class는 Hibernate용 Select Query(HQL)를 실행하고 그 결과값을 저장 하게 된다. 추가적인 property인 method-name을 사용하면, Value Object에 정의되어 있는 Business Logic Method를 수행할 수 있다.

 Activity Property
 
 - dao : (필수) applicationContext.xml의 DAO id. Hibernate용 dao id를 입력한다.
 
 - sql-key : (필수) xxx-hquery.glue_sql의 query id. 
         Hibernate용 Query(HQL)를 지정하며, named query 이여야 한다. 
 
 - result-key : (선택) Context에 담기는 Query 수행 결과 Key.
         [ default ] : {sql-key}_resultList.
         수행 결과는 ValueObject의 List형태이다.
 
 - entity-bindings : (선택) hql의 named param과 mapping되는 entity property 또는 id name을 정의한다.
         hql의 named param과 대응 되는 entity의 property 또는 id 가 같을 경우 생략한다.
         named param에 binding 되는 값은 entity field의 type으로 Casting 하는 근거가 된다. 
 
 - param-bindings : (선택) hql의 named param과 binding에 사용되는 값과 Mapping 되는 Key.
         hql의 named param과 대응 되는 ctx의 key가 전부 같은 경우만 생략한다(대소문자 구분).
         hql의 named param과 대응 되는 ctx의 key가 전부 같지 않을 경우, binding data를 위한 별도의 Map이 생성되므로
         named param과 ctx key가 같은것도 기술한다.
 
 - method-name : (선택)Value Object에 정의되어 있는 Method 명
 
 - method-param : (선택)Method에 넘겨줄 Parameter 값.
         method-param0, method-param1, ... method-paramN과 같이 지정 가능하다.
         Reflection을 이용하여 Invoke하는 메소드의 파라미터는 String형만 가능하다. 즉 위의 예에서 VO에는 
         setComm(String) 메소드가 정의되어 있어야 하며 setComm(BigDecimal)만 정의되어 있다면 NoSuchMethodException이 발생한다.
 
 
 
 예제
 사용 예# 1
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select" />
         <property name="result-key" value="EmpList" />
         <transition name="success" value="end" />
     </activity>
 
 
 사용 예# 2
 - named param이 entitiy의 property와 같고, ctx key와 같지 않은 경우
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select" />
         <property name="result-key" value="EmpList" />
         <property name="param-bindings" value="empno=empno_search" />
         <transition name="success" value="end" />
     </activity>
 
 
 사용 예# 3
 - named param이 entitiy의 property와 같지 않고, ctx key와 같은 경우
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select2" />
         <property name="result-key" value="EmpList" />
         <property name="entity-bindings" value="ename1=ename|ename2=ename|ename3=ename" />
         <transition name="success" value="end" />
     </activity>
 
 
 사용 예# 4
 - named param이 entitiy의 property와 같지 않고, ctx key와 같지 않은 경우
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select2" />
         <property name="result-key" value="EmpList" />
         <property name="entity-bindings" value="ename1=ename|ename2=ename|ename3=ename" />
         <property name="param-bindings" value="ename1=ename_s1|ename2=ename_s2|ename3=ename_s3" />
         <transition name="success" value="end" />
     </activity>
 
 
 사용 예# 5
 - 조회결과 entitiy의 특정 method invoke시 고정값 사용
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select" />
         <property name="result-key" value="EmpList" />
         <property name="method-name" value="setComm" />
         <property name="method-param0" value="3" />
         <transition name="success" value="end" />
     </activity>
 
 
 사용 예# 6
 - 조회결과 entitiy의 특정 method invoke시 변수값 사용
 
     <activity name="Find" class= "com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch">
         <property name="dao" value="hibernateDao" />
         <property name="sql-key" value="emp.select" />
         <property name="result-key" value="EmpList" />
         <property name="method-name" value="setComm" />
         <property name="method-param0" value="comm" />
         <transition name="success" value="end" />
     </activity>
 
 
 
 참고 : {name}-hquery.glue_sql
 
     <query id="emp.select" desc="" isNamed="true">
         <![CDATA[ 
            from Employee e where e.empno = :empno order by e.empno asc
         ]]>
     </query>
     <query id="emp.select.2" desc="" isNamed="true">
         <![CDATA[ 
            from Employee e where e.ename in (:ename1, :ename2, :ename3)
         ]]>
     </query>
 
 
 참고 : hbm.xml
 
     <hibernate-mapping>
         <class name="sample.vo.Employee" table="EMP" dynamic-update="true">
             <id name="empno" column="EMPNO" type="big_decimal"/>
             <property name="ename" column="ENAME" type="string"/>
             <property name="job" column="JOB" type="string"/>
             <property name="mgr" column="MGR" type="big_decimal"/>
             <property name="hiredate" column="HIREDATE" type="timestamp"/>
             <property name="sal" column="SAL" type="big_decimal"/>
             <property name="comm" column="COMM" type="big_decimal"/>
             <property name="deptno" column="DEPTNO" type="big_decimal"/>
         </class>
     </hibernate-mapping>
 


Field Summary
 
Fields inherited from class com.poscoict.glueframework.biz.activity.GlueActivity
dynamicProperties, logger
 
Constructor Summary
GlueHibernateSearch()
           
 
Method Summary
protected  void postRunActivity(GlueContext ctx)
           
protected  void preRunActivity(GlueContext ctx)
           
 String runActivity(GlueContext ctx)
          Sub Class에서 반드시 구현하여야 하는 Abstract Method 이며 이 Method는 F/W에서 호출한다.
 
Methods inherited from class com.poscoict.glueframework.biz.activity.GlueActivity
commitTransaction, commitTransaction, getDao, getEventList, getName, getProperty, getPropertyNames, getTransition, rollbackTransaction, rollbackTransaction, setEventList, setName, setProperty, setTransition
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GlueHibernateSearch

public GlueHibernateSearch()
Method Detail

preRunActivity

protected void preRunActivity(GlueContext ctx)

postRunActivity

protected void postRunActivity(GlueContext ctx)

runActivity

public String runActivity(GlueContext ctx)
Description copied from class: GlueActivity
Sub Class에서 반드시 구현하여야 하는 Abstract Method 이며 이 Method는 F/W에서 호출한다. 결과 값은 GlueContext에 담아서 다음 Activity 또는 F/W에 전달하게 된다. 필요한 모든 Data는 GlueContext에서 호출하여 사용하게 된다.

Specified by:
runActivity in class GlueActivity<GlueContext>
Parameters:
ctx - GlueContext
Returns:
String 정상적이면 "success"를 Return 하고 비정상 처리를 원하면 "failure"를 Return 한다.
 예) 
 <transition name="success" value="BizLogic"/>
 <transition name="failure" value="ErrorHandle"/>
 ==> return "success"이면 BizLogic Activity 를 실행함.
 


Copyright © 2013–2016 POSCO ICT. All rights reserved.