flex.data.assemblers
Class HibernateAssembler

java.lang.Object 
확장flex.data.assemblers.AbstractAssembler 
확장flex.data.assemblers.HibernateAssembler
실장 Interface의 Summary :
flex.data.adapters.JavaAdapterConstants, Assembler , FlexConfigurable

Public Class HibernateAssembler
AbstractAssembler 를 확장
FlexConfigurable , flex.data.adapters.JavaAdapterConstants 를 실장

Flex Data Management Services 에서의 Flex 의 행선지로서 Hibernate 엔티티를 지원(support)하는 어셈블러입니다. 이 Class를 그대로 사용하는 일도, 확장해, 영속성 기능을 클라이언트에 공개하는 방법을 상세하게 제어할 수도 있습니다. 또, 독자적인 fill 및 count 메소드를 서브 Class에 추가해, Configuration 파일로부터 참조할 수도 있습니다.


필드 Summary
protected  flex.data.DataDestination dataDestination
           
protected  String destinationId
           
protected  flex.data.assemblers.HibernateManager hibernateManager
           
protected static Map hibernateManagers
           
protected  flex.data.assemblers.HibernateManager hibernateType
           
static String LOG_CATEGORY
           
 
Interface flex.data.adapters.JavaAdapterConstants 로부터 상속 받는 필드
AUTO_REFRESH_ELEMENT, CONFLICT_MODE_DEFAULT, CONFLICT_MODE_DELETE_ATTR, CONFLICT_MODE_UPDATE_ATTR, COUNT_ELEMENT, FILL_CONTAINS_METHOD_ELEMENT, FILL_ELEMENT, GET_ELEMENT, METHOD_NAME_ELEMENT, ORDERED_ELEMENT, PARAM_TYPES_ELEMENT, SECURITY_CONSTRAINT_ELEMENT, SECURITY_REF_ATTR, SECURITY_RUN_AS_ELEMENT, SYNC_ELEMENT
 
Interface flex.data.assemblers. Assembler 로부터 상속 받는 필드
APPEND_TO_FILL , DO_NOT_EXECUTE_FILL , EXECUTE_FILL , REMOVE_FROM_FILL
 
constructor    Summary
HibernateAssembler ()
          Assembler Class는 Data Management Services 에 의해 작성되므로, 수동으로 작성할 필요는 없습니다.
 
메소드 Summary
 boolean autoRefreshFill (List  fillParameters)
          Hibernate 어셈블러는 항상 fill 메소드를 자동 갱신하므로, 이 메소드는 모든 필에 대해 true 를 돌려줍니다.
 int count (List  countParams)
          Hibernate 어셈블러의 count 쿠에리를 실장합니다.
protected  org.hibernate.cfg.Configuration createHibernateConfiguration (String  hibernateConfigFile)
          이 메소드는, 지정된 Configuration 파일명의 Hibernate 의 Configuration 을 돌려줍니다.
 void createItem (Object  item)
          createItem 오퍼레이션을 실제로 실행합니다.
 void deleteItem (Object  clientVersion)
          Hibernate 아이템을 삭제합니다.
protected  void fetchObjectProperties (Object  inst)
          Serialization 프로세스에 필요한 모든 데이터가 취득된 것을 확인합니다.
 Collection fill (List  fillArgs)
          Hibernate 어셈블러에 fill 메소드를 실장합니다.
 Object getItem (Map  identity)
          지정된 ID 의 아이템을 돌려줍니다.
protected  void handleHibernateException (RuntimeException  ite, String  type)
          이 메소드는, Hibernate 오퍼레이션을 처리하고 있을 때 Exception가 발생했을 경우에 불려 갑니다.
 void initialize (String  id, ConfigMap  properties)
          이 initialize 메소드는, 행선지 마다 1 회씩 불려 갑니다.
 int refreshFill (List  fillParameters, Object  item, boolean isCreate)
          Hibernate 어셈블러는, 아이템이 작성 또는 변경되면(자), 반드시 실행중의 모든 필을 갱신합니다.
 void updateItem (Object  newItem, Object  prevItem, List  changes)
          이 메소드는, Hibernate 아이템을 갱신하기 위해서 불려 갑니다.
 
Class flex.data.assemblers. AbstractAssembler 로부터 상속 받는 메소드
addItemToFill , getItems , removeItemFromFill
 
Class java.lang. Object 로부터 상속 받는 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

LOG_CATEGORY

public static final String  LOG_CATEGORY
관련 항목 :
필드 정수치

hibernateManagers

protected static Map  hibernateManagers

hibernateManager

protected flex.data.assemblers.HibernateManager hibernateManager

hibernateType

protected flex.data.assemblers.HibernateType hibernateType

destinationId

protected String  destinationId

dataDestination

protected flex.data.DataDestination dataDestination
constructor    의 상세

HibernateAssembler

public HibernateAssembler()
Assembler Class는 Data Management Services 에 의해 작성되므로, 수동으로 작성할 필요는 없습니다.

메소드의 상세

initialize

public void initialize(String  id,
ConfigMap  properties)
이 initialize 메소드는, 행선지 마다 1 회씩 불려 갑니다. 그 외의 Configuration 프롭퍼티를 추가하는 경우는, 이 메소드를 재정의(override) 할 수 있습니다. ConfigMap Class에는, 지정된 행선지의 properties 태그의 내부에 프롭퍼티가 포함됩니다. ID 파라미터는 행선지의 이름입니다.

Hibernate 어셈블러는 2 개의 유틸리티 Class를 사용합니다. HibernateManager 는, 지정한 Hibernate Configuration 파일 마다 작성되는 Class입니다. 관련하는 Hibernate 엔티티의 그룹용으로 Data Management Services 를 Management합니다. HibernateType Class는, 어셈블러 인스턴스 마다 작성됩니다.

정의 :
Interface FlexConfigurable initialize
재정의(override) :
Class AbstractAssembler initialize
파라미터 :
id - 이 어셈블러의 행선지명입니다.
properties - properties 태그아래에서 이 행선지를 Configuration 하기 위해서 사용하는 프롭퍼티입니다.

createHibernateConfiguration

protected org.hibernate.cfg.Configuration createHibernateConfiguration(String  hibernateConfigFile)
이 메소드는, 지정된 Configuration 파일명의 Hibernate 의 Configuration 을 돌려줍니다.


count

public int count(List  countParams)
Hibernate 어셈블러의 count 쿠에리를 실장합니다. 이 실장에 의해, 이 행선지에 의해 Management되고 있는 형태의 엔티티의 총수를 돌려주는 SQL 쿠에리가 작성됩니다 (즉 "all" 쿠에리만을 지원(support)). 특정의 custom Hibernate 쿠에리에 대해 클라이언트에 카운트를 제공할 필요가 있는 경우는, 이 메소드를 재정의(override) 할 수 있습니다.

정의 :
Interface Assembler count
재정의(override) :
Class AbstractAssembler count
파라미터 :
countParameters - 클라이언트 호출에 의해 제공되는 count 메소드의 파라미터의 리스트입니다.
반환값 :
countParameters 에 의해 지정되는 콜렉션내의 아이템의 수입니다.

getItem

public Object  getItem(Map  identity)
지정된 ID 의 아이템을 돌려줍니다.

정의 :
Interface Assembler getItem
재정의(override) :
Class AbstractAssembler getItem
파라미터 :
identity - 각 ID 프롭퍼티의 키/치의 페어가 포함되는 java.util.Map 입니다.
반환값 :
이 ID 프롭퍼티에 대응하는 아이템, 또는 이 ID 의 아이템이 없는 경우는 null 입니다.

fill

public Collection  fill(List  fillArgs)
Hibernate 어셈블러에 fill 메소드를 실장합니다. 이 실장에 의해, 이 오브젝트형의 Hibernate 매핑 파일로 지정된 이름 첨부 쿠에리가 지원(support)됩니다. 이름 첨부 쿠에리를 사용하는 경우는, 최초의 파라미터는 쿠에리의 이름이 되어, 2 번째의 파라미터는, Hibernate 어셈블러가 필요로 하는 그 이외의 파라미터를 지정합니다. 이름 첨부 쿠에리가 위치 파라미터를 사용하는 경우는, 2 번째의 파라미터는 Object[] 인가, 이러한 파라미터의 java.util.List 가 아니면 안됩니다. 이름 첨부 쿠에리로 이름 첨부 파라미터를 사용하는 경우는, 2 번째의 파라미터 자체를, 파라미터치에 매핑 된 파라미터명이 포함되는 java.util.Map 로 하지 않으면 안됩니다.

행선지 Configuration 으로 allow-hql-queries 속성을 true 로 Configuration 하면(자), 클라이언트는 임의의 HQL 쿠에리도 건네줄 수가 있습니다. 이 경우는, 최초의 파라미터는 string 토큰,"flex:hql" 가 되어, 2 번째의 파라미터는 HQL string가 되어, 3 번째의 파라미터는, 쿠에리의 파라미터 세트를 배열 또는 java.util.Map 로서 지정합니다.

이 메소드를 재정의(override) 해, 그 외의 쿠에리를 추가하는 일도, Hibernate 쿠에리의 일반적인 실장 방법을 확장할 수도 있습니다.

정의 :
Interface Assembler fill
재정의(override) :
Class AbstractAssembler fill
파라미터 :
fillArgs - 클라이언트의 DataService.fill 메소드에 제공되는 fill 파라미터의 리스트입니다. 최초의 파라미터, ArrayCollection 가 이 리스트에 포함되지 않는 것에 주의해 주세요.
반환값 :
클라이언트에 의해 Management되는 아이템의 리스트가 포함되는 콜렉션입니다. 이 콜렉션에는, 모든 것이 유효한 ID 프롭퍼티를 가지는 인스턴스가 포함되어 있을 필요가 있습니다. 또, 같은 ID 의 인스턴스가 2 개 이상 포함되지 않게 합니다.

autoRefreshFill

public boolean autoRefreshFill(List  fillParameters)
Hibernate 어셈블러는 항상 fill 메소드를 자동 갱신하므로, 이 메소드는 모든 필에 대해 true 를 돌려줍니다.

정의 :
Interface Assembler autoRefreshFill
재정의(override) :
Class AbstractAssembler autoRefreshFill
파라미터 :
fillParameters - 1 개(살) 또는 복수의 클라이언트에 의해 그 시점에서도 Management되고 있는 Management 콜렉션을 작성한 fill 메소드에 대한 클라이언트 사이드 파라미터입니다.
반환값 :
fill 파라미터에 의해 식별되는 필을 자동 갱신하는 경우는 ture, 이 필의 자동 갱신이 오프가 되어 있는 경우는 false 입니다.

refreshFill

public int refreshFill(List  fillParameters,
Object  item,
boolean isCreate)
Hibernate 어셈블러는, 아이템이 작성 또는 변경되면(자), 반드시 실행중의 모든 필을 갱신합니다. 이 메소드는, 항상 돌아와 코드 EXECUTE_FILL 를 돌려줍니다.

정의 :
Interface Assembler refreshFill
재정의(override) :
Class AbstractAssembler refreshFill
파라미터 :
fillParameters - 이 서버에 접속된 1 개(살) 또는 복수의 클라이언트에 의해 이 시점에서도 액티브하게 Management되고 있는 fill 메소드를 식별하는 파라미터입니다.
item - 최근 위탁된 트랜잭션(transaction)로 작성 또는 갱신되고 있는 아이템입니다.
isCreate - 이 아이템이 작성된 조작의 경우는 true, 갱신된 조작의 경우는 false 입니다.
반환값 :
DO_NOT_EXECUTE_FILL - 아무것도 실행하지 않는다. EXECUTE_FILL - fill 메소드를 재차 실행해, 새로운 리스트를 취득한다. APPEND_TO_FILL - 기존의 리스트에 단지 추가한다. REMOVE_FROM_FILL - 순차 순서로부터 삭제한다.

handleHibernateException

protected void handleHibernateException(RuntimeException  ite,
String  type)
이 메소드는, Hibernate 오퍼레이션을 처리하고 있을 때 Exception가 발생했을 경우에 불려 갑니다. 로그를 디버그 하므로, 호출 바탕으로 에러를 슬로우 하기 전에, 에러의 상세를 capther 할 수 있습니다.


createItem

public void createItem(Object  item)
createItem 오퍼레이션을 실제로 실행합니다. 이 아이템을 Hibernate 세션에 보존합니다.

정의 :
Interface Assembler createItem
재정의(override) :
Class AbstractAssembler createItem
파라미터 :
item - 작성하는 아이템의 최초의 인스턴스입니다.

updateItem

public void updateItem(Object  newItem,
Object  prevItem,
List  changes)
이 메소드는, Hibernate 아이템을 갱신하기 위해서 불려 갑니다. 경합 검출이 유효하게 되어 있는 경우는, 갱신을 실시하기 전에 경합 검출을 실행해, 경합이 검출되었을 때에 DataSyncException 를 슬로우 합니다. 관련짓고 프롭퍼티에서는, 참조되는 아이템으로부터 ID 를 취득해, 세션으로 대응하는 아이템을 검색해, 같은 ID 를 가지는 복수의 인스턴스를 같은 Hibernate 세션에 넣지 않게 합니다 (넣으면(자) Hibernate 런타임 에러가 발생합니다). 또, collection 프롭퍼티에서는, 1으로 우리 실행해, 새로운 값을 낡은 값에 merge 해, 필요에 따라서 아이템을 삭제 및 추가합니다.

정의 :
Interface Assembler updateItem
재정의(override) :
Class AbstractAssembler updateItem
파라미터 :
newItem - 갱신의 실행에 사용하는 아이템의 새로운 버젼입니다.
prevItem - 이러한 변경을 실시하기 전의 아이템의 원의 버젼입니다 (경합의 검출에 사용).
changes - 변경된 프롭퍼티명의 리스트입니다.

deleteItem

public void deleteItem(Object  clientVersion)
Hibernate 아이템을 삭제합니다. 이 메소드는, 경합 검출이 유효하게 되어 있는 경우는 경합 검출을 실시해, 데이타베이스로부터 Hibernate 엔티티를 삭제합니다.

정의 :
Interface Assembler deleteItem
재정의(override) :
Class AbstractAssembler deleteItem
파라미터 :
clientVersion - 클라이언트가 삭제하려고 하고 있는 클라이언트상의 아이템의 원의 버젼입니다.

fetchObjectProperties

protected void fetchObjectProperties(Object  inst)
Serialization 프로세스에 필요한 모든 데이터가 취득된 것을 확인합니다. Hibernate 에는 독자적인 lazy 플래그가 있습니다만, 이것은 많은 프롭퍼티의 디폴트입니다. Hibernate 는, 아이템에의 액세스를 할 때까지는, 아이템의 프롭퍼티를 취득하지 않습니다. 이 조작은 트랜잭션(transaction)의 실행중에 실시할 필요가 있습니다. 다만, 클라이언트에 대해서 상태를 Serialization하고 있는 경우는, 보틀 넥이 발생할 가능성이 있으므로, 트랜잭션(transaction)를 실행 상태로 해 두지 않습니다. 따라서, 이 메소드는, Serialization 프로세스에 필요한 모든 상태를 취득합니다.

여기서 사용하는 기본적인 룰은, Data Management Services 의 지연 관련짓고의 마크가 프롭퍼티를 뒤따르지 않은 한, 프롭퍼티치를 깊게 검색한다고 하는 것입니다. 그 경우, Data Management Services 는, 관련지을 수 있었던 오브젝트의 ID 만을 확인하므로, 제공할 필요가 있는 것은 ID 만입니다.

이 프로세스의 이해하기 어려운 점은, 지연 Data Management Services 의 행선지가, 콜렉션 프롭퍼티로 참조되는 오브젝트의 ID 를 취득한다고 하는 점입니다. 따라서, 콜렉션이 지연의 경우는, 참조되고 있는 아이템의 ID 를 확실히 취득할 수 있도록(듯이), 적어도 콜렉션을 충분히 검색할 필요가 있습니다.

또, 오브젝트 그래프에 사이클을 넣을 수가 있는 점에도 주의해 주세요. 따라서, 이미 표시한 오브젝트가 검출되면(자), 검색을 정지합니다.



Copyright © 2006 Adobe Systems Inc. All Rights Reserved.