KR20050065638A - Transparent ejb support and horizontal data partitioning - Google Patents

Transparent ejb support and horizontal data partitioning Download PDF

Info

Publication number
KR20050065638A
KR20050065638A KR1020057007438A KR20057007438A KR20050065638A KR 20050065638 A KR20050065638 A KR 20050065638A KR 1020057007438 A KR1020057007438 A KR 1020057007438A KR 20057007438 A KR20057007438 A KR 20057007438A KR 20050065638 A KR20050065638 A KR 20050065638A
Authority
KR
South Korea
Prior art keywords
database
transaction
objects
databases
standard
Prior art date
Application number
KR1020057007438A
Other languages
Korean (ko)
Inventor
마니쉬 모드
마지드 아니
제임스 잭비어
산디프 마더
프라사드 반드레디
샤오지옹 양
Original Assignee
제이지알 어퀴지션 인코퍼레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 제이지알 어퀴지션 인코퍼레이티드 filed Critical 제이지알 어퀴지션 인코퍼레이티드
Publication of KR20050065638A publication Critical patent/KR20050065638A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present invention relates to application development using a common object framework (COF). More particularly, aspects of the invention relate to adapting the COF to be substantially compliant with a standard-based server-side component model and remote method invocation protocol. Additional aspects of the invention relate to horizontal partitioning of databases at a middle, business application tier, above a database tier. Combinations including staging, change history, and internationalization of fields within objects are further aspects of this invention. Particular aspects of the present invention are described in the claims, specification and drawings.

Description

투명한 EJB 지원 및 수평 데이터 분할 방법{TRANSPARENT EJB SUPPORT AND HORIZONTAL DATA PARTITIONING}Transparent edge support and horizontal data partitioning method {TRANSPARENT EJB SUPPORT AND HORIZONTAL DATA PARTITIONING}

본 발명은 공통 객체 프레임워크(common objact framwork, COF)를 사용한 애플리케이션 개발에 관한 것이다. 더 상세하게는, 본 발명의 특징은 COF가 표준-기반 서버-측 컴포넌트 모델(standard-based server-side component model) 및 원격 메소드 호출 프로토콜(remote method invocation protocol)을 실질적으로 따르도록 적응시키는 것이다. 본 발명의 부가적인 특징은 데이터베이스 티어(database tier) 이상의, 중간 비지니스 애플리케이션 티어(middle business application tier)에서의 데이터베이스 수평 분할(horizontal partitioning)에 관한 것이다. 본 발명의 다른 특징은 다단화(staging), 변화 히스토리(change history), 및 객체 내 필드의 범용화(internationalization)를 포함하는 조합이다. 본 발명의 특징들이 청구범위, 명세서 및 도면에 개시되어 있다.The present invention relates to application development using a common objact framework (COF). More specifically, a feature of the present invention is that the COF is adapted to substantially conform to the standard-based server-side component model and the remote method invocation protocol. An additional feature of the present invention relates to database horizontal partitioning in the middle business application tier, above the database tier. Another feature of the present invention is a combination that includes staging, change history, and internationalization of fields in objects. Features of the invention are disclosed in the claims, the specification and the drawings.

다중-티어(multi-tired) 애플리케이션은 분산되고 신뢰할 수 있고 스케일링가능한 방식으로 비지니스 로직을 활용하는 유명한 접근 방식이 되었다. 다중-티어 시스템에서, 시스템 서비스 티어는 데이터베이스, 트랜잭션 및 다른 인프라구조를 제공한다. 미들 티어(middle tier)는 비지니스 로직으로의 액세스를 제공한다. 클라이언트 티어(client tier)는 비지니스 로직에 액세스한다. 클라이언트 티어는 얇고(thin) 정교한(sophisticated) 클라이언트를 구비한 사용자들일 수 있고, 또는 웹 서비스 클라이언트와 같은 프로그램일 수 있다. 다중-티어 애플리케이션은 단일 애플리케이션 플랫폼으로부터의 다수 고객들을 지원하기에 특히 유용하다. 다중-티어 애플리케이션은 다수 고객에 대해 유사하게 포맷된 데이터를 처리하기 위해 적응될 수 있는데, 이는 코드 재사용 및 스케일링을 포함하는 장점을 갖는다.Multi-tired applications have become a popular approach to leverage business logic in a distributed, reliable and scalable manner. In a multi-tier system, the system service tier provides databases, transactions, and other infrastructure. The middle tier provides access to business logic. The client tier accesses business logic. The client tier can be users with a thin and sophisticated client, or can be a program such as a web service client. Multi-tier applications are particularly useful for supporting multiple customers from a single application platform. Multi-tier applications can be adapted to handle similarly formatted data for multiple customers, which has the advantage of including code reuse and scaling.

J2EE 및 Enterprise JavaBeansTM(EJB)가 비지니스 로직을 캡슐화하고 서비스하기 위한 아키텍쳐로서 판명되었고, 다중-티어 환경에서 데이터 관리를 위한 메커니즘과 통합되었다. 애플리케이션 서버는 시스템 서비스와 인프라구조로의 액세스를 제공한다. 애플리케이션 서버는 비지니스 로직과 데이터 모두를 캡슐화하는 객체의 저장 또는 존속을 관리한다. 이에 대해, Sun의 JavaTM 2 플랫폼에 대한 개략 가이드(Simplified Guide to the JavaTM 2 Platform), Enterprise Edition(1999)를 참조하라. 마이크로소프트의 라이벌 아키텍처는 NET 프레임워크와 DCOM으로 알려져 있다. Monson-Haefel, Richard, Enterprise JavaBeans 3d ed., p.17 O'Reilly(2001). 일부 유사한 특징을 가진 이전의 프레임워크는 CORBA로 알려져 있다.J2EE and Enterprise JavaBeans TM (EJB) proved to be an architecture for encapsulating and servicing business logic, and integrated with mechanisms for data management in a multi-tier environment. Application servers provide access to system services and infrastructure. The application server manages the storage or persistence of objects that encapsulate both business logic and data. On the other hand, outline guide for the Sun Java TM 2 platform (Simplified Guide to the Java TM 2 Platform), see the Enterprise Edition (1999). Microsoft's rival architecture is known as the NET framework and DCOM. Monson-Haefel, Richard, Enterprise JavaBeans 3d ed., P. 17 O'Reilly (2001). The old framework with some similar features is known as CORBA.

다중-티어, 캡슐화 비지니스 애플리케이션의 수명은 초기 개발 및 후속 관리 모두를 포함한다. (여기에서, 비지니스 애플리케이션은 소위 비지니스 로직이 상주하는 하나 이상의 중간-티어를 포함하는 상업적 및 비상업적 애플리케이션을 포함하도록 사용되고 있다.) 다중-티어, 캡슐화된 비지니스 애플리케이션의 초개 개발은 시각적인 객체-지향 분석 및 모델링 툴에서 시작될 수 있고, 관계형 데이터베이스 매핑 프로세스를 통해 진행할 수 있으며, 다중-티어 캡슐화 애플리케이션 컴포넌트로서 활용될 수 있다. 관리는 업데이트된 비지니스 애플리케이션 컴포넌트의 스테이징 및 배치를 포함할 수 있다. 배치는 제품 이름과 설명과 같은 동적 데이터의 (I18N로 약칭됨: "i" 및 "n" 더하기 그 사이의 18 문자) 범용화를 요구할 수 있다.The lifetime of a multi-tier, encapsulated business application includes both initial development and subsequent management. (Here, business applications are being used to include commercial and non-commercial applications, including one or more mid-tiers, where so-called business logic resides.) The initial development of multi-tiered, encapsulated business applications is visual object-oriented analysis. And modeling tools, can proceed through a relational database mapping process, and can be utilized as a multi-tier encapsulation application component. Management may include staging and deployment of updated business application components. The batch may require generalization of dynamic data such as product name and description (abbreviated as I18N: "i" and "n" plus 18 characters in between).

초기 개발을 위해 사용되는 툴은 통일된 모델링 언어(unified modeling language, UML)에 합치되는 시각적인 분석 및 모델링 툴을 포함하고, 사용할 애플리케이션과 데이터의 객체-지향 모델을 생성한다. 래셔널 장미(Rational Rose)는 선도적인 시각적 분석 및 모델링 툴이다. 다른 제품은 IBM의 VisualAge, Borland의 Enterprise Studio 및 Neuvis의 NeuArchitect를 포함한다. 드래프팅 툴은 또한 Visio 또는 Flowcharter와 같은 시각적인 분석 및 모델링을 위해 사용될 수 있다.The tools used for initial development include visual analysis and modeling tools that conform to a unified modeling language (UML) and create object-oriented models of the application and data to be used. Rational Rose is a leading visual analysis and modeling tool. Other products include IBM's VisualAge, Borland's Enterprise Studio, and Neuvis's NeuArchitect. Drafting tools can also be used for visual analysis and modeling, such as Visio or Flowcharter.

OR 툴이 또한 관계형 데이터베이스에 객체-지향 모델을 매핑시키기 위해, 개발을 위해 사용될 수 있다. TopLink는 객체-지향 모델을 관계형 데이터베이스에 매핑시키는 선도적인 툴이다. 라이벌 툴은 Sun Microsystems, IBM, Borland, Oracle, Microsoft, Thought, Inc., 및 Tibco에 의해 생산된다. 일부 OR 매핑 능력을 포함하는 모델링 툴은 일반적으로 가용 데이터베이스의 범위를 지원하는데 매우 제한되고 적응성이 양호하지 않다.OR tools can also be used for development, to map object-oriented models to relational databases. TopLink is a leading tool for mapping object-oriented models to relational databases. Rival tools are produced by Sun Microsystems, IBM, Borland, Oracle, Microsoft, Thought, Inc., and Tibco. Modeling tools that include some OR mapping capabilities are generally very limited and poorly adaptable to supporting the range of available databases.

다중-티어, 캡슐화 비지니스 애플리케이션을 위한 애플리케이션 서버는 J2EE 표준 또는 유사한 표준을 따를 수 있다. J2EE 및 EJB 2.0을 위한 애플리케이션 서버는 Sun, JBoss.org, Borland, IBM, BEA Systems, Warp solutions, Macromedia, Oracle 및 기타 다수에 의해 제공된다. 애플리케이션 서버는 Oracle, Microsoft, IBM, Siebel, Sybase 및 기타에 의해 제공된 데이터베이스를 포함하여, 보존을 위한 다양한 데이터베이스에 의존할 수 있다.Application servers for multi-tier, encapsulated business applications can follow the J2EE standard or a similar standard. Application servers for J2EE and EJB 2.0 are provided by Sun, JBoss.org, Borland, IBM, BEA Systems, Warp solutions, Macromedia, Oracle, and many others. Application servers can rely on various databases for preservation, including databases provided by Oracle, Microsoft, IBM, Siebel, Sybase, and others.

이용가능한 툴의 2가지 약점은 제한된 통합성과 유지 및 배치에서 유용한 특징에 대한 지원 부족이다. 제한된 통합성은 사용자에게 데이터를 재입력하거나 상세한 프로그래밍 가이드라인을 따르도록 요구하여, 시각적 분석 및 모델링 툴에 활용되고, OR 툴에 매핑되는 애플리케이션이 다중-티어, 캡슐화된 비지니스 애플리케이션 활용을 위한 라이벌 표준 중 하나에 합치도록 하는 것을 의미한다. 개발자가 기존 툴을 사용하여 수동으로 실행하도록 요구하지 않기 위해, 지원하기에 유용할 수 있는 특징은 스테이징, 배치의 히스토리 및 동적 데이터의 범용화를 포함한다. 히스토리는 배치의 기록과 선택적으로 스테이징의 기록 및/또는 새 모듈의 시험을 지칭한다. 동적 데이터의 범용화는 하나 이상의 기본 언어 또는 국가에 부가될 언어 또는 국가를 특정함으로써, 동적 데이터의 외국어 번역을 지원하기 위해 부가적인 필드 및 테이블을 부가하는 것을 지원한다.Two disadvantages of the tools available are limited integration and lack of support for features useful in maintenance and deployment. Limited integration requires users to re-enter data or follow detailed programming guidelines, so applications that are used in visual analysis and modeling tools, and mapped to OR tools, are among the rival standards for leveraging multi-tiered, encapsulated business applications. It means to match one. In order not to require developers to run manually using existing tools, features that may be useful to support include staging, history of deployment, and generalization of dynamic data. History refers to the recording of batches and optionally the recording of staging and / or testing of new modules. Generalization of dynamic data supports adding additional fields and tables to support foreign language translation of dynamic data by specifying a language or country to be added to one or more basic languages or countries.

현재의 시스템에서 명백하지 않은, 바람직한 특징은 미들 티어에서 데이터를 수평적으로 분할하여, 오러클 데이터베이스 및 SQL 서버 2000과 같이, 데이터가 서로 독립적인 다중 물리적 데이터베이스 및 심지어 상이한 판매자의 플랫폼에 형성된 데이터베이스에 위치될 수 있게 된다. 이하에서, 버전 "2000"은 단지 참조로서 사용되었고, 본 발명의 특징을 실행하기 위해 사용될 수 있는 소프트웨어의 버전에 대한 제한을 제안하는 것으로 의도된 것은 아니다. 데이터베이스 판매자에 의해 제공된 수평적인 분할에 대한 기존 메커니즘은 판매자의 데이터베이스 관리자의 제어하에 있는 모든, 단일의 치밀하게 관리되는 시스템 내에서 다중 물리적 볼륨(physical volume)을 사용한다. 수평적인 분할 기술의 예에 대해, Klein에 의한, 미국 특허번호 6,453,313, Database management system and method for dequeuing rows published to a database table(1992); Lohman 등에 의한, 미국 특허번호 6,112,198, Optimization of data repartitioning during parallel query optimization(2000); Baru 등에 의한, 미국 특허번호 5,970,495, Method and apparatus for achieving uniform data distribution in a parallel database system(1999)를 참조하라. Klien이 설명한 바와 같이, 대규모 데이터베이스 테이블의 투명한 수평 분할은 클러스터 내의 모드와 디바이스를 따라 연산 부하(computational loads)를 스케일링하고 분배하도록 사용된다. 수평 분할은 테이블이 2 이상의 파일로 나누어지거나 분할되는 것을 의미하는데, 여기에서 각각의 분할은 상응하는 키 값 범위를 구비한 레코드들(집합들(tuples))을 저장한다. 예를 들어, 고객 테이블의 2 이상의 분할 각각은 상응하는 문자 A-L 범위에서 시작하는 고객 이름에 상응하는 레코드를 위해 사용될 수 있다. 테이블은 또한 해시값에 기반하여 분할될 수 있다. 예를 들어,. 레코드 색인의 해시 함수를 사용하는 것은 예를 들어 4인 임의의 N 값을 구비할 수 있고, 테이블은 N개의 분할로 나누어질 수 있으며, 여기에서 해시 함수는 각각의 테이블 행이 저장되는 분할을 결정하기 위해 사용된다. 나아가, 각각의 분할은 시스템에 대한 연산 부하의 분배를 촉진하기 위해 시스템의 상이한 노드, 또는 물리적 디바이스 상에 저장될 수 있다.A desirable feature, which is not apparent in current systems, is the partitioning of data horizontally in the middle tier, where the data is located in multiple physical databases that are independent of each other, even in databases formed on platforms of different vendors, such as Oracle Database and SQL Server 2000. It becomes possible. In the following, version "2000" has been used only as a reference and is not intended to suggest any limitation on the version of software that can be used to implement the features of the present invention. Existing mechanisms for horizontal partitioning provided by a database vendor use multiple physical volumes within a single, tightly managed system under the control of the vendor's database administrator. For examples of horizontal partitioning techniques, see US Pat. No. 6,453,313, Database management system and method for dequeuing rows published to a database table (1992) by Klein; US Pat. No. 6,112,198, Optimization of data repartitioning during parallel query optimization (2000); See, US Pat. No. 5,970,495, Method and apparatus for achieving uniform data distribution in a parallel database system (1999). As Klien explained, transparent horizontal partitioning of large database tables is used to scale and distribute computational loads along modes and devices in a cluster. Horizontal partitioning means that a table is divided or partitioned into two or more files, where each partition stores records (tuples) with a corresponding key value range. For example, each of the two or more partitions of the customer table may be used for records corresponding to customer names starting with the corresponding letter A-L range. The table can also be partitioned based on hash values. E.g,. Using the hash function of the record index can have any N values, for example 4, the table can be divided into N partitions, where the hash function determines the partition where each table row is stored. Used to Furthermore, each partition may be stored on a different node, or physical device, of the system to facilitate the distribution of computational load for the system.

데이터베이스 관리자 대신에, 중간-티어로의 수평 분할의 통합은 동일한 애플리케이션을 갖는 다수 고객들을 지원하기에 유용할 수 있다. 투명한 수평 분할 지원은 추가적인 고객들이 부가되거나 데이터베이스가 재분할되기 때문에 개발자로 하여금 각자의 비지니스 로직을 교정할 필요를 없앤다.Instead of a database administrator, the integration of horizontal partitioning into the mid-tier can be useful to support multiple customers with the same application. Transparent horizontal partitioning support eliminates the need for developers to revise their business logic because additional customers are added or the database is repartitioned.

따라서, 다중-티어, 캡슐화된 비지니스 애플리케이션의 배치 및 유지에 있어서 시각적인 분석 및 모델링으로부터 다양한 단계들에서의 개발을 더 잘 지원하고 통합하도록 할 수 있다.Thus, it is possible to better support and integrate development at various stages from visual analysis and modeling in the deployment and maintenance of multi-tier, encapsulated business applications.

도 1은 다중-티어 애플리케이션의 하이 레벨 블록 다이어그램이다.1 is a high level block diagram of a multi-tier application.

도 2는 공통 객체 프레임워크가 미들 티어를 제공하면서 J2EE 서버상에 EJB를 사용하는 것을 실행하는 방법을 도시한다.Figure 2 illustrates how the common object framework implements the use of EJBs on a J2EE server while providing a middle tier.

도 3은 시각적으로 모델링된 단순한 쇼핑 카트 애플리케이션에 대한 객체 및 관계를 도시한다.3 illustrates objects and relationships for a visually modeled simple shopping cart application.

도 4는 클래스 특성을 특정하기 위한 팝-업 창에 부가된 CBOF tab(401)을 도시한다.4 shows a CBOF tab 401 added to a pop-up window for specifying class properties.

도 5는 동작 특성을 특정하기 위한 팝-업 창에 부가된 CBOF tab(401)을 도시한다.5 shows a CBOF tab 401 added to a pop-up window for specifying operating characteristics.

도 6은 EJB 래핑(wrapping)에 적응될 수 있는 CBOF 모델을 도시한다.6 shows a CBOF model that can be adapted to EJB wrapping.

도 7은, EJB 및 J2EE를 지원하기 위해 적응되는 것과 같은, 클래스 CmoBase(701), CmsBase(702) 및 CmoAttribut(703)의 특징을 도시하는 클래스 다이어그램이다.7 is a class diagram illustrating features of classes CmoBase 701, CmsBase 702, and CmoAttribut 703, such as are adapted to support EJB and J2EE.

도 8 내지 도 10은 COF 툴과 모델을 EJB와 J2EE 지원에 적응시키는 것을 도시한다.8-10 illustrate adapting COF tools and models to EJB and J2EE support.

도 11은 일반적으로 수평 분할을 도시한다.11 generally illustrates horizontal division.

도 12는 TopLink 환경 내의 미들 티어에서 수평적인 분할을 실행하기 위해 사용될 수 있는 클래스들을 도시한다.12 illustrates classes that can be used to perform horizontal partitioning in the middle tier in the TopLink environment.

본 발명은 공통 객체 프레임워크(common object framework, COF)를 사용하는 애플리케이션 개발에 관한 것이다. 더 상세하게는, 본 발명의 특징은 COF를 표준-기반 서버-측 컴포넌트 모델 및 원격 메소드 호출 프로토콜을 실질적으로 따르도록 적응시키는 것에 관한 것이다. 본 발명의 부가적인 특징은 데이터베이스 티어 이상의 중간 비지니스 애플리케이션 티어에서 데이터베이스를 수평으로 분할하는 것에 관한 것이다. 스테이징, 변화 히스토리 및 객체들 내의 필드의 범용화를 포함하는 조합은 본 발명의 추가적인 특징이다. 본 발명의 특정 특징은 청구범위, 명세서 및 도면에 개시되어 있다.The present invention relates to application development using a common object framework (COF). More specifically, a feature of the present invention relates to adapting COF to substantially conform to the standards-based server-side component model and remote method invocation protocol. An additional feature of the present invention relates to horizontal partitioning of a database in an intermediate business application tier above the database tier. Combinations including staging, change history and generalization of fields in objects are additional features of the present invention. Certain features of the invention are disclosed in the claims, the specification and the drawings.

이하, 본 발명은 도면을 참조하여 상세히 설명된다. 바람직한 실시예는 본 발명을 설명하기 위해 기술된 것이고, 본 발명의 범위를 제한하기 위한 것이 아니며, 본 발명의 범위는 청구범위에 의해 한정된다. 당업자는 다음의 설명에서 다양한 균등범위 내의 변형이 가능하다는 것을 인식할 것이다.Hereinafter, the present invention will be described in detail with reference to the drawings. Preferred embodiments have been described for the purpose of illustrating the invention, and are not intended to limit the scope of the invention, which is defined by the claims. Those skilled in the art will recognize that variations within the range of equivalents are possible in the following description.

도 1은 본 발명의 일 실시예에서 사용될 수 있는 Sun에 의해 후원되는 J2EE과 EJB 표준을 도시한다. 이를 위해 Bodoff 등에 의한 The J2EE turorial, p 10 Addison Welsley(2002)를 참조하라. Sun은 다음과 같이 도 1 내의 블록을 설명한다. J2EE 서버(120)는 J2EE 제품(product)의 런타임 부분이다. J2EE 서버는 EJB(125) 및 Web(121) 컨테이너(container)를 제공하고, 후단(backend) 데이터베이스 층(130)에 대한 액세스를 관리한다. Enterprise JavaBeans(EJB) 컨테이너(125)는 J2EE 애플리케이션에 대한 엔터프라이즈 빈(enterprise bean)의 실행을 관리한다. 엔터프라이즈 빈(126, 127) 및 이의 컨테이너(125)는 J2EE 서버(120)상에서 실행된다. 웹 컨테이너(121)는 J2EE 애플리케이션에 대해 JSP 페이지 (123) 및 서블렛(122) 컴포넌트의 실행을 관리한다. 웹 컴포넌트(122, 123) 및 이의 컨테이너(121)는 J2EE 서버(120) 상에서 실행된다. 애플리케이션 클라이언트 컨테이너(113)는 애플리케이션 클라이언트(112) 컴포넌트의 실행을 관리한다. 애플리케이션 클라이언트(112) 및 이의 컨테이너(113)는 클라이언트(110) 상에서 실행된다. 애플렛(applet) 컨테이너는 애플렛의 실행을 관리한다. 이는 웹 브라우저(111) 및 클라이언트(110) 상에서 실행되는 하나 이상의 자바 플러그-인을 포함한다.1 illustrates a J2EE and EJB standard sponsored by Sun that may be used in one embodiment of the present invention. See The J2EE turorial, p 10 Addison Welsley (2002) by Bodoff et al. Sun describes the block in FIG. 1 as follows. J2EE server 120 is the runtime part of the J2EE product. The J2EE server provides EJB 125 and Web 121 containers and manages access to the backend database layer 130. The Enterprise JavaBeans (EJB) container 125 manages the execution of enterprise beans for J2EE applications. Enterprise beans 126 and 127 and their containers 125 run on J2EE server 120. The web container 121 manages the execution of JSP page 123 and servlet 122 components for J2EE applications. Web components 122 and 123 and their containers 121 run on J2EE server 120. The application client container 113 manages the execution of the application client 112 component. Application client 112 and its container 113 run on client 110. The applet container manages the execution of applets. It includes one or more Java plug-ins running on the web browser 111 and the client 110.

더 일반적으로, 도 1은 표준-기반 서버-측 컴포넌트 모델 및 원격 메소드 호출 프로토콜을 도시한다. Microsoft.NET 프레임워크 및 CORBA는 유사한 컴포넌트를 포함한다. Monson-Haefel, Enterprise JavaBeans, pp 5-18 참조. 본 발명의 특징은, 상기 특징이 애플리케이션 제출시 현재 또는 여기에 식별된 버전에 후속하여, 또는 바로 제출시 표준의 분기(off-shoot)이나 임의의 버전과 합치한다면, 표준을 따르는 것으로 간주된다. 실질적인 합치는 전체적인 합치를 요구하지 않으면서도 유용하다. 표준과의 전체적인 합치는 때때로 불필요하거나, 너무 비싸거나 플럭스(flux)인 것으로 간주된 표준의 특징을 구현하는 것을 요구할 것이라는 것이 알려져 있다. 부가적으로, 일부 실행은 제품을 향상시키도록 도입될 수 있고 표준이 발전함에 따라 비-표준이 될 수 있고 고객들이 레거시 지원(legacy support)을 주장하는 전유 특징(propietary feature)을 포함할 것이라는 것이 알려져 있다. 표준은 EJB와 같은 커미티 제어된 명세(committee controlled specification)뿐만 아니라 .NET 프레임워크와 같은 판매자-제어된 명세 모두를 커버하도록 의도된다.More generally, FIG. 1 illustrates a standards-based server-side component model and remote method invocation protocol. The Microsoft.NET framework and CORBA include similar components. See Monson-Haefel, Enterprise JavaBeans, pp 5-18. Features of the present invention are considered to conform to the standard if the feature conforms to a version currently or identified herein at the time of application submission or immediately with an off-shoot or any version of the standard at the time of submission. Practical congruence is useful without requiring an overall congruence. It is known that global consensus with a standard will sometimes require the implementation of features of the standard that are considered unnecessary, too expensive or fluxy. In addition, some implementations may be introduced to improve the product, become non-standard as the standard evolves, and will include proprietary features in which customers claim legacy support. Known. The standard is intended to cover both commitment controlled specifications such as EJB, as well as vendor-controlled specifications such as the .NET framework.

도 2는 공통 객체 프레임워크가 미들 티어를 제공하여, J2EE 서버 상의 EJB를 사용하여 실행하고 있을 수 있는 방법을 도시한다. 도 2의 컴포넌트들 중 다수가 도 1의 컴포넌트들과 매칭되고, 그에 따라 넘버링되어 있다. 도 2에서, 웹 컨테이너의 콘텐츠와 엔터프라이즈 빈들 중 하나가 기술되어 있다. 웹 컨테이너(121)에서, 애플리케이션은 공통 객체 프레임워크(COF)(240A), 롤 애플리케이션(241), 웹 서비스 엔진(242) 및 합작(collaborative) 프로세스 매니저(243)를 포함한다. COF는 존속된 객체들에 대한 지원 및 액세스를 제공하고, 롤 애플리케이션(241)의 개발자가 지속성(persistence), 트랜잭션 관리(transaction management) 및 관련 임무를 처리할 필요를 저감시킨다. COF는 선택적으로 스테이징, 변화 히스토리, 범용화 및 수평 분할, 애플리케이션에 기술된 메소드 및 참조로서 편입된 출원 명세서 적용을 지원할 수 있다. 웹 서비스 엔진(242) 및 협동 프로세스 매니저는 웹 서비스를 제공하기 위해 Commmerce One에 의해 사용된 컴포넌트인데; 웹 컨테이너 내의 이러한 애플리케이션의 명세는 본 발명에서 중요하지 않다. 그럼에도 불구하고, 협동 프로세스 매니저(243)를 COF(240A)에 연결하는 실선 화살표와 CPM(243)을 COF(240B)와 CJB(127)에 연결하는 점선은 COF(240A) 코드로부터 이용가능한 서비스에 대한 EJB 컨테이너(124)에 의해 제공된 서비스들과 데이터 지원을 웹 컨테이너(121) 내 것으로 대체할 옵션을 도시한다. 240A, 240B와 같은 엔터프라이즈 빈(126)과 웹 컨테이너(121) 내의 COF 코드의 유사한 라벨링은 COF 코드를 거의 또는 전혀 재기록하지 않으면서 EJB 핸들링을 위해, 그리고 EJB-합치 인터페이스로써 래핑될 수 있다는 것을 지시하도록 의도되었다. 도시된 바와 같이, COF는 웹 컨테이너 또는 EJB 컨테이너 중 어느 하나에서 이용가능하게 만들어질 수 있다. 애플리케이션들은 COF 컴포넌트들 세트 모두와 동시에 또는 수반하여 액티브 세션을 가질 수 있다. 도 2가 EJB 환경의 상황에서 이러한 실행을 도시하고 있지만, 당업자는 동일한 접근방법이, DCOM과 같은 다른 표준-기반 서버-측 컴포넌트 모델 및 원격 메소드 호출 프로토콜에 적용될 수 있다는 것을 인식할 것이다.Figure 2 illustrates how the common object framework may provide a middle tier, which may be running using an EJB on a J2EE server. Many of the components of FIG. 2 match and are numbered accordingly. In Figure 2, one of the content and web beans of a web container is described. In the web container 121, the application includes a common object framework (COF) 240A, a role application 241, a web service engine 242, and a collaborative process manager 243. COF provides support and access to persisted objects and reduces the need for the developer of role application 241 to handle persistence, transaction management and related tasks. COF can optionally support staging, change history, generalization and horizontal partitioning, application specification application incorporated as a method and reference described in the application. Web service engine 242 and cooperative process managers are components used by Commmerce One to provide web services; The specification of such an application in a web container is not critical to the present invention. Nevertheless, the solid arrow connecting the cooperative process manager 243 to the COF 240A and the dotted line connecting the CPM 243 to the COF 240B and the CJB 127 correspond to the available services from the COF 240A code. It illustrates the option to replace the services and data support provided by the EJB container 124 for that within the web container 121. Similar labeling of COF code in the enterprise container 126 and web container 121, such as 240A and 240B, can be wrapped for EJB handling with little or no rewriting of COF code and as an EJB-matching interface. It was intended to. As shown, a COF can be made available in either a web container or an EJB container. Applications may have an active session concurrently with or with all of the set of COF components. Although FIG. 2 illustrates this implementation in the context of an EJB environment, those skilled in the art will recognize that the same approach can be applied to other standards-based server-side component models such as DCOM and to remote method invocation protocols.

소위 공통 객체 프레임워크는 비지니스 객체의 전체 소프트웨어 수명을 관리하기위해 기본 실행 및 툴을 제공하는데, 이는 편입된 출원 명세서에 더 상세히 기술되어 있다. 이는 투명 범용화(transparent internationalization), 스테이징(staging), 변화 히스토리(change history) 및 고객 속성을 포함하는 디자인, UML 모델, 완전한 코드 및 데이터베이스 생성을 포함한다. 툴은 데이터베이스에 독립적인 코드, 및 데이터 개요(schema)의 계속적인 유지를 위해 제공된다. 공통 객체 프레임워크 컴포넌트는 유틸리티 라이브러리, 비지니스 객체 프레임워크 및 시스템 관리 툴을 포함하는 카테고리에 포함된다. 유틸러티 라이브러리 컴포넌트는 (범용화된) 예외들(Exceptions), 로깅(Logging), 암호화(Cryptography) 및 구성 액세스(Configuration access)와 같은 공통 코드 레벨 유틸러티를 포함한다. 상기 컴포넌트는 또한 자원 매니저, 날자 숫자 및 텍스트와 같은 범용화 기능들을 포함한다. 비지니스 객체 프레임워크는 비지니스 객체 설계, 보존을 위한 코드 생성, 범용화, 데이터 스테이징, 버전 히스토리, 동적 커스텀(custom) 속성 및 전체 생성/판독/업데이트/삭제(create/read/update/delete, CRUD) 기능을 위해 사용된다. 임의의 비지니스 객체의 연장성, 다중 서버에 걸친 캐쉬 동기화, 및 스케줄러를 지원한다. 시스템 관리 툴은 비지니스 객체 프레임워크에 기반한다. 상기 툴은 데이터베이스를 생성하고, 데이터를 로딩하고, 데이터베이스 개요를 업그레이드하고, 데이터에서의 복구(release) 변화를 업그레이드하기 위해 데이터 관리 툴을 포함한다. 또한, 범용화 및 로컬 키트에 대한 추출자(extractor 및 설치자(installer)가 있다.The so-called common object framework provides basic implementation and tools for managing the overall software life of business objects, which are described in more detail in the incorporated application specification. This includes design including transparent internationalization, staging, change history and customer attributes, UML models, complete code and database generation. Tools are provided for the ongoing maintenance of database-independent code and data schemas. Common object framework components fall into categories that include utility libraries, business object frameworks, and system management tools. Utility library components include common code level utilities such as (generalized) exceptions, logging, cryptography, and configuration access. The component also includes generalization functions such as resource managers, date numbers and text. The business object framework provides business object design, code generation, generalization, data staging, version history, dynamic custom attributes, and full create / read / update / delete (CRUD) capabilities. Used for Support for extensibility of any business object, cache synchronization across multiple servers, and scheduler. System management tools are based on the business object framework. The tool includes a data management tool to create a database, load data, upgrade the database overview, and upgrade release changes in the data. There are also extractors and installers for generalization and local kits.

EJB-합치 COF 또는 표준 합치 COF는 다양한 소프트웨어 컴포넌트에 의해 실행되고 그와 상호작용한다. 객체 모델의 디자인 및 코드나 메타-데이터(머신 판독가능한 데이터)의 생성은 Rational Rose 2001a 또는 상위 버전에 따라 실행될 수 있다. 또한, 이하에서, 버전 "2001a"는 단지 참조로서 사용되고 본 발명의 특징을 실행하기 위해 사용될 수 있는 소프트웨어 버전에 대한 제한을 제안하는 것으로 의도된 것은 아니다. Rational Rose를 사용할 때, 애드-인(add-in)은 도 4 내지 도 5에 도시되고 이하 설명된 기능을 제공하기 위해 설치된다. 데이터베이스는 TopLink 3.6.1, SQL 서버 2000, Oracle 8.1.7 또는 DB2, 및 I-net OPTA 4.15, Seroptor 또는 IDS JDBC Lite 3.5.4와 같은 적당한 JDBC 드라이버를 사용하여 매핑되고, 생성되며, 액세스될 수 있다. Websphere 및 WebLogic 7.0과 같은 EJB 컨테이너가 사용될 수도 있다.EJB-conforming COF or standard conforming COF is executed by and interacts with various software components. The design of the object model and the generation of code or meta-data (machine readable data) can be implemented according to Rational Rose 2001a or higher. Also, hereinafter, version " 2001a " is not intended to suggest any limitation as to the software version that can be used only as a reference and can be used to implement the features of the present invention. When using Rational Rose, an add-in is installed to provide the functionality shown in Figures 4-5 and described below. Databases can be mapped, created, and accessed using a suitable JDBC driver such as TopLink 3.6.1, SQL Server 2000, Oracle 8.1.7 or DB2, and I-net OPTA 4.15, Seroptor, or IDS JDBC Lite 3.5.4. have. EJB containers such as Websphere and WebLogic 7.0 can also be used.

EJB-합치 COF의 새롭고 개선된 모듈은 많은 유용한 방법에서 조합될 수 있다. 이러한 모듈들은 임의의 COF 객체가 EJB로서 액세스되고 사용될 수 있도록 하기 위해 원격 및 로컬 EJB 인터페이스를 생성한다. 상기 모듈들은 OR 매핑 툴과 같은 TOPLink 4.0을 사용하여, 객체를 발견하기 위한 쿼리 언어로서 EJB-QL에 대한 액세스를 제공한다. 상기 툴은 다중 데이터베이스에 대한 동시 액세스 및 데이터의 수평적인 분할을 지원하는 것을 포함하는 데이터베이스 서버 세션을 관리한다. 데이터베이스에 따른 관계(relationship)는 지원될 수 없다. 상기 관계는 임의의 객체에 대한 애플리케이션 액세스를 위한 클라이언트 세션을 제공한다. 상기 관계는 손상된 데이터베이스 연결을 위한 구성가능한 재-시도 메커니즘을 제공한다. 상기 관계는 데이터베이스 마이그레이션(database migration)에 따른 객체 id를 보존하고 수평적인 분할을 실행하기 위해서, 데이터베이스 서버에 따라 고유한 고유 연관(concatenate) 객체 id 및 EJB JTA-기반 트랜잭션과의 통합을 지원한다. 객체 변경 이벤트 통지는 객체 생성, 업데이트 및 삭제를 위한 구성가능한 이벤트로서 생성된다. 콜백(callback)이 사후 객체 생성, 사전 객체 업데이트, 사후 객체 리프레쉬 및 사전 객체 삭제를 위해 실행된 객체에 제공된다. 디자인 및 코드 생성 툴은 Rational Rose에 대해 제공된다. 데이터베이스 생성 툴은 가상으로 모델링된 디자인에 기반하여 데이터베이스 또는 DDL 스크립트를 생성한다. 툴은 생성된 EJB에 대한 애플리케이션 서버 배치 설명어(descriptor)를 생성한다. WebLogic 6.1 sp2, 및 WebSphere 5.0 지원(EJB 2.0 spec 지원 요구).The new and improved modules of EJB-matched COF can be combined in many useful ways. These modules create remote and local EJB interfaces to allow any COF object to be accessed and used as an EJB. The modules use TOPLink 4.0, such as the OR mapping tool, to provide access to EJB-QL as a query language for discovering objects. The tool manages database server sessions including supporting simultaneous access to multiple databases and horizontal partitioning of data. Relationships by database cannot be supported. The relationship provides a client session for application access to any object. The relationship provides a configurable retry mechanism for corrupted database connections. The relationship supports integration with EJB JTA-based transactions and unique concatenated object ids that are unique across database servers in order to preserve the object id resulting from database migration and to perform horizontal partitioning. Object change event notifications are generated as configurable events for object creation, update, and deletion. Callbacks are provided to objects executed for post-object creation, pre-object updates, post-object refreshes, and pre-object deletions. Design and code generation tools are provided for Rational Rose. The database generation tool generates a database or DDL script based on a virtually modeled design. The tool generates an application server deployment descriptor for the generated EJB. WebLogic 6.1 sp2, and WebSphere 5.0 support (requires EJB 2.0 spec support).

도 3은 가상으로 모델링된 간단한 쇼핑 카트 애플리케이션에 대한 객체와 관계를 도시한다. 본 도면 내의 모델은 클래스 다이어그램을 위한 Uniform Modeling Language(UML) 표시(notation)를 사용하여 생성되었다. 본 예에서, CmoCart 객체(301)이 다수의 노출된 메소드를 제공하기 위해 사용된다. CmoCart 대신 CmsCart를 사용하는 것은, 보존되는 고객들(customers) 및 차수들(orders)과 반대로, 객체가 세션 동안 존재하고 후속 세션 동안 보존되지 않는다는 것을 의미한다. 카트(301)는 차수(311)만큼 CmoOrder 객체(303)에 관련될 수 있다. 본 예에서, 일차 객체는 쇼핑 카트와 관련된다. CmoOrder 객체(303)는, 커미트(commit)될 때, Cmocustomer 객체(302)를 통해 고객(313)에 관련되어야 한다. 관계의 반대 방향을 따라, 지속성 고객(302)은 일이상의 차수(303)에 관련(312)될 수 있다. 차수(303)는 하나 이상의 CmoProductLineItem 객체(305)를 포함한다. 관계 아이템(314)은 차수(303)를 그의 라인 아이템(305)에 연결한다. 라인 아이템(305)은 제품(315) 관계에 의해 라인 아이템에 연결되는 제품(304)으로써 충진된다.3 illustrates the objects and relationships for a virtually modeled simple shopping cart application. The model in this figure was generated using a Uniform Modeling Language (UML) notation for class diagrams. In this example, CmoCart object 301 is used to provide a number of exposed methods. Using CmsCart instead of CmoCart means that the object exists during the session and is not preserved for subsequent sessions, as opposed to the customers and orders that are preserved. Cart 301 may be related to CmoOrder object 303 by degree 311. In this example, the primary object is associated with a shopping cart. When committed, the CmoOrder object 303 must be associated with the customer 313 via the Cmocustomer object 302. Along the opposite direction of the relationship, persistent customer 302 may be associated 312 with one or more orders 303. Order 303 includes one or more CmoProductLineItem objects 305. Relationship item 314 connects order 303 to its line item 305. The line item 305 is filled with a product 304 that is connected to the line item by a product 315 relationship.

UML에서, 쇼핑 카트와 같은 객체는 클래스로서 모델링될 수 있다. 디폴트로서, 본 발명의 일실시예에서 모든 탑-레벨(즉, 부모 클래스가 없는) 보존 객체는 도 5의 문맥에서 이하 설명되는 바와 같이, CmoBase로 불리우는 베이스 객체에서 유래한다. 택일적으로, 투명 객체는 CmsBase로 불리는 객체로부터 유래한다. 베이스 객체는 객체 모델링 프로그램에 로딩되고 다른 클래스에 의해 참조될 수 있는 CAT(또는 유닛) 파일에 제공될 수 있다. 베이스 클래스의 목적은 공통 인터페이스 및 실행을 통해 모든 객체에 대해 기본 기능을 제공하는 것이다.In UML, objects such as shopping carts can be modeled as classes. By default, in one embodiment of the invention all top-level (ie, no parent class) preservation objects are derived from a base object called CmoBase, as described below in the context of FIG. Alternatively, the transparent object comes from an object called CmsBase. Base objects can be provided in CAT (or unit) files that can be loaded into an object modeling program and referenced by other classes. The purpose of a base class is to provide basic functionality for all objects through a common interface and execution.

객체 모델링 프로그램으로써 UML 포맷 내의 클래스를 모델링하는 것은 다음의 단계들을 포함할 수 있다. 먼저, 패키지 계층(hierachy)이 클래스가 존재하고 생성될 디렉토리 구조를 특정하기 위해 생성된다. 그 후에, 클래스 이름, 클래스 문서화(documentation), 및 클래스 성질이 특정될 수 있다. 지원된 클래스 특성은, 도 4에 도시되고 이하 설명되는 툴을 사용하여, 다음: 지속성, 임시성, 추상, 코드 생성, 데이터베이스 테이블 이름, 안정성, 최대 수의 버전, 테이블-레벨 데이터베이스 제한 요소들(예를 들어 복합적인 고유 제한 요소), GUI에서 디스플레이, 이름 디스플레이, 설명 디스플레이, 생성, 및 EJB 생성을 포함한다.Modeling a class in UML format with an object modeling program may include the following steps. First, a package hierarchy is created to specify the directory structure where the class exists and will be created. Thereafter, the class name, class documentation, and class properties can be specified. Supported class properties are, using the tools shown in FIG. 4 and described below, including: persistence, temporaryity, abstraction, code generation, database table name, stability, maximum number of versions, table-level database restriction elements ( For example, complex unique constraints), display in the GUI, name display, description display, generation, and EJB generation.

다음으로, 클래스의 속성이 특정될 수 있다. 속성 이름, 타입, 문서화, 데이터베이스 칼럼 이름, 데이터베이스 칼럼 길이, 허용된 널(null) 값, 및 속성이 고유한지가 특정될 수 있다. 부가하여, 속성은 정적, 최종적 및/또는 일시적일 수 있다. 속성은 서브클래스 및 반사 코드가 속성에 액세스할 수 있도록 하기 위해 보호되는 것으로 정의될 수 있다. 그러나 다른 클래스 및 애플리케이션 코드는 게더(getter)와 세터(setter) 메소드를 통해서만 액세스해야 한다. 다음의 소성 타입: 정수(int), 블런(boolean), 부동(float), 김(long), 짧음(short), 두배(double), 문자(char), 문자열(String), 날짜(Date), 시간(Time), 시간표(Timestamp), 정수(Integer) 블런(Boolean), 부동(Float), 김(Long), 짧음(Short), 암호화문자열(EncryptedString), 해시문자열(HashedString) 및 번역가능한문자열(TrnaslatableString)이 지원된다.Next, properties of the class can be specified. The attribute name, type, documentation, database column name, database column length, null values allowed, and whether the attribute is unique can be specified. In addition, the attribute can be static, final and / or temporary. Attributes can be defined as protected to allow subclasses and reflection code to access them. However, other class and application code should only be accessed through getter and setter methods. The following firing types: int, boolean, float, long, short, double, char, string, date, Time, Timestamp, Integer Boolean, Float, Long, Short, EncryptedString, HashString, and Translated String ( TrnaslatableString) is supported.

이러한 타입은 데이터베이스-특정 타입에 매핑될 수 있는 자바 기본 타입에 적절하게 매핑된다. Object, byte 및 Byte는 바이트의 스트림을 저장하기 위해, 데이터베이스 내의 BLOB-타입에 매핑될 수 있다. char 및 Character는 큰 문자 스트림을 저장하기 위한 데이터베이스로 CLOB-타입에 매핑될 수 있다. EncryptedString 및 HashedString 타입은 단지 문자열이지만 생성된 코드는 속성을 세팅하기 전의 값을 암호화/해싱하고, 게터(getter) 및 세터 메소드를 통해 속성을 반환할 때 그 값을 암호해독할 특정한 타입이다. TranslatableString 속성은 또한 단지 스트링이지만 생성되는 코드는 코드 속성의 번역된 값을 나타내도록 하는 칼럼을 구비한 부가적인 테이블을 생성한다. 이는 특정 클래스 속성들로 하여금 속성의 다중 번역 값이 데이터베이스에 저장된 객체 값의 로컬화를 지원하도록 존재할 수 있는 것을 보이기 위해 특정되도록 한다.These types are properly mapped to Java primitive types, which can be mapped to database-specific types. Objects, bytes, and bytes can be mapped to BLOB-types in a database to store streams of bytes. char and Character are databases for storing large character streams and can be mapped to CLOB-types. The EncryptedString and HashedString types are just strings, but the generated code is a specific type that will encrypt / hash the value before setting the property, and decrypt that value when returning the property through getter and setter methods. The TranslatableString attribute is also just a string, but the generated code creates an additional table with columns that represent translated values of the code attribute. This allows certain class attributes to be specified to show that multiple translation values of the attribute may exist to support localization of object values stored in the database.

그 후에, 클래스의 관계가 특정될 수 있다. UML에서, 하나의 객체에서 다른 객체로의 화살표를 가진 라인을 사용하는 것은 관계 또는 연관(association)을 특정한다. 연관의 각 측면(side)은 롤(role)이라 불린다. 롤 이름은 연관의 "from" 측의 클래스 상의 속성 이름과 동등하다. 롤은 (속성에서와 같이) 보호된 제어(protected control)되어야 한다. 각 롤은 상태수(multiplicity)를 특정할 수 있다. "0..1", "1" 및 "0..*"이 지원된다. "0..1"은 그 롤 측의 객체의 0이나 1 인스턴스가 관계에 있을 수 있다는 것을 특정한다. 마찬가지로, "1"은 정확히 그 롤 측면 상의 하나의 객체 인스턴스가 (통상적으로 관계의 출발(from) 측 상의 클래스 상의 연관을 나타내는 칼럼에 대한 널이 아닌 제한요소를 의미하는) 관계에 있어야 한다는 것을 특정한다. 또한, "0..*"은 객체의 0 또는 그 이상의 인스턴스가 관계에 있을 수 있다는 것을 특정한다. 이는 연관된 객체 집합을 포함하는 관계와 동일하다.After that, the relationship of the class can be specified. In UML, using a line with an arrow from one object to another specifies a relationship or association. Each side of the association is called a roll. The role name is equivalent to the attribute name on the class on the "from" side of the association. The roll must be protected controlled (as in the attribute). Each role can specify a multiplicity. "0..1", "1" and "0 .. *" are supported. "0..1" specifies that zero or one instance of an object on that role side may be in a relationship. Similarly, "1" specifies that exactly one object instance on that role side must be in a relationship (which typically means a non-null constraint on the column representing the association on the class on the from side of the relationship). do. Also, "0 .. *" specifies that zero or more instances of the object may be in a relationship. This is equivalent to a relationship involving a set of associated objects.

관계는 또한 양방향성일 수 있다. 이는 연관의 각 측면이 다른 측면에 대해 가시성(visibility)을 갖는다는 것을 의미한다. 전술한 임의의 상태수 순열(permutation)은 양방향성 관계에 존재할 수 있다. 부가하여, 관계의 일측면은 (관계의 출발 측면 상의 개방 다이아몬드(open diamond)를 사용하여 표시된) 집합체(aggregate)로서 보일 수 있다. 집합체 관계는 "출발(from)" 클래스가 "도착(to)" 클래스의 인스턴스를 전유한다는 것을 특정한다. 따라서, "도착" 클래스의 인스턴스를 생성하고 삭제하는 것은 "출발" 클래스의 책임이다.Relationships can also be bidirectional. This means that each side of the association has visibility to the other side. Any of the state number permutations described above may exist in a bidirectional relationship. In addition, one side of the relationship can be seen as an aggregate (indicated using an open diamond on the starting side of the relationship). The aggregate relationship specifies that the "from" class is unique to an instance of the "to" class. Therefore, it is the responsibility of the "start" class to create and delete instances of the "arrival" class.

각각의 개별적인 패키지, 클래스, 속성, 관계, 및 관계 롤에 대해 설정될 수 있는 객체 모델링 프로그램은 부가적인 특성이 정의되도록 한다. "CBOF" 탭(tab)은, 도 3에 도시된 바와 같이, 객체 모델링 프로그램으로써 각각의 객체 타입에 대한 특성에 부가될 수 있다. 이 탭은 각각의 객체 타입에 대해 설정될 수 있는 특정한 특성을 리스트한다. 가시적인 모델에 상응하는 메타 데이터나 머신 판독가능한 데이터를 생성하는 모듈은 임의의 객체의 임의의 특성을 액세스할 수 있다. 따라서, 특성을 부가함으로써, 클래스의 부가적인 특성이 코드의 후속 생성 및 그 클래스에 대한 다른 지원을 커스터마이징하기 위해 설정될 수 있다.Object modeling programs that can be set for each individual package, class, attribute, relationship, and relationship role allow additional properties to be defined. A "CBOF" tab may be added to the properties for each object type with an object modeling program, as shown in FIG. This tab lists the specific properties that can be set for each object type. Modules that generate metadata or machine readable data corresponding to the visible model can access any property of any object. Thus, by adding properties, additional properties of a class can be set to customize subsequent generation of code and other support for that class.

특히, Rational Rose 객체 모델링 프로그램은 다양한 객체에 대해 부가적인 특성 값을 포함하는 확장부(extension)가 부가되도록 한다. (Class, Attribute, Association 등과 같은 특징을 가지고서) 객체 모델이 생성될 때, 특성 세트가 그러한 객체 모델에 대해 특정 및/또는 설정될 수 있다. 특성 세트는 커스터마이재이션(customization) 목적을 위해 확정되고 부가될 수 있다. 도 4는 클래스 특성 특정을 위한 팝-업 창에 부가된 CBOF 탭(401)을 도시한다. 특성 세트 또는 서브세트(402)가 핸들링(manipulation)을 위해 선택될 수 있다. 모델 특성에 대해, 특성 이름(411), 값(412) 및 (디폴트 또는 오버라이드(override)와 같은) 소스(413)가 디스플레이된다. 특성을 핸들링하기 위해 모든 사용자를 제어하라. 디폴트가 아닌 값을 가진 특성이 굵게 표시되거나 강조될 수 있다.In particular, the Rational Rose object modeling program allows extensions to be added that contain additional property values for various objects. When an object model is created (with characteristics such as Class, Attribute, Association, etc.), a set of properties may be specified and / or set for that object model. The property set can be confirmed and added for customization purposes. 4 shows a CBOF tab 401 added to a pop-up window for specifying class characteristics. The property set or subset 402 can be selected for handling. For the model characteristic, the characteristic name 411, the value 412 and the source 413 (such as the default or override) are displayed. Control all users to handle properties. Properties with non-default values may appear in bold or highlighted.

다음의 설명은 각각의 객체 타입에 대해 부가될 수 있는 특성, 및 코드 생성 및 클래스의 다른 지원을 제어하기 위해 사용될 수 있는 하나 이상의 방식을 리스트한다.The following description lists the properties that can be added for each object type, and one or more ways that can be used to control code generation and other support of classes.

1. 프로젝트 특성(project properties): 단일 객체 모델은 "프로젝트(project)"로 간주된다. 따라서, 전체 상응하는 프로젝트 객체에 일반적인(global) 일부 특성이 설정될 수 있다.1. Project properties: A single object model is considered a "project." Thus, some global properties can be set for the entire corresponding project object.

· CopyrightNotice- 복사 통지가 생성된 코드에 출력되도록 오버라이드한다.CopyrightNotice-Overrides the copy notification to be printed in the generated code.

· ProjectName- 생성될 OR 매핑 프로젝트 클래스의 클래스 이름을 오버라이드한다.ProjectName-Overrides the class name of the OR mapping project class to be created.

· ProjectDescription- 생성된 OR 매핑 프로젝트 클래스에 정적 변수(static variable)로서 저장될 설명어를 설정한다.ProjectDescription-Sets the descriptor to be stored as a static variable in the generated OR mapping project class.

2. 클래스 특성(Class Properties): 클래스는 클래스 다이어그램에 따라 생성된 단일 UML 클래스 객체를 포함할 수 있다. 표준 특성 세트를 클릭함으로써, "Cmo"라 불리는 새로운 탭이 다음을 포함하여 특성에 부가될 수 있다:2. Class Properties: A class can contain a single UML class object created according to the class diagram. By clicking on the standard property set, a new tab called "Cmo" can be added to the property, including:

·Generate- 문서화 목적만을 위해 존재할 수 있는 일부 클래스에 대한 코드를 생성하는 것을 방지하기 위해 "No"로 설정한다.Generate-Set to "No" to prevent generating code for some classes that may exist for documentation purposes only.

·GenerateEJB-클래스에 하나 이상의 EJB 인터페이스를 생성하기 위해 "Yes"로 설정한다.Set to "Yes" to generate one or more EJB interfaces in the GenerateEJB-class.

·TableName-클래스에 대한 디폴트 테이블 이름을 오버라이드한다. 디폴트로써, 대문자인 클래스 이름의 첫번째 27 문자가 테이블 이름일 수 있다.TableName-overrides the default table name for the class. By default, the first 27 characters of the uppercase class name can be the table name.

·IsStageable- 이하 자세히 설명되는 바와 같이, 이러한 특정 클래스에 대한 임의의 스테이징 능력을 생성하는 것을 방지하기 위해 "False"로 설정한다.IsStageable-Set to "False" to prevent generating any staging capability for this particular class, as described in detail below.

·MaxNumVersions-특정 클래스 인스턴스를 유지하기 도록 과거 변화들의 수를 설정하기 위해 0 이상으로 설정한다.MaxNumVersions-Set to zero or more to set the number of past changes to maintain a specific class instance.

·ReplaceClass-본 클래스 실행이 교체하는 기존 클래스의 전체 경로 클래스 이름을 특정한다.ReplaceClass-Specifies the full path class name of an existing class that this class execution replaces.

·WrapperPackageName-래퍼(ImplC) 클래스가 생성되는 패키지 이름을 특정한다.WrapperPackageName-Specifies the package name where the wrapper (ImplC) class is created.

·ImplPackageName-지속 실행(persistent implementation) 과 이의 주요 래퍼(Impl 및 ImplW) 클래스가 생성되는 패키지 이름을 특정한다.ImplPackageName-Specifies the package name where persistent implementations and their main wrapper (Impl and ImplW) classes are generated.

·StageablePackageName-지속적인 안정 실행(ImplS)이 생성되는 패키지 이름을 특정한다.StageablePackageName-Specifies the package name for which the sustained stable execution (ImplS) is generated.

·Constraint1 내지 Constraint7-클래스에 대한 테이블-레벨 제한요소를 특정한다. 예를 들어, "UNIQUE(name, owningMember)"Specify table-level constraints for the Constraint1 to Constraint7-classes. For example, "UNIQUE (name, owningMember)"

·IsDisplayed-클래스 이름이 소정의 사용자 인터페이스에서 사용자에게 디스플레이되어야 하는지를 특정한다.IsDisplayed-Specifies whether the class name should be displayed to the user in a given user interface.

·DisplayName-클래스의 디폴트 디스플레이 이름을 오버라이드한다. 디폴트로써 클래스 이름은 임의의 "Cmo" 프레픽스(prefix)를 제거함으로서, 그리고 소문자가 바로 뒤따르는 대문자가 있는 공간을 부가함으로써 생성된다.DisplayName-Overrides the default display name of the class. By default, class names are generated by removing any "Cmo" prefix, and by adding a space with an uppercase letter immediately following it.

·DisplayDescription-본 클래스를 위해 디스플레이되어야 하는 설명을 설정한다.DisplayDescription-Sets the description that should be displayed for this class.

3. 속성 특성(Attribute Properties): 속성이 전술한 기본-타입 속성을 위해 특정 클래스에 부가될 수 있다. 속성은 다음의 특성을 구비한 "Cmo"로 불리는 새로운 탭을 가질 수 있다:3. Attribute Properties: Attributes can be added to a specific class for the aforementioned base-type attributes. An attribute may have a new tab called "Cmo" with the following characteristics:

·ColumnName-본 속성의 클래스에 대한 테이블에 본 속성에 대한 디폴트 칼럼 이름을 오버라이드한다. 디폴트로써, 단어 경계를 분리하기 위해 '_'를 가진 대문자인 속성 이름의 첫번째 30문자가 칼럼 이름일 수 있다.ColumnName-Overrides the default column name for this attribute in the table for this attribute's class. By default, the first 30 characters of the attribute name, which are uppercase with '_' to separate word boundaries, can be column names.

·I18NConstraintName-(속성이 고유하게 설정된 경우) 본 칼럼에 부가되는 _IN 테이블에 대해 디폴트 제한요소 이름을 오버라이드한다.I18NConstraintName (if the attribute is set to unique) Overrides the default constraint name for the _IN table added to this column.

4. 연관 특성(Association Properties): 연관이 2개의 특정 클래스 사이에 부가될 수 있다. 연관은 롤(role)이라 불리는 2개의 측면(side)을 포함할 수 있다. 연관 자체는 다음의 특성을 가진 "CBOF"로 불리는 새로운 탭을 가질 수 있다.4. Association Properties: Associations can be added between two specific classes. The association may comprise two sides called rolls. The association itself may have a new tab called "CBOF" with the following characteristics:

·RelationTableName- 연관이 다대다 또는 양방향 일대다 관계를 나타낸다면, 미들 또는 "관계(relation)" 테이블이 부가될 수 있다. 관계 테이블 이름을 특정하기 위해 이 특성을 설정하라. 디폴트로써, 관계 테이블 이름은 관계의 양 측면의 클래스 이름을 취하고 그 사이에 "TO"를 사용하는 시도를 한다. 만일 이 이름이 너무 크다면(27 문자 이상), 클래스 이름의 문자 해시코드가 뒤따르는 클래스 이름 이니셜(문자 경계의 첫번째 글자)이 사용된다.RelationTableName-If the association represents a many-to-many or bidirectional one-to-many relationship, a middle or "relation" table may be added. Set this property to specify a relation table name. By default, the relationship table name takes the class name of both sides of the relationship and attempts to use "TO" between them. If this name is too large (more than 27 characters), the class name initials (the first letter of the character boundary) followed by the character hash code of the class name are used.

5. 롤 특성(Role Properties): 롤은 연관의 일 측면을 나타낸다. 연관은 롤 측면 A와 롤 측면 B를 구비한다. 따라서, 만일 특성이 롤 객체에 부가된다면, 2개의 부가적인 탭이 연관 특성에 부가될 것이고, 이는 "CBOF A" 및 "CBOF B"이며, 다음 특성을 구비한다.5. Role Properties: A role represents one aspect of an association. The association has a roll side A and a roll side B. Thus, if a property is added to a role object, two additional tabs will be added to the associated property, which are "CBOF A" and "CBOF B", with the following properties.

·ColumnName- 본 연관의 클래스에 대한 테이블에 본 연관에 대한 디폴트 칼럼 이름을 오버라이드한다. 디폴트로써, 문자 경계를 분리하기 위해 '_'를 가지고서 대문자인 롤 이름의 첫번째 30 문자는 칼럼 이름일 수 있다.ColumnName-Overrides the default column name for this association in the table for this association's class. By default, the first 30 characters of a role name capitalized with '_' to separate character boundaries can be column names.

·GenerateForeignKeyConstraint-만일 외래키(foreign key) 제한요소(constraint)가 본 연관 측면에 대해 생성되어서는 안된다면 "False"로 설정한다.GenerateForeignKeyConstraint-Set to "False" if a foreign key constraint should not be generated for this association aspect.

·ForeignKeyConstraintName-본 연관 측면에 대해 디폴트 외래키 제한요소 이름을 오버라이드한다.ForeignKeyConstraintName-overrides the default foreign key constraint name for this association aspect.

후술하는 바와 같이, 수평적인 분할이 객체 그룹을 포함하기 위해 프로젝트 특성(project property)으로서, 또는 클래스 특성으로서 관련된 객체를 포함하도록 할당될 수 있다. 일단 모든 클래스, 속성 및 관계가 모델링된 후, 코드가 생성될 수 있다.As described below, horizontal partitioning may be assigned to include related objects as project properties or as class properties to include groups of objects. Once all classes, attributes, and relationships are modeled, code can be generated.

동작은 또한 특정될 수 있고, 할당된 동자의 특성이 도 5에 도시되어 있다. CBOF 애드-인 탭(501)이 도시되어 있다. EJB 로컬 인터페이스 및/또는 EJB 원격 인터페이스를 생성하는지를 지시하는 적어도 2개의 특성(521)이 액세스가능하다. 특성들 각각에 대해, 이름(511), 값(512) 및 소스(513)가 표시되어 있다. 더 일반적으로, 로컬 인터페이스는 상대적으로 적은 오버헤드를 가진 제 1 프로토콜을 뒤따르는데, 호출(calling)에 적응되고, 호출된 객체가 동일한 웹 컨테이너(121) 또는 동일한 패키지에 상주한다. 원격 인터페이스는 더 큰 오버헤드를 가진 제 2 프로토콜을 뒤따르고, 원격 메소드 호출(remote method invocation)에 적응된다. 원격 메소드 호출 프로토콜은 CORBA, Java RMI Microsoft Transaction Server, Microsoft COM/DCOM, Microsoft.NET 프레임워크 및 Enterprise JavaBeans(EJB)와 같은 제품 및 명세를 위해 제공된다. 로컬 및 원격 인터페이스를 생성하는 선택은 호출 오버헤드(calling overhead) 및/또는 인터페이스 노출을 제어한다.The operation may also be specified and the characteristics of the assigned pupils are shown in FIG. CBOF add-in tab 501 is shown. At least two properties 521 are accessible indicating whether to create an EJB local interface and / or an EJB remote interface. For each of the properties, a name 511, a value 512, and a source 513 are indicated. More generally, the local interface follows a first protocol with relatively little overhead, adapted to calling and the called objects reside in the same web container 121 or the same package. The remote interface follows a second protocol with greater overhead and is adapted to remote method invocation. Remote method invocation protocols are provided for products and specifications such as CORBA, Java RMI, Microsoft Transaction Server, Microsoft COM / DCOM, Microsoft.NET Framework, and Enterprise JavaBeans (EJB). The choice of creating local and remote interfaces controls the calling overhead and / or interface exposure.

도 6은 EJB 래핑(wrapping)에 적응될 수 있는 CBOF 모델을 도시한다. 도 6을 참조하면, 본 발명의 일실시예에 따라, 객체 프레임워크(610)의 블록 다이어그램이 도시되어 있다. 택일적인 실시예에서, 객체 프레임워크(610)는 도 6의 실시예와 함께 논의된 컴포넌트 대신에, 또는 그에 부가하여 다양한 다른 컴포넌트 또는 구성을 용이하게 포함할 수 있다.6 shows a CBOF model that can be adapted to EJB wrapping. Referring to FIG. 6, shown is a block diagram of an object framework 610, in accordance with an embodiment of the present invention. In an alternative embodiment, the object framework 610 may easily include various other components or configurations instead of or in addition to the components discussed with the embodiment of FIG. 6.

COF/CBOF 실행의 유용한 측면은 객체 모델 디자인에 대한 제한이 없는 객체를 모델링하기 위해 다음의 조합을 포함할 수 있다: Rational Rose의 사용. 커스텀 비지니스 로직 메소드(custom business logic method)를 위한 위치 보유자(placeholder) 또는 스토브(stub)를 구비한 코드 생성. Rational Rose 역방향 엔지니어링을 필요치 않고서 객체의 런-타임 생성(create), 판독(read), 업데이트(update) 및 삭제(delete)(CRUD)를 지원하기 위한 코드 생성. 매핑 파라미터의 사용자 선언 이상의, 사용자 상호작용이 거의 또는 전혀 없이 객체 대 래셔널(OR) 매핑. 관계형 데이터베이스에 대해 비지니스 객체를 보존하기 위한 정의(Definition) 및 매핑 정보. 데이터베이스 개요를 생성하기 위해 필요한 정보 및 데이터베이스를 생성 및/또는 이동시키기 위해 상기 정보를 이용하는 툴을 포함하여, 관계형 테이블과 제한요소들의 정의 및 생성. 프레임워크 내의 임의의 비지니스 객체를 용이하게 생성, 판독, 업데이트 및 삭제하기 위한 표준 API 세트를 통해 액세스가능한, 런-타임 생성, 판독, 업데이트 및 삭제(CRUD)를 위한 간단한 메소드. 데이터베이스 내의 원자적 트랜잭션(atomic transaction)을 사용하여 객체 세트를 생성하고 업데이트하고 삭제하기 위한 트랜잭션 패러다임(paradigm)의 사용. 트랜잭션은 데이터베이스가 커미트시간(commit time) 및 낙관적 로킹(optimistic locking)이 사용될 때까지 영향받지 않기 때문에 오래 생존할 수 있다. 변화가 테스트되고, 승인되고 활용될 때까지 객체의 현재 제품 버전에 영향을 미치지 않고서 비지니스 객체로의 변화를 지원하는 데이터 스테이징(data staging). 임의 객체의 기본 속성 변화의 감사 추적(audit trail)을 포함하는, 데이터 변화 히스토리 지원. 비지니스 객체의 번역가능한 문자열 속성의 검색 및 투명 저장을 위해 사용될 수 있는 데이터베이스 개요를 생성하기 위한 코드 및 정보의 생성. 데이터베이스 개요에 영향을 미치지 않고서 실시간에서 동적으로 임의의 객체에 새로운 속성을 부가하기 위한 지원. 객체의 생성, 업데이트 또는 삭제시에 생성되는 이벤트를 가지도록 구성될 비지니스 객체에 대한 옵션을 포함하는, 객체 변화 통지 지원. 이러한 이벤트는 이벤트 통지 서비스에 의해 관리될 수 있고 데이터베이스에 보존될 수 있다. 또한, 비지니스 객체 자체는 메모리에 첫번째로 만들어진 후(init()), 데이터베이스에 삽입된 후(postInser()), 업데이트를 위해 트랜잭션에 부가된 후(postAddForUpdate()), 데이터베이스로의 트랜잭션에서 업데이트되기 전(preCommit()), 데이터베이스로부터 로딩/리프레시된 후(postRefresh()), 마지막으로 데이터베이스로부터 삭제되기 전(preDelete())에, 소정 액션을 수행하도록 메소드를 실행할 수 있다.Useful aspects of COF / CBOF implementation can include the following combinations for modeling objects that have no restrictions on object model design: Use of Rational Rose. Code generation with placeholders or stubs for custom business logic methods. Code generation to support run-time create, read, update, and delete (CRUD) of objects without the need for Rational Rose reverse engineering. Object to relational (OR) mapping with little or no user interaction, beyond the user declaration of a mapping parameter. Definition and mapping information to preserve business objects for a relational database. Definition and creation of relational tables and constraints, including information needed to generate a database overview and tools that use the information to create and / or move databases. Simple method for run-time creation, read, update, and delete (CRUD), accessible through a standard set of APIs for easily creating, reading, updating, and deleting any business object in the framework. Use of a transaction paradigm to create, update and delete a set of objects using atomic transactions in the database. Transactions can survive long because the database is not affected until commit time and optimistic locking are used. Data staging to support changes to business objects without affecting the current product version of the object until the change is tested, approved and utilized. Data change history support, including an audit trail of changes in the underlying attributes of arbitrary objects. Generation of code and information to generate a database overview that can be used for retrieval and transparent storage of translatable string attributes of business objects. Support for adding new attributes to arbitrary objects dynamically in real time without affecting the database overview. Object change notification support comprising options for a business object to be configured to have events generated upon creation, update or deletion of the object. These events can be managed by the event notification service and kept in the database. Also, the business object itself is first updated in memory (init ()), inserted into a database (postInser ()), added to a transaction for update (postAddForUpdate ()), and then updated in a transaction to the database. The method may be executed to perform a predetermined action before (preCommit ()), after being loaded / refreshed from the database (postRefresh ()), and finally before being deleted from the database (preDelete ()).

도 6의 실시예에서, 5개의 베이스 클래스 그룹이 수평 축(614) 위로 도시되어 있고, 바람직하게는 기본 라이브 객체 클래스, CmoBaseImpl(630), 기본 인터페이스 클래스, CmoBase(634), 기본 스테이징 클래스, CmoBaseImplS(638), 기본 범용화 클래스, CmoBaseI18N(642), 및 기본 래퍼 클래스, CmobaseImplW(644)를 포함할 수 있다. 이러한 베이스 클래스들의 기능 및 배치는 참조로서 편입된 애플리케이션에서 개략적으로 논의된다.In the embodiment of FIG. 6, five base class groups are shown above the horizontal axis 614, preferably the base live object class, CmoBaseImpl 630, base interface class, CmoBase 634, base staging class, CmoBaseImplS 638, the base generalization class, CmoBaseI18N 642, and the base wrapper class, CmobaseImplW 644. The functionality and layout of these base classes are discussed briefly in the application incorporated by reference.

도 6의 실시예에서, 루트 클래스(root class) 그룹이 수평 축(614)과 수평축(618) 사이에 도시되어 있고, 바람직하게는 이전의 상응하는 베이스 클래스로부터 유래하는 각각의 루트 클래스를 포함할 수 있다. 도 6의 실시예에서, 루트 클래스는 바람직하게는 루트 라이브 객체 클래스 AbstractXImpl(646), 루트 인터페이스 클래스 AbstractX(650), 루트 스테이징 클래스 AbstractXImplS(654), 루트 범용화 클래스 AbstractXImplC(666)을 포함할 수 있다.In the embodiment of FIG. 6, a root class group is shown between the horizontal axis 614 and the horizontal axis 618, and preferably includes each root class derived from the previous corresponding base class. Can be. In the embodiment of FIG. 6, the root class may preferably include a root live object class AbstractXImpl 646, a root interface class AbstractX 650, a root staging class AbstractXImplS 654, and a root generalization class AbstractXImplC 666. .

도 6의 실시예에서, 서브-클래스 그룹은 수평 축(618) 아래에 도시되어 있고, 바람직하게는 선행 상응하는 베이스 클래스 및 루트 클래스(root class)로부터 유래한 각각의 서브-클래스를 포함할 수 있다. 도 6의 실시예에서, 서브-클래스는 바람직하게는 서브-라이브 객체 클래스, XImpl(670), 서브-인터페이스 클래스, X(674), 서브-스테이징 클래스, XImplS(678), 서브-범용화 클래스, XI18N(682), 서브-래퍼 클래스, XImplW(686) 및 서브-커스텀 클래스(sub-custom class) XImplC(690)를 포함할 수 있다.In the embodiment of FIG. 6, the sub-class group is shown below the horizontal axis 618 and may preferably include respective sub-classes derived from the preceding corresponding base class and root class. have. In the embodiment of FIG. 6, the sub-class is preferably a sub-live object class, XImpl 670, sub-interface class, X 674, sub-staging class, XImplS 678, sub-universalization class, XI18N 682, sub-wrapper class, XImplW 686, and sub-custom class XImplC 690.

부가하여, 도 6의 다이어그램에서, 위에 언급된 인터페이스 클래스 시리즈가 수직축(622)의 왼쪽에 도시되어 있다. 래퍼 클래스 시리즈가 수직 축(622)과 수직축(626) 사이에 도시되어 있다. 부가하여, 지속적으로 데이터베이스(120)에 저장된 클래스 그룹이 수직 축(626)의 오른쪽에 도시되어 있다. 인터페이스는 시스템 사용자에게 노출된 일반적인 자바 인터페이스이다. 이러한 인터페이스는 비지니스 로직 메소드의 획득(get), 설정(set), 부가(add), 제거(remove) 및 커스터마이징(custom)을 정의한다. 인터페이스는 또한 참조를 위해 API의 javadoc를 포함한다. 이러한 인터페이스는 손으로 수정되어서는 안되는데, 왜냐하면 손으로 수행된 수정은 후속의 코드 재생성 후에 남아있지 않을 것이기 때문이다.In addition, in the diagram of FIG. 6, the above-mentioned interface class series is shown on the left of the vertical axis 622. A wrapper class series is shown between the vertical axis 622 and the vertical axis 626. In addition, the class groups that are constantly stored in the database 120 are shown to the right of the vertical axis 626. The interface is a generic Java interface exposed to system users. These interfaces define the get, set, add, remove, and custom of business logic methods. The interface also includes the javadoc of the API for reference. This interface should not be modified by hand because modifications made by hand will not remain after subsequent code regeneration.

일 실시예에서, 이러한 클래스는 소프트웨어 컴포넌트로서 TopLink와 상호작용한다. 다음의 설명 중 일부가 TopLink로 특정되었지만, 당업자는 동일한 접근방법이 다른 데이터베이스 매핑 및 관리 모듈에도 적용될 수 있다는 것을 인식할 것이다. 지속성 클래스(persistent class)는 보존된 속성을 포함하는 클래스 및 관계형 데이터베이스로의 매핑을 포함하는 클래스로서 TopLink로 기술된 실행 클래스(implementation class)이다. 이러한 지속성 클래스 타입은 Impl, ImplS 및 I18N을 포함한다. Impl 클래스는 데이터베이스 내 객체의 정확한 라이브 버전을 나타낸다. Impls 클래스는 데이터베이스 내의 라이브 객체(live object)의 섀도우(shadow) 또는 스테이징 버전을 나타낸다. 인터페이스 클래스에 선언된 모든 get/set/add/remove 메소드는 이러한 클래스에서 실행된다. 모든 비지니스 로직 API는 UnsupportedOperationException을 내보낸다. I18N 클래스는 번역가능한 문자열 속성 및 번역 장소(locale)를 포함한다. Impl 및 ImplS 클래스는 I18N 클래스에 대해 일대다 관계를 갖는다. 번역가능한 문자열 속성의 get/set 메소드가 호출될 때마다, I18N 클래스의 적당한 인스턴스는 스레드(thread) 상에 설정된 현재의 장소에 기초하여 액세스된다. 이러한 클래스는 생성되고 손으로 수정되어서는 안된다.In one embodiment, this class interacts with TopLink as a software component. Although some of the following descriptions are specific to TopLink, those skilled in the art will recognize that the same approach can be applied to other database mapping and management modules. A persistent class is a class that contains preserved attributes and a class that contains mappings to a relational database. It is an implementation class described as TopLink. Such persistence class types include Impl, ImplS and I18N. The Impl class represents the exact live version of an object in the database. The Impls class represents a shadow or staging version of a live object in the database. All get / set / add / remove methods declared in an interface class are executed in that class. All business logic APIs throw an UnsupportedOperationException. The I18N class contains translatable string attributes and translation locales. The Impl and ImplS classes have a one-to-many relationship to the I18N class. Each time the get / set method of a translatable string attribute is called, the appropriate instance of the I18N class is accessed based on the current location set on the thread. These classes are created and should not be modified by hand.

래퍼 클래스(wrapper class)는 트랜잭션 지원, 스테이징, 변화 히스토리, 및 비지니스 로직 기능 커스터마이징을 실행한다. 2가지 타입의 래퍼 클래스:ImplW 및 ImplC가 있다. ImplW 클래스는 인터페이스 클래스로부터 get/set/add/remove 메소드 만을 실행하는 추상 클래스(abstract class)이다. 이러한 메소드는 Impl 객체,Impls 객체, 또는 적당한 TOPLink 트랜잭션 클론(clone)에 대해 값을 검색하거나 설정하는지를 적절히 체크한다. set/add/remove 메소드는 인스턴스가 트랜잭션에서 업데이트하기 위해 부가되지 않았다면 CeNotInTransactionException을 내놓는다. get 메소드는 트랜잭션 외부의 복제된 래퍼를 액세스하기 위한 시도가 행해진다면 "Invalid wrapper accessed"라는 메시지와 함께 CeRuntimeException을 내놓을 것이다. ImplC 클래스는 임의의 지속성 객체가 액세스되거나 생성될 때 실증되는 구체적인 클래스(concrete class)이다. 이 클래스는 상응하는 ImplW 클래스로부터 유래한다. ImplC 클래스는 임의의 커스텀 비지니스 로직 메소드의 실행을 포함하도록 손으로 수정될 수 있다. ImplW 클래스는 각각 재생으로 완전히 생성된다. Implc 클래스가 통상적으로 생성되고, 그 후에 유지될 수 있는 개별적인 파일로서 소스 제어를 위해 체크된다. ImplW 및 ImplC 클래스의 상속 구조(inheritance structure)를 유의하라. ImplW 클래스는 그의 슈퍼클래스(superclass)의 ImplC에서 유래한다. ImplC는 상응하는 ImplW 클래스에서 유래한다. 또한, ImplW가 인터페이스 클래스에서 선언된 비지니스 로직 API를 실행하지 않는다는 것을 유의하라. 이는 Implc 클래스에 의해 실행된다. 클래스는 모델 내에서 추상적으로 선언될 수 있고, 이는 Implc 클래스를 추상적으로 만들 것이다.The wrapper class performs transaction support, staging, change history, and business logic function customization. There are two types of wrapper classes: ImplW and ImplC. The ImplW class is an abstract class that executes only the get / set / add / remove methods from an interface class. These methods check appropriately whether to retrieve or set a value for an Impl object, an Impls object, or a suitable TOPLink transaction clone. The set / add / remove method throws a CeNotInTransactionException if the instance was not added for updating in a transaction. The get method will throw a CeRuntimeException with the message "Invalid wrapper accessed" if an attempt is made to access a replicated wrapper outside the transaction. The ImplC class is a concrete class that is demonstrated when any persistent object is accessed or created. This class is derived from the corresponding ImplW class. The ImplC class can be modified by hand to include the execution of any custom business logic method. The ImplW class is completely created for each playback. The Implc class is typically created and then checked for source control as a separate file that can be maintained. Note the inheritance structure of the ImplW and ImplC classes. The ImplW class comes from ImplC of its superclass. ImplC is from the corresponding ImplW class. Also note that ImplW does not execute the business logic API declared in the interface class. This is done by the Implc class. The class can be declared abstract in the model, which will make the Implc class abstract.

또한, 지속성 클래스(persistent class) 및 연관된 TOPLink 트랜잭션 클론은 자신의 상응하는 래퍼로의 참조를 갖는다는 것을 유의하라. TOPLink 캐시의 지속성 인스턴스는 각자의 래퍼의 판독-전용 버전을 지시한다. 클론이 커미트(commit)되고 TOPLink의 캐시 인스턴스에 흡수될 때, 상응하는 래퍼는 무효로 된다. 클론의 래퍼는 자신의 상응하는 판독-전용 래퍼에 대한 참조를 가지고, 이는 래퍼에 대한 getReadOnlyObject() 메소드를 호출함으로써 얻어질 수 있다.Also note that the persistent class and associated TOPLink transaction clone have a reference to its corresponding wrapper. The persistence instance of the TOPLink cache points to a read-only version of its wrapper. When the clone is committed and absorbed into the cache instance of TOPLink, the corresponding wrapper is invalidated. The clone's wrapper has a reference to its corresponding read-only wrapper, which can be obtained by calling the getReadOnlyObject () method on the wrapper.

베이스 클래스 계층(base class hierarchy)은 이러한 파일 세트를 기술하기 위해 필요하다. 도 6은 본 베이스 클래스 계층의 일 실시예의 도면을 도시한다. 다이어그램의 상부에서, 5개의 베이스 클래스:CmobaseImpl(630), CmoBaseImplW(644), CmoBaseImplS(638), 및 CmoBaseI18N(642)이 있다.A base class hierarchy is needed to describe this set of files. 6 shows a diagram of one embodiment of the present base class hierarchy. At the top of the diagram, there are five base classes: CmobaseImpl 630, CmoBaseImplW 644, CmoBaseImplS 638, and CmoBaseI18N 642.

CmoBase(634)는 모든 객체(332)가 유래하고 실행되는 인터페이스 클래스이다. 이 인터페이스는 모든 기본 속성의 선언 및 모든 객체(332)가 실행해야 하는 동작을 포함한다. 이 객체 프레임워크(610)의 다양한 특징은 모든 객체를 따라 적용할 수 있도록 하기 위해서 이 인터페이스에 부가되는 속성 및 메소드를 포함한다. CmoBase(634)는 또한 본 프레임워크에 제공된 메커니즘에 의해 생성되는 객체(332)를 표시하기 위한 방법으로서 역할을 한다. 택일적인 Cmsbase 클래스(702)는 도 7에서 도시된 바와 같이, 지속성을 요구하지 않는 임시 객체(transient object)를 위해 제공될 수 있다.CmoBase 634 is an interface class from which all objects 332 are derived and executed. This interface includes the declaration of all basic attributes and the actions that all objects 332 should perform. Various features of this object framework 610 include attributes and methods that are added to this interface in order to make them applicable to all objects. CmoBase 634 also serves as a method for representing the objects 332 created by the mechanisms provided in this framework. An alternative Cmsbase class 702 may be provided for transient objects that do not require persistence, as shown in FIG.

CmoBaseImplW(644)는 다른 실행 객체(CmoBaseImpl, cmoBaseImplS, 및 cmoBaseI18N)에 대한 액세스를 래핑하기 위한 실행을 포함하는 래퍼 객체를 나타낸다. CmoBaseImplW 클래스는 CmoBase 인터페이스를 실행한다. CmoBaseImplW 클래스의 목적은 (라이브 객체에 대해) Impl의 인스턴스 또는 (스테이징된 객체에 대해) ImplS가 동작을 수행하도록 호출되어야 하는지를 결정하는 것이다. 본 클래스는 4개의 중요한 관계를 갖는다. liveObject는 CmoBaseImpl 객체의 인스턴스를 유지하는데, 상기 객체는 데이터베이스 내의 주요한 라이브 비지니스 객체를 나타낸다. shadowObject는 CmobaseImpls 객체의 인스턴스를 유지하는데, 상기 객체는 데이터베이스 내의 라이브 비지니스 객체의 새도우 또는 스테이징된 버전을 나타낸다. clonedObject는 객체가 생성 또는 업데이트를 위한 트랜잭션에 넣어졌을 때 libeObject 또는 shadowObject의 복제 카피를 유지한다. liveClonedObject는 (객체가 트랜잭션 시에 업데이트 또는 생성하기 위해 스테이징될 때 발생하는) shadowObject의 복제 카피를 포함할 때 liveObject의 복제 카피를 유지한다.CmoBaseImplW 644 represents a wrapper object that includes an execution to wrap access to other execution objects (CmoBaseImpl, cmoBaseImplS, and cmoBaseI18N). The CmoBaseImplW class implements the CmoBase interface. The purpose of the CmoBaseImplW class is to determine whether an instance of Impl (for live objects) or ImplS (for staged objects) should be called to perform an action. This class has four important relationships. liveObject maintains an instance of a CmoBaseImpl object, which represents the primary live business object in the database. The shadowObject maintains an instance of a CmobaseImpls object, which represents a shadowed or staged version of the live business object in the database. clonedObject maintains a duplicate copy of libeObject or shadowObject when the object is put into a transaction for creation or update. liveClonedObject maintains a duplicate copy of liveObject when it contains a duplicate copy of the shadowObject (which occurs when the object is staged to update or create in a transaction).

liveObject는 판독-전용 래퍼로 주어진다. 래퍼는 트랜잭션에 판독-전용 래퍼를 부가함으로써 기록-가능하게 되는데, 상기 트랜잭션은 liveObject를 액세스하는 다른 사용자에게 영향을 미치지 않고서 수정될 수 있는 liveObject의 클론을 포함하는 새로운 래퍼를 반환한다. 트랜잭션이 커미트될 때, 클론은 데이터베이스에 업데이트를 송신하도록, 그리고 liveObject에 변화를 병합하도록 사용된다. 기록-가능한 래퍼가 커미트되면, 상기 래퍼는 더이상 유용하지 않고 판독-전용 래퍼가 액세스되어야 한다(이는 기록-가능한 래퍼가 메모리를 절약하도록 수집된 가비지(garbage)가 되도록 한다). 본 클래스의 인스턴스는 임의의 액션(생성, 판독, 관계 액세스 및 업데이트)이 취해질 때 사용자에게 반환되는 것이다.liveObject is given as a read-only wrapper. The wrapper is writeable by adding a read-only wrapper to the transaction, which returns a new wrapper containing a clone of liveObject that can be modified without affecting other users accessing liveObject. When a transaction is committed, the clone is used to send updates to the database and to merge changes into liveObject. Once a writeable wrapper is committed, the wrapper is no longer useful and a read-only wrapper must be accessed (this causes the writeable wrapper to be garbage collected to save memory). An instance of this class is what is returned to the user when any action (create, read, relationship access, and update) is taken.

CmoBaseImpl(630)은 데이터베이스의 라이브 지속성 객체를 나타낸다. 본 클래스는 객체 대 관계 매핑을 제어하는 특성을 포함한다. 이와 같은 정보는 테이블, 칼럼 및 제한요소를 포함하는 개요(schema)를 생성하도록 한다. 본 클래스는 관계를 나타내는 속성(객체 타입을 가진 단일 관계 또는 집합 타입을 사용한 다수 관계)을 포함하는 객체 모델에 정의된 속성을 포함한다. 본 클래스는 또한 CmoBase 인터페이스(634)를 실행한다. 속성과 관계에 대한 게터(getter)와 세터(setter)가 관련 속성 및 관계를 액세스하기 위해 실행된다. (모델서 선언된) 다른 비지니스 로직 메소드는 메소드로의 우발적인 액세스를 방지하기 위해 UnsupportedOperationException)을 내놓는다. ImplW 클래스만이 본 클래스에 액세스해야 하고, 결코 Impl 클래스 상의 임의의 비지니스 로직 메소드를 호출해서는 안된다.CmoBaseImpl 630 represents a live persistent object of the database. This class contains properties that control object-to-relational mapping. This information allows you to create a schema that includes tables, columns, and constraints. This class contains attributes defined in the object model that contain attributes representing a relationship (a single relationship with an object type or multiple relationships using a set type). This class also implements the CmoBase interface 634. Getters and setters for attributes and relationships are executed to access related attributes and relationships. Other business logic methods (declared in the model) throw an UnsupportedOperationException to prevent accidental access to the method. Only the ImplW class should access this class and never call any business logic methods on the Impl class.

CmoBaseImplS(638)는 본질적으로 CmoBaseImpl 클래스의 정확한 카피이지만, Impl 인스턴스의 새도우 및 "스테이징된" 값을 나타낸다. 이러한 스테이징된 값이 별개의 테이블에 저장되고 별개의 인스턴스이며, 이에 따라 별개의 클래스가 스테이징된 것을 나타내기 위해 제공되는데, 이는 별개의 테이블에 매핑된다. CmoBaseImpls(638)의 배치는 참조로서 편입된 출원 명세서에서 추가로 논의된다.CmoBaseImplS 638 is essentially an exact copy of the CmoBaseImpl class, but represents a shadow and "staged" value of the Impl instance. These staged values are stored in separate tables and are separate instances, and are therefore provided to indicate that the separate classes are staged, which maps to separate tables. The placement of CmoBaseImpls 638 is further discussed in the application specification incorporated by reference.

CmoBaseI18N(642)는 범용화 지원을 위해 사용된 베이스 클래스이다. 본 클래스는 번역가능한 문자열 값을 보유하는 모든 테이블에 대해 요구되는 기본 속성을 보유한다. 객체의 Impl 클래스가 생성될 때, cmoBaseI18N(642)로부터 유래한 내부 클래스(innter class)는 또한 클래스가 번역가능한 문자열 속성을 가진 경우에 생성될 것이다. CmobaseI18N(642)의 인스턴스는 Impl 클래스의 번역가능한 문자열 속성의 언어 번역에 상응한다. 부가적인 인스턴스가 번역의 스테이징 값을 위해 제공된다. 번역 리스트가 각각의 클래스 계층 레벨에서 유지된다. 이는 CmoBaseI18N 클래스 및 테이블의 계층을 요구하지 않고서 임의의 시간에 번역가능한 문자열 속성을 부가/제거하도록 한다. 이러한 특징은 참조로서 편입된 출원 명세서에서 더 상세히 기술되어 있다.CmoBaseI18N 642 is a base class used for generalization support. This class holds the basic attributes required for all tables that contain translatable string values. When the Impl class of an object is created, an inner class derived from cmoBaseI18N 642 will also be created if the class has a translatable string attribute. An instance of CmobaseI18N 642 corresponds to the language translation of the translatable string attribute of the Impl class. An additional instance is provided for the staging value of the translation. Translation lists are maintained at each class hierarchy level. This allows you to add / remove translatable string attributes at any time without requiring a hierarchy of CmoBaseI18N classes and tables. Such features are described in further detail in the application specification incorporated by reference.

객체가 생성될 때(예를 들어 AbstranctX(646)), 생성된 클래스는 적당한 베이스 클래스를 확장시킨다. 도 6에 도시된 바와 같이, AbstractX(646)는 CmoBase 기본 인터페이스로부터 유래하는 인터페이스이다. AbstractXImplW(662)는 CmobaseImplW(644)로부터 유래한다. AbstractX(646)은 CmoBaseImpl(630)으로부터 유래한다. AbstractXImplS(654)는 CmoBaseImplS(638)로부터 유래한다. AbstractXImplS(654)는 CmoBaseImplS(638)로부터 유래한다. 나아가, AbstractX의 번역가능한 문자열 속성이 있기 때문에, AbstractXI18N(658)은 CmobaseI18N(642)로부터 유래한다.When an object is created (eg AbstranctX (646)), the created class extends the appropriate base class. As shown in FIG. 6, AbstractX 646 is an interface derived from the CmoBase base interface. AbstractXImplW 662 is derived from CmobaseImplW 644. AbstractX 646 is derived from CmoBaseImpl 630. AbstractXImplS 654 is derived from CmoBaseImplS 638. AbstractXImplS 654 is derived from CmoBaseImplS 638. Furthermore, because of the translatable string attributes of AbstractX, AbstractXI18N 658 is derived from CmobaseI18N 642.

또한, AbstractXImplW(662)로부터 유래하는 AbstractXImplc(666)이라 불리는 다른 커스텀 클래스(custom class)가 있다. Implc 클래스는 모델 내의 인터페이스에 부가되는 비지니스 로직 메소드에 대한 사용자-특정 비지니스 로직 코드를 포함한다. Implc 클래스는 코드 생성된 다른 인터페이스나 실행을 전혀 포함하지 않는다. 이는 Implc로 하여금 단 한번만 생성되도록 하고, 그 후에 비지니스 로직 코드가 부가되거나 변화되거나 제거될 필요가 있을 때만 업데이트되도록 한다. 다른 클래스 타입(Interface, ImplW, Impl, Impls, I18N)은 모델에서 변화가 있을 때마다 객체 모델(320) 으로부터 항상 재생성된다. 이는 모델에 역으로 엔지니어링될 필요가 있는 손에 의한 임의의 커스텀 변화를 요구하는 생성된 코드 문제를 해결하지만, 시간에 따라 변화될 수 있는 비지니스 로직 실행이 기록되도록 한다. 생성된 코드는 Implc에 기록될 임의의 코드를 요구하지 않고서 사용가능하다. ImplC는 실행될 사용자-특정 비지니스 로직 메소드를 위한 장소를 제공한다.There is also another custom class called AbstractXImplc 666, which originates from AbstractXImplW 662. The Implc class contains user-specific business logic code for business logic methods that are added to interfaces in the model. The Implc class does not contain any other interfaces or executions that are code generated. This allows Implc to be created only once and then updated only when business logic code needs to be added, changed or removed. Other class types (Interface, ImplW, Impl, Impls, I18N) are always recreated from object model 320 whenever there is a change in the model. This solves the problem of generated code that requires any custom changes by hand that need to be engineered back into the model, but allows business logic execution to be recorded that can change over time. The generated code can be used without requiring any code to be written to Implc. ImplC provides a place for user-specific business logic methods to be executed.

부가하여, 도 6은 X라 불리는 다른 클래스가 AbstractX 클래스를 추가로 확장시킬 수 있는 방법을 도시한다. X의 각각의 생성된 클래스 타입은 AbstractX의 적당한 클래스 타입으로부터 유래한다. 그러나 XImplW(686)은 AbstractXImplC9666)으로부터 유래하고, 이에 의해 xImplc(686)의 실행은 마치 직접적인 서브클래스인 것처럼 AbstractX 클래스의 임의의 비지니스 로직 메소드를 오버라이드할 수 있다. 본 발명의 일 특징은 클래스들 사이의 관계를 관리하기 위해 코드와 상속 구조의 복잡성을 자동으로 처리하는 것이다. 직관적으로, 사용자는 ImplC에서 시각적으로 모델링된 객체와 비지니스 로직 코드 실행만을 고려하면 된다.In addition, FIG. 6 illustrates how another class, called X, can further extend the AbstractX class. Each generated class type of X is derived from the appropriate class type of AbstractX. However, XImplW 686 is derived from AbstractXImplC9666, whereby the execution of xImplc 686 may override any business logic method of the AbstractX class as if it were a direct subclass. One feature of the present invention is the automatic handling of the complexity of code and inheritance structures to manage relationships between classes. Intuitively, users only need to consider visually modeled objects and business logic code execution in ImplC.

도 7은 EJB와 J2EE를 지원하도록 적응된 바와 같이, 클래스들 CmoBase(701), CmsBase(702) 및 CmoAttribute(703)의 특징을 도시하는 클래스 다이어그램이다. 지속성 사용자 변경가능한 객체는 CmoBase(701)로부터 유래한다. 그러나 다수의 속성은 임시적일 수 있고, 사용자가 변경가능하지 않으며, 이에 따라 그들의 정적 값들은 메모리에 생성된 객체의 작업중인 카피에 할당될 수 있다. 이러한 임시 속성들은 CmsBase(702)로부터 유래할 수 있는데, 이는 임시성(transience)에 적응된 특성 및 속성을 갖는다. 속성 레벨에서 지속성 사용자 변경가능한 객체의 예는 이름, 설명, 최대 버전 수, 액션 통지(notifyAction)를 포함한다. CmoBase 클래스(701)는 자동으로 생성된 주요 키 "id"를 포함한다. ID는 DB 내의 행 및 타입에서 고유하다. 따라서, 완전하고 전체적으로 고유한 식별자는 또한 후술하는 수평 분할에 유용한데, 왜냐하면 CmoBase(701) 내의 ID가 데이터베이스 내와 타입에서 고유하다는 것을 보장하기 때문이다. CmoBase(701)의 부가적인 속성은 도시된 상태, 버져닝(versioning) 및 스테이징 속성을 포함한다. 아래의 도 10에 도시된 바와 같이, 클래스들 CmoBaseLocal 및 CmoBaseRemote는 CmoBase로부터 유래하고 그에 상응하도록 만들어져 있다. CmoAttribute(703)는 참조로서 편입된 출원 명세서에서 추가로 기술된 바와 같이 객체에 대한 커스텀 속성을 지원한다.7 is a class diagram illustrating the characteristics of classes CmoBase 701, CmsBase 702, and CmoAttribute 703, as adapted to support EJB and J2EE. The persistent user mutable object is derived from CmoBase 701. However, many attributes may be temporary and not changeable by the user, so their static values may be assigned to a working copy of an object created in memory. These temporary properties may originate from CmsBase 702, which has properties and properties that are adapted to transience. Examples of persistent user modifiable objects at the attribute level include name, description, maximum number of versions, and action notifications (notifyAction). The CmoBase class 701 contains the automatically generated primary key "id". IDs are unique across rows and types in the DB. Thus, a complete and globally unique identifier is also useful for the horizontal partitioning described below, because it ensures that the ID in CmoBase 701 is unique in the database and in the type. Additional attributes of the CmoBase 701 include the shown state, versioning, and staging attributes. As shown in FIG. 10 below, the classes CmoBaseLocal and CmoBaseRemote originate from and are made correspondingly. CmoAttribute 703 supports custom attributes on objects as further described in the application specification incorporated by reference.

EJB와 J2EE에 대한 COF 툴과 모델의 적응은 도 8 내지 도 10에 도시되어 있다. 바람직하게는, 시스템 내의 비지니스 객체 인터페이스는 도 10의 javax.ejb.EJBLocalObject(1013)으로부터 확장해야 한다. 이러한 확장 패턴은 원격 액세스와 연관된 오버헤드를 초래하지 않고서 동일한 자바 가상 머신(JVM)에서 동작하는 EJB 객체 상의 메소드 호출을 호출하기 위한 액세스를 제공한다. 원격으로 액세스될 필요가 있는 각각의 비지니스 객체는 로컬 인터페이스와 동일한 이름을 가지고 "ejb" 패키지 하에 위치되는 별개의 인터페이스를 요구한다. 원격 인터페이스는 javax.ejb.EJObject(1012)를 확장하고, 원격으로 액세스될 수 있는 메소드만을 포함한다. 로컬 및 원격 인터페이스에 부가하여, 도 9에 도시된 바와 같이, ejb 명세는 ejb 객체를 생성하고 탐색하기 위해 로컬 홈 인터페이스(912)를 요구한다. 각각의 비지니스 객체는 javax.ejb.EJBLocalHome(911)을 확장하는 로컬 홈 인터페이스(912) 및 javax.ejb.EJBHome(901)을 확장하는 원격 홈 인터페이스(902)를 구비한다.The adaptation of COF tools and models to EJBs and J2EE is illustrated in Figures 8-10. Preferably, the business object interface in the system should extend from javax.ejb.EJBLocalObject 1013 in FIG. This extension pattern provides access to invoke method calls on EJB objects running on the same Java virtual machine (JVM) without incurring the overhead associated with remote access. Each business object that needs to be accessed remotely requires a separate interface that is located under the "ejb" package with the same name as the local interface. The remote interface extends javax.ejb.EJObject 1012 and includes only methods that can be accessed remotely. In addition to the local and remote interfaces, as shown in FIG. 9, the ejb specification requires a local home interface 912 to create and search for ejb objects. Each business object has a local home interface 912 that extends javax.ejb.EJBLocalHome 911 and a remote home interface 902 that extends javax.ejb.EJBHome 901.

코드 실행 비지니스 로직을 포함하는 빈 클래스(bean class)는 통상적으로 인터페이스 이름 끝에 "ImplC"를 붙임으로써 이름지어진다. 예를 들어, 도 8에서, PersonImplC(842) 및 EmployeeImplC(862)는 사람과 피고용인 인터페이스(821, 841)에 상응하는 비지니스 로직을 포함하도록 의도된 객체이다. "ImplC" 내의 모든 비지니스 메소드가 원격으로 액세스가능한 것은 아니다. 원격 메소드는 EJB에 합치할 필요가 있는 바와 같이, 직렬화(serializable)로 설정된 반환 값과 로컬 메소드의 파라미터를 구비하여 실행될 수 있다. 이를 가능하게 하기 위해서, 프레임워크는 부가적인 원격 비지니스 메소드가 실행될 수 있는 접미사 "Bean"(예를 들어 PersonBean)을 구비한 클래스를 생성한다. 비지니스 로직 실행을 제공하는 것에 부가하여, 다수의 EJB-특정 콜백(callback)이 실행된다. 이러한 콜백은 cmoBaseImplW 클래스(도 6의 644) 내의 javbax.ejb.EntityBean 인터페이스(1011)를 실행함으로써 지속성 객체를 위해 제공된다. EJB 기능을 제공하기 위해 실행된 콜백은 ejbCreate(), ejbPostCreate(), ejbFindByPrimaryKey(PrimaryKey 키), ejbLoad(), ejbStore(), ejbRemove(), ejbActivate(), ejbPassivate(), setEntitycontext(Entitycontext ctx) 및 unsetEntitycontext()를 포함한다. 이러한 콜백들 중에, ejbCreate() 메소드는 클라이언트가 홈 인터페이스에서 create() 메소드를 호출할 때 호출된다. ejb 컨테이너는 bean(Implc 클래스)의 인스턴스를 생성하고 상기 빈 상의 ejbCreate() 메소드를 호출한다. 실행은: CmoTransaction을 획득하거나 생성하기 위해; 트랜잭션에 상기 빈을 부가하기 위해; 래퍼 객체를 초기화하기 위해; 객체 ID를 사전 할당하기 위해; 그리고 PrimaryKey 객체를 반환하기 위해 메소드를 제공해야 한다. 이 메소드는 객체를 초기화하기 위해 필요한 널이 아닌 데이터베이스 제한요소 파라미터에서 통과할 많은 경우에서 오버로드될 필요가 있다.Bean classes containing code execution business logic are typically named by prefixing the interface name with "ImplC". For example, in FIG. 8, PersonImplC 842 and EmployeeImplC 862 are objects intended to contain business logic corresponding to human and employee interfaces 821, 841. Not all business methods in "ImplC" are remotely accessible. The remote method can be executed with the return value set to serializable and the parameters of the local method, as necessary to conform to the EJB. To enable this, the framework creates a class with the suffix "Bean" (eg, PersonBean) on which additional remote business methods can be executed. In addition to providing business logic execution, a number of EJB-specific callbacks are executed. This callback is provided for persistent objects by executing the javbax.ejb.EntityBean interface 1011 in the cmoBaseImplW class (644 in FIG. 6). Callbacks executed to provide EJB functionality are ejbCreate (), ejbPostCreate (), ejbFindByPrimaryKey (PrimaryKey key), ejbLoad (), ejbStore (), ejbRemove (), ejbActivate (), ejbPassivate (), setEntitycontext (Entitycontext ctx), and Contains unsetEntitycontext (). Among these callbacks, the ejbCreate () method is called when the client calls the create () method on the home interface. The ejb container creates an instance of a bean (Implc class) and calls the ejbCreate () method on that bean. The execution is: to obtain or create a CmoTransaction; To add the bean to a transaction; To initialize the wrapper object; To pre-assign object IDs; You must provide a method to return the PrimaryKey object. This method needs to be overloaded in many cases to pass in non-null database constraint parameters needed to initialize the object.

ejbPostCreate() 메소드는 ejbCreate() 메소드가 호출된 직후에 컨테이너에 의해 호출된다. 이 메소드는 ejbCreate()와 동일한 개수의 증분(argument)을 가져야 하고, 부가적인 초기화를 제공하고 수명 동안 요구되는 자원을 할당한다.The ejbPostCreate () method is called by the container immediately after the ejbCreate () method is called. This method must have the same number of increments as ejbCreate (), provide additional initialization, and allocate resources for its lifetime.

ejbFindByPrimaryKey(PrimaryKey 키) 메소드는 클라이언트가 홈 인터페이스 상의 findByPrimaryKey()를 호출할 때 호출된다. 실행은: 어떤 트랜잭션도 필요치 않다는 것을 지시하기 위해; 객체 id에 기초한 데이터베이스 내의 객체를 탐색하기 위해(CmoClientSession.findById() 메소드 사용); 그리고 PrimaryKey 객체를 반환하기 위해 메소드를 제공해야 한다. 이 메소드는 커스텀 쿼리에 대해 오버로드될 필요가 있다.The ejbFindByPrimaryKey (PrimaryKey Key) method is called when the client calls findByPrimaryKey () on the home interface. Execution is: to indicate that no transaction is needed; To search for an object in the database based on the object id (using the CmoClientSession.findById () method); You must provide a method to return the PrimaryKey object. This method needs to be overloaded for custom queries.

ejbLoad() 콜백 메소드는 개략적으로 엔터니 빈의 "판독" 기능에 상응한다. 본 발명의 특징을 실행하는 일실시예에서, 빈은 통상적으로 TOPLink OR 매핑을 사용하여 create() 또는 find() 메소드 호출 동안 초기화되어서, 이 메소드는 일부 사후 처리 동작을 위해 사용될 수 있다.The ejbLoad () callback method roughly corresponds to the "read" functionality of an enterprise bean. In one embodiment implementing the features of the present invention, a bean is typically initialized during a create () or find () method call using TOPLink OR mapping, so that this method can be used for some post processing operation.

ejbStore() 콜백 메소드는 개략적으로 엔터니 빈의 "업데이트" 기능에 상응한다. 이 기능은 CmoTrasaction이 시작될 필요가 있고 객체가 업데이트를 위해 트랜잭션에 부가된다는 사실 이외에 우리의 CmoTransaction에 이미 캡술화되어 있다.The ejbStore () callback method roughly corresponds to the "update" feature of an enterprise bean. This feature is already encapsulated in our CmoTransaction, in addition to the fact that CmoTrasaction needs to be started and objects are added to the transaction for updating.

ejbRemove() 콜백 메소드는 데이터 저장으로부터 객체를 제거한다. CmoTransaction이 시작되고 삭제할 객체를 부가한다.The ejbRemove () callback method removes an object from the data store. CmoTransaction starts and adds an object to delete.

활성화(activation) 프로세스 동안, 빈 인스턴스 상의 ejbActivate() 메소드는 ejbLoad() 메소드에 뒤이어 호출된다. 빈이 활성화되고 그 상태가 적당히 하부 데이터베이스 레코드에 동기화되면, 비지니스 메소드는 처리된다. 비지니스 메소드에 대한 임의의 후속 호출은 빈 인스턴스에 직접 위임될 것이다.During the activation process, the ejbActivate () method on the bean instance is called following the ejbLoad () method. When the bean is activated and its state is properly synchronized to the underlying database record, the business method is processed. Any subsequent call to the business method will be delegated directly to the bean instance.

ejbPassivate()는 패시베이션(passivation) 동안 사용된다. 패시베이션 프로세스 동안, 컨테이너는 빈 인스턴스 상의 ejbStore() 메소드를 호출한다. 빈 인스턴스는 데이터베이스를 업데이트할 책임을 진다. 데이터베이스가 업데이트된 후에, 컨테이너는 빈이 패시베이션 되기 전에 임의의 미리 할당된 자원을 프리업(free up)할 기회를 스스로 주는 빈 인스턴스 상의 ejbPassivate() 메소드를 호출한다.ejbPassivate () is used during passivation. During the passivation process, the container calls the ejbStore () method on the bean instance. The bean instance is responsible for updating the database. After the database is updated, the container calls the ejbPassivate () method on the bean instance, giving it a chance to free up any preallocated resources before the bean is passivated.

setEntityContext(Entitycontext ctx) 메소드가 빈 초기화 동안 빈의 구문(context)에서 호출된다. 상기 구문은 미래 용도를 위해 저장된다. unsetEntitycontext() 는 설정된 구문을 만족한다. 컨테이너는 빈에 의해 사용된 자원을 해방시키기로 결정하고 이 경우에 기존 상태로의 전이가 발생하지 않는다면 집합된 빈(pooled bean)을 가비지-집합시킬 수 있다. 이러한 전이 주기 동안, 컨테이너는 상기 메소드를 호출한다. 상기 메소드는 빈에 의해 사용된 임의의 자원을 할당해제(deallocate)한다.The setEntityContext (Entitycontext ctx) method is called in the bean's context during bean initialization. The phrase is stored for future use. unsetEntitycontext () satisfies the set syntax. The container may garbage-aggregate pooled beans if it decides to free the resources used by the bean and in this case no transition to the existing state occurs. During this transition period, the container invokes the method. The method deallocates any resources used by the bean.

도 8은 로컬 및 원격 액세스와 인터페이스를 가지고서, 사람(들) 및 피고용인(들)에 대한 간단한 객체에 대한 EJB-합치 CBOF 객체 모델의 애플리케이션을 도시한다. 사람(821, 824) 및 피고용인(841, 834) 객체는 EJBLocalObject(811) 및 EJBObject(814)로부터 실행한다. 로컬 객체의 실행은 로컬 감소된 오버헤드 액세스를 지원한다. EJBObject의 실행은 원격 객체 액세스를 지원한다. 로컬 객체의 표준 특성은 전술한 바와 같이 CmoBase(812)로부터 유래된다. 도 8에 걸쳐서 접미사(ImplW 및 ImplC)는 래퍼 및 구체적인 실행을 위해 사용된다. EntityBean(813)은 cmoBaseImplW(822)에 의해 실행된다. 사람(821) 및 피고용인(841) 객체의 실행은 CmoBaseImplW(822)로부터 유래한다. 이러한 실행은 PersonImplW(832), PrsonImplC(842), EmployeeImplW(852) 및 EmployeeImplC(862)를 포함한다. 도 9의 구문에서 논의된 바와 같이, 2개의 홈 객체 EJBLocaHome(853) 및 EJBHome(833)이 국부 및 원격 인터페이스를 위해 제공된다. 이러한 홈 객체의 실행은 PersonLocalHome(863), PersonHOme(843), EmployeeLocalHOme(864) 및 emPlyeeHome(844)를 포함한다.8 shows an application of an EJB-conforming CBOF object model for a simple object for person (s) and employee (s), with local and remote access and interfaces. Person 821, 824 and employee 841, 834 objects execute from EJBLocalObject 811 and EJBObject 814. Execution of local objects supports local reduced overhead access. Execution of EJBObject supports remote object access. Standard properties of local objects are derived from CmoBase 812 as described above. Throughout Figure 8 the suffixes (ImplW and ImplC) are used for wrappers and specific implementations. EntityBean 813 is executed by cmoBaseImplW 822. Execution of the person 821 and employee 841 objects is derived from CmoBaseImplW 822. Such implementations include PersonImplW 832, PrsonImplC 842, EmployeeImplW 852, and EmployeeImplC 862. As discussed in the syntax of FIG. 9, two home objects EJBLocaHome 853 and EJBHome 833 are provided for local and remote interfaces. Execution of such a home object includes PersonLocalHome 863, PersonHOme 843, EmployeeLocalHOme 864, and emPlyeeHome 844.

도 9는 도 8의 일부를 일반화하고 객체에 대한 홈을 요구하는 EJB 컨벤션(convention)에 따라 도시한다. 홈은 원격 및 로컬 객체 및 인터페이스(901 및 911) 각각을 위해 제공된다. 각각의 비지니스 객체는 javax.ejb.EJBHome(901)을 확장하는 원격 홈 인터페이스(902) 및 javax.ejb.EJBLocalHome(911) 로컬 홈 인터페이스(912)를 구비한다. 원격 및 로컬 홈 인터페이스(902, 912)는 ComApplicationConfigRemoteHome(903) 및 comapplicationconfigLocalHome(913)에 의해 추가로 확장된다.9 illustrates in accordance with an EJB convention that generalizes part of FIG. 8 and requires a home for an object. Homes are provided for remote and local objects and interfaces 901 and 911, respectively. Each business object has a remote home interface 902 that extends javax.ejb.EJBHome 901 and a javax.ejb.EJBLocalHome 911 local home interface 912. Remote and local home interfaces 902 and 912 are further extended by ComApplicationConfigRemoteHome 903 and comapplicationconfigLocalHome 913.

도 10은 또한 도 8의 일부를 일반화하고 EJ를 지원하기 위한 부가적인 메커니즘을 도시한다. 객체들 javax.ejb.EJBObject(1012) 및 javax.ejb.EJBLocalObject(1013)은 CmobaseRemote(1022) 및 CmoBaseLocal(1023) 까지 확장된다.FIG. 10 also illustrates additional mechanisms for generalizing parts of FIG. 8 and supporting EJ. Objects javax.ejb.EJBObject 1012 and javax.ejb.EJBLocalObject 1013 extend to CmobaseRemote 1022 and CmoBaseLocal 1023.

EJB 2.0 명세는 EJB 엔터티들 사이의 관계를 지원한다. 3개의 기본 관계 경우수(cardinalities)(일대일, 일대다 및 다대다) 모두가 지원된다. 부가하여, 이러한 관계는 EJB 2.0 명세의 새로운 쿼리 언어를 사용하여 핸들링된다. 관계는 추상 액세서 메소드(abstract accessor method)를 통해 관리된다. 연관된 객체가 다수인 관계의 경우에, 추상 액세서의 파라미터 또는 반환 값 타입은 관계를 나타내는 집합 클래스이다. 이러한 집합 클래스는 java.util.collection 또는 java.util.Set 인터페이스를 실행한다. 선택적으로, 명세는 반환 타입으로서 java.util.Map 및 java.util.List를 부가할 수 있다. 1 내의 집합 클래스의 다중성의 관계의 경우에, 추상 액세서의 파라미터 또는 반환 값 타입은 관련된 객체의 단일 인스턴스이다.The EJB 2.0 specification supports relationships between EJB entities. All three basic relationship cardsinalities (one-to-one, one-to-many and many-to-many) are supported. In addition, these relationships are handled using the new query language of the EJB 2.0 specification. Relationships are managed through abstract accessor methods. In the case of a relationship with multiple associated objects, the parameter or return value type of the abstract accessor is a collection class representing the relationship. These set classes implement the java.util.collection or java.util.Set interface. Optionally, the specification may add java.util.Map and java.util.List as return types. In the case of a multiplicity relationship of a set class in 1, the parameter or return type of the abstract accessor is a single instance of the associated object.

COF 내의 관계 액세서(relationship accessor)는 상응하는 객체 어레이로서 파라미터 또는 반환 값 타입을 갖는다. 상기 액세서를 원격 인터페이스를 통해 ejb 액세스가능하도록 하기 위해, 관계에 대한 부가적인 메소드가 원격 인터페이스에서 제공되고 ImplW에서 실행된다. 예를 들어, 피고용인 대 어드레스(Employee To Address) 관계는 일대다 및 양방향성일 수 있다. 피고용인 대 어드레스 관계 예와 같은 관계를 횡단하는 로컬 및 원격 메소드가 실행될 수 있다. 예를 들어, 로컬 메소드는: public void set AddressesRemote(Collection address); public void addAddressElementRemote(Addressaddress); 및 public boolean removeAddressElementRemote(Address address)를 포함할 수 있다. 원격 메소드는: public boolean removeAddressElement(); public void setAddressesRemote(Collection address); public void addAddressElementRemote(Address address); 및 public boolean removeAddressElementRemote(Address address)를 포함할 수 있다. getAddressesRemote() 메소드는 피고용인 객체와 연관된 모든 어드레스 객체에 대한 objectID 리스트를 모으는 것을 지원한다. 임의의 어드레스 객체를 캐싱할 필요가 없기 때문에 CmoQueryCursor 메커니즘을 사용할 수 있다. 따라서, CmoQueryCursor로부터 확장하는 CmoObjectCursor라 불리는 새로운 클래스가 EJB 인스턴스의 원격 커서링(cursoring)을 지원하기 위해 생성된다. 이 메소드는 원격 홈 인터페이스를 사용하고 집합으로 저장하는 상응하는 ejb 객체를 검색하거나 생성하는 것을 지원한다. 이는 ejb 객체의 집합을 반환한다. setAddressesRemote(collection address) 메소드는 로컬 홈 인터페이스를 사용하여 상응하는 ejb 객체를 생성하거나 검색하는 것을 지원한다. 이는 객체를 어레이로 저장한다. 이는 상응하는 로컬 메소드를 업데이트하기 위해 호출한다.The relationship accessor in the COF is a parameter or return value type as the corresponding object array. In order to make the accessor ejb accessible via the remote interface, additional methods for the relationship are provided in the remote interface and executed in ImplW. For example, the Employee To Address relationship can be one-to-many and bidirectional. Local and remote methods can be executed that traverse a relationship, such as an employee-to-address relationship example. For example, local methods are: public void set AddressesRemote (Collection address); public void addAddressElementRemote (Addressaddress); And public boolean removeAddressElementRemote (Address address). The remote method is: public boolean removeAddressElement (); public void setAddressesRemote (Collection address); public void addAddressElementRemote (Address address); And public boolean removeAddressElementRemote (Address address). The getAddressesRemote () method supports collecting an objectID list of all address objects associated with an employee. You can use the CmoQueryCursor mechanism because you do not need to cache arbitrary address objects. Thus, a new class called CmoObjectCursor that extends from CmoQueryCursor is created to support remote cursoring of EJB instances. This method supports retrieving or creating the corresponding ejb object that uses the remote home interface and stores it as a collection. This returns a collection of ejb objects. The setAddressesRemote (collection address) method supports creating or retrieving the corresponding ejb object using the local home interface. This stores the objects in an array. This is called to update the corresponding local method.

트랜잭션 지원(transaction support)은 J2EE 플랫폼에 의해 제공된 중요한 인프라구조 서비스이다. 명세는 자바 트랜잭션 API(JTA)를 기술한다. JTA는 하부 트랜잭션 관리자에 대한 액세스를 제공하는 인터페이스이다. 주요한 인터페이스 중 일부는: javax.transaction.UserTransaction 및 javax.transaction TransactionManager를 포함한다. UserTransaction은 애플리케이션 컴포넌트에 노출되는 반면, J2EE 서버와 JTA TransactionManager 사이의 하부 상호작용은 애플리케이션 컴포넌트에 투명하다. TransactionManager 실행은 (컨테이너-한정된(demarcated)) 트랜잭션 경계에 대한 서버 제어를 지원한다. JTA UserTransaction 및 JDC의 트랜잭션 지원 모두는 J2EE 애플리케이션 컴포넌트에 대해 이용가능하다. J2EE 플랫폼은 2개의 트랜잭션 관리 파라다임: 선언된 트랜잭션 경계 및 프로그램된 트랜잭션 경계를 지원한다. 선언된 경계(declarative demarcation)에서, 컨테이너는 트랜잭션을 기동하고, 커미트(committee)하고 복구(roll back)할 책임을 진다. 컨테이너는 클라이언트에 의한 빈 상의 모든 동작을 위해 트랜잭션을 기동한다. 클라이언트는 JTA 트랜잭션을 획득하고 하나의 트랜잭션에서 다수의 동작을 수행할 능력을 갖는다. 이는 동작 사이의 종속성을 갖는 특정 비지니스 로직을 강화하는 유연성을 제공할 것이다. 트랜잭션 속성은 선언된 트랜잭션 경계를 지원하고 연관된 EJB 컴포넌트의 메소드의 의도된 트랜잭션 행동을 컨테이너에 전달한다.Transaction support is an important infrastructure service provided by the J2EE platform. The specification describes the Java Transaction API (JTA). JTA is an interface that provides access to underlying transaction managers. Some of the major interfaces include: javax.transaction.UserTransaction and javax.transaction TransactionManager. UserTransaction is exposed to application components, while the underlying interaction between J2EE server and JTA TransactionManager is transparent to application components. TransactionManager execution supports server control over (container-demarcated) transaction boundaries. Both JTA UserTransaction and JDC's transaction support are available for J2EE application components. The J2EE platform supports two transaction management paradigms: declared transaction boundaries and programmed transaction boundaries. At declarative demarcation, the container is responsible for initiating, committing, and rolling back the transaction. The container initiates a transaction for all operations on the bean by the client. Clients have the ability to acquire JTA transactions and perform multiple operations in one transaction. This will provide the flexibility to enhance certain business logic with dependencies between operations. Transaction attributes support declared transaction boundaries and convey the intended transactional behavior of the methods of the associated EJB component to the container.

6개의 트랜잭션 속성:Required, RequiresNew, NotSupported, Supports, Mandatory 및 Never가 컨테이너-관리된 트랜잭션 경계를 위해 지원된다. Required 트랜잭션 속성을 갖는 메소드가 JTA 트랜잭션 내에 실행되는데; 상황에 따라, 새로운 트랜잭션 구문이 생성되거나 생성되지 않을 수 있다. 호출 컴포넌트(calling component)가 JTA 트랜잭션과 이미 연관되어 있다면, 컨테이너는 상기 트랜잭션의 구문 내의 메소드를 호출할 것이다. 만일 트랜잭션이 호출 컴포넌트와 연관되지 않는다면, 컨테이너는 새로운 트랜잭션을 자동을 생성하고 메소드가 커미트될 때 트랜잭션을 커미트할 것이다. RequiresNew 트랜잭션 속성을 갖는 메소드는 새로운 트랜잭션의 구문에서 실행된다. 호출 컴포넌트가 이미 트랜잭션이 보류된 트랜잭션 구문과 연관된다면, 새로운 트랜잭션 구문이 생성되고, 호출 컴포넌트의 트랜잭션의 커미트가 재시작된 후에 메소드는 새로운 트랜잭션의 구문에서 실행된다. NotSupported 트랜잭션 속성을 갖는 메소드는 트랜잭션의 일부가 되도록 의도되지 않는다. 호출 컴포넌트가 이미 트랜잭션 구문과 연관되어 있다면, 컨테이너는 트랜잭션을 보류하고, 트랜잭션과 연관되지 않은 메소드를 호출하고, 메소드의 커미트시에 호출 컴포넌트의 트랜잭션을 재시작한다. Suppports 트랜잭션 속성을 갖는 메소드는 호출 컴포넌트 트랜잭션 상황을 지원한다. 호출 컴포넌트가 임의의 트랜잭션 구문을 가지지 않는다면, 컨테이너는 마치 트랜잭션 속성이 Notsupported인 것처럼 메소드를 실행할 것이다. 호출 컴포넌트가 이미 트랜잭션 구문과 연관되어 있다면, 컨테이너는 트랜잭션 속성이 Required인 것처럼 메소드를 실행할 것이다. Mandatory 트랜잭션 속성을 갖는 메소드가 호출 컴포넌트의 트랜잭션 구문으로부터 호출된다. 그렇지 않다면, 컨테이너는 javax.transaction.TransactionRequiredException을 내놓는다. Never 트랜잭션 속성을 갖는 메소드는 호출 컴포넌트의 트랜잭션 구문으로부터 호출되어서는 안된다.Six transaction attributes: Required, RequiresNew, NotSupported, Supports, Mandatory, and Never are supported for container-managed transaction boundaries. A method with the Required transaction attribute is executed within the JTA transaction; Depending on the situation, new transaction statements may or may not be generated. If a calling component is already associated with the JTA transaction, the container will invoke the method in the syntax of that transaction. If the transaction is not associated with the calling component, the container will automatically create a new transaction and commit the transaction when the method is committed. Methods with the RequiresNew transaction attribute execute on the syntax of the new transaction. If the calling component is already associated with a transaction statement with a transaction pending, a new transaction statement is created, and the method executes on the new transaction's syntax after the commit of the transaction of the calling component is restarted. Methods with the NotSupported transaction attribute are not intended to be part of a transaction. If the calling component is already associated with the transaction syntax, the container suspends the transaction, invokes a method that is not associated with the transaction, and restarts the calling component's transaction at the time the method commits. Methods with the Suppports transaction attribute support the calling component transaction situation. If the calling component does not have any transaction syntax, the container will execute the method as if the transaction attribute was Notsupported. If the calling component is already associated with a transaction syntax, the container will execute the method as if the transaction attribute were Required. Methods with mandatory transaction attributes are called from the transaction syntax of the calling component. Otherwise, the container throws a javax.transaction.TransactionRequiredException. Methods with a Never transaction attribute MUST NOT be called from the transaction syntax of the calling component.

프로그램 트랜잭션 경계(programmatic transaction demarcation)는 애플리케이션 코드 내의 트랜잭션 관리의 하드 코딩(hard coding)이다. 프로그램 트랜잭션 경계는 세션 JEB, 서블렛 및 JSP 컴포넌트에 대한 가능한(viable) 옵션이다. 프로그램 트랜잭션은 JEDBC 또는 JTA 트랜잭션 중 어느 하나일 수 있다. 컨테이너-관리 세션 EJB에 대해, 추천하지는 않지만, JDBC와 JTA 트랜잭션을 혼합하는 것이 가능하다.Programmatic transaction demarcation is the hard coding of transaction management in application code. Program transaction boundaries are viable options for session JEB, servlet, and JSP components. The program transaction may be either a JEDBC or JTA transaction. For container-managed session EJBs, although not recommended, it is possible to mix JDBC and JTA transactions.

본 발명의 일 특징은 제품 데이터를 스테이징하는 능력이다. 데이터베이스에 따라 복제하지 않는 문제를 해결하기 위해, 일 실시예는 라이브 제품값과 동일한 데이터베이스에 데이터의 단계 값을 저장한다. 그러나 이와 같은 단계 값은 라이브 제품값과 동일한 테이블에 존재해서는 안된다. 만일 단계 데이터가 동일한 테이블에 있다면, 테이블의 성능 및 크기가 영향을 받을 것이다. 따라서, 스테이징 능력을 필요로 하는 모든 객체에 대해, 2개의 테이블이 데이터베이스에 존재할 수 있다. 그 후에 부가적인 테이블이 요구되기 때문에, OR 매핑 툴은 다른 자바 클래스가 그 테이블을 나타내는 것을 요구한다. 스테이징가능한 Impl 클래스에 대해, 상응하는 Impls 클래스가 있다. 클래스 구조와 OR 매핑이 자동으로 처리되기 때문에, 테이블 개요 생성에 따라, 부가적인 테이블 및/또는 클래스를 부가하려는 노력이 실질적으로 감소된다.One feature of the present invention is the ability to stage product data. To solve the problem of not replicating according to the database, one embodiment stores the step values of the data in the same database as the live product values. However, these step values should not be in the same table as the live product values. If the step data is in the same table, the performance and size of the table will be affected. Thus, for every object that requires staging capability, two tables can exist in the database. Since additional tables are then required, the OR mapping tool requires another Java class to represent the table. For the stageable Impl class, there is a corresponding Impls class. Since the class structure and OR mapping are handled automatically, as table outlines are generated, the effort to add additional tables and / or classes is substantially reduced.

기존 객체의 속성을 새로운 객체에 카피하는 것은 일반적으로 용이하다. 그러나 스테이징은 또한 객체 사이의 관계에서의 변화를 지원할 수 있다. 모든 다양한 스테이징 특징을 지원하기 위해, 다음과 같은 다수의 규칙이 정의될 수 있다.Copying the properties of an existing object to a new object is usually easy. But staging can also support changes in the relationships between objects. To support all the various staging features, a number of rules can be defined, such as:

1. 라이브 제품 객체 인스턴스(live production object instance)는 스테이징 인스턴스에 대한 참조를 갖는다. 하나의 객체는 동시에 한번 스테이징될 수 있다(다시 말하자면, 객체는 스테이징된 인스턴스에 대해 일대일 양방향 전용 관계를 갖는다).A live production object instance has a reference to a staging instance. An object can be staged once at the same time (in other words, the object has a one-to-one bidirectional dedicated relationship to the staged instance).

2. 일단 객체가 스테이징되면, 라이브 인스턴스는 수정될 수 없다. 만일 라이브 인스턴스가 수정될 수 있다면, 스테이징 값과 라이브 값에서 행해진 변화의 병합이 발생할 필요가 있을 것이다. 이는 불필요하게 복잡하게 된다. 변화는 통상적으로 라이브 객체에 대해 직접 스테이징되거나 수정될 필요가 있거나, 둘다 필요없을 수 있다.2. Once the object is staged, the live instance cannot be modified. If the live instance can be modified, merging of changes made to the staging value and the live value will need to occur. This is unnecessarily complicated. Changes typically need to be directly staged or modified for the live object, or not both.

3. 관계(relatiionship)는 스테이징된 인스턴스가 아니라 라이브 인스턴스에 대한 것이어야 한다. 그렇지 않다면, (라이브 대 스테이징, 라이브 대 라이브, 스테이징 대 라이브 및 스테이징 대 스테이징와 같은) 많은 관계 매핑이 관리되어야 한다. 부가하여, 객체가 스테이징 대 라이브 또는 그 역으로 변화될 때, 객체에 대한 관계 지시는 그 변화를 관리할 필요가 있다. 이러한 규칙은 상기 문제들을 단순화한다. 나아가, 참조될 라이브 인스턴스는 스테이징될 수 있고 스테이징된 인스턴스에 대한 참조를 가져서, 직접적이지는 않지만, 본질적으로 다양한 관계가 지원될 수 있게 된다.3. The relationship must be for a live instance, not a staged instance. If not, many relationship mappings (such as live to staging, live to live, staging to live and staging to staging) must be managed. In addition, when an object is changed staging versus live or vice versa, the relationship indication for the object needs to manage that change. This rule simplifies the above problems. Furthermore, the live instance to be referenced can be staged and have a reference to the staged instance, so that although not directly, inherently various relationships can be supported.

4. 스테이징 변화(staging change)는 스테이징가능한 프로젝트의 일부여야 한다. 스테이징 변화 세트를 관리하는 한가지 방법은 일부 컨테이너에 상기 변화를 조합하는 것이다. 스테이징 프로젝트는 스테이징된 모든 객체에 대한 추적을 유지한다. 그 후에 이 프로젝트는 활용되거나, 테스트를 위해 활용되거나, 취소될 수 있다.4. Staging change must be part of a stageable project. One way to manage a staging change set is to combine the changes in some containers. The staging project keeps track of all the staged objects. The project can then be utilized, used for testing, or canceled.

5. 객체는 동시에 한번만 스테이징될 수 있고 동시에 단일 스테이징가능한 프로젝트의 일부일 수 있다. 또한, 병합(merge)을 관리하는 것이 일반적으로 필요치 않다.5. An object can be staged only once at the same time and can be part of a single stageable project at the same time. In addition, it is generally not necessary to manage the merge.

일대다 관계를 지원하는 것은 전술한 규칙 #3에 기인하여 스테이징된 테이블에서 용이하다. 모든 관계는 라이브 인스턴스를 참조할 수 있고, 이에 따라 다른 객체를 참조하는 스테이징된 테이블 칼럼은 다른 객체의 라이브 인스턴스를 참조할 필요가 있다. 일대다 관계는 관계가 양방향인 경우에도 중간(intermediate) 관례 테이블을 사용해야 한다. 이는 라이브 객체가 스테이징된 인스턴스에 대한 임의의 관계를 인식해야 하는 것을 방지한다.Supporting a one-to-many relationship is easy in a staged table due to rule # 3 described above. Every relationship can reference a live instance, so a staged table column that references another object needs to refer to a live instance of another object. One-to-many relationships should use intermediate convention tables even when the relationship is bidirectional. This prevents the live object from having to recognize any relationship to the staged instance.

다대다 관계는 또한 스테이징된 인스턴스를 라이브 인스턴스와 링크시키는 중간 관계 테이블을 가질 것이다. 이러한 중간 관계 테이블은 임의의 기존 라이브 객체 관계 테이블과 상이해야 한다. 다대다 관계가 양방향성이라면, 각 방향에 대해 하나씩, 2개의 중간 관계 테이블이 생성될 필요가 있다. 이는 관계가 관계의 어느 하나의 측면으로부터 스테이징될 수 있고 상이한 값을 가지기 때문이다. 부가적인 관계 테이블이 자동으로, 그리고 효율적으로 생성된다.A many-to-many relationship will also have an intermediate relationship table that links the staged instance with the live instance. This intermediate relationship table must be different from any existing live object relationship table. If the many-to-many relationship is bidirectional, two intermediate relationship tables need to be created, one for each direction. This is because relationships can be staged from either side of the relationship and have different values. Additional relationship tables are created automatically and efficiently.

본 발명의 부가적인 특징은, 소위 백 오피스(back office), 데이터베이스 티어와 반대로, 미들-티어에서 수평 분할하는 것이다. 도 11은 일반적으로 수평 분할을 도시한다. 이 예에서, 객체 모델은 컴포넌트 1(1101) 내지 n(1102), 어카운트(1102) 및 BI(1104)를 포함한다. 컴포넌트1은 단일 데이터베이스인 메인(1111) 데이터베이스에 매핑된다. 컴포넌트n은 메인(1111) 및 메인(1112)에 매핑되어, 데이터베이스들을 따라 수평으로 분할된다. 컴포넌트n은 단일 객체 또는 객체들 그룹일 수 있다. 객체들 그룹이 수평으로 분할되는 것을 그룹핑하고 특정하는 설비(facility)는 유용할 수 있다. 프로젝트 특성을 설정하는 이와 같은 설비는 위에 기술되어 있고 Rational Rose의 사용자에게 친숙할 것이다. 택일적으로, 설비는 하나의 그룹에 객체를 할당하거나 다수의 그룹에 객체를 할당하기 위해, 그리고 나서 오버라이드되어서는 안되는 그룹 디폴트 특성 또는 그룹-일반 특성을 설정하기 위해 제공될 수 있다. 어느 하나의 실시예에서, 단일 설정의 결과로서 수평 분할(또는 분할이 아님)에 객체들 그룹을 갖는 것이 유용하다. 본 예의 컴포넌트 1..n은 데이터베이스 선언에 의해 구성될 수 있다. 사용자 커미트된 테이블 또는 사용자 판독가능한(예를 들어 XML) 구성과 같은 선언적 접근방법은 데이터베이스의 논리적 이름을 특정 및/또는 객체 및 객체 그룹에 데이터베이스의 논리 이름을 연결하기 위해 사용될 수 있다. 이 예에서, 어카운트와 BI는 각각 시큐어(secure, 1113) 및 BI(1114) 데이터베이스에 매핑되었다.An additional feature of the invention is the horizontal division in the middle-tier, as opposed to the so-called back office, database tier. 11 generally illustrates horizontal division. In this example, the object model includes components 1 1101 through n 1102, an account 1102, and a BI 1104. Component 1 is mapped to the main 1111 database, which is a single database. Component n is mapped to main 1111 and main 1112 and split horizontally along databases. Component n may be a single object or a group of objects. A facility to group and specify which groups of objects are divided horizontally can be useful. Such a facility for setting project properties is described above and will be familiar to users of Rational Rose. Alternatively, a facility may be provided for assigning objects to one group or for assigning objects to multiple groups, and then setting group default properties or group-general properties that should not be overridden. In either embodiment, it is useful to have groups of objects in the horizontal partition (or not partition) as a result of a single setup. Component 1..n of this example may be configured by a database declaration. Declarative approaches, such as user committed tables or user readable (eg XML) organization, can be used to link the logical name of the database to a specific and / or object and group of objects. In this example, the account and BI were mapped to the secure 1113 and BI 1114 databases, respectively.

미들 티어에서 수평 분할을 지원하는 클래스는 데이터베이스나 데이터베이스 인프라구조로의 인터페이스에, 본 예에서는 TopLink에, 적응되어 있다. 도 12는 미들 티어에서 수평 분할을 실행하기 위해 사용될 수 있는 클래스들을 도시한다. 이 다이어그램은 CmoServerSession(1221) 맨 위 왼쪽에서 시작하는 것으로 가장 쉽게 이해된다. 이 객체는 인프라구조에 의해 얻어진 정보와 데이터베이스 연결을 보유한다. 데이터베이스의 논리 식별이 정적이기 때문에, 상기 객체는 정적 데이터와 정적 메소드를 가질 수 있고 다중 사용자에 의해 공유될 수 있다. CmosystemSession(1231)은 CmoSystemSession(1231)은 서버 세션(1221)으로부터 얻어질 수 있다. 단일 시스템 세션 객체만이 서버에 대해 생성될 필요가 있다. CmoclientSession 객체(1241)는 서버의 각 사용자에 대한 상태 정보 및 구문을 보유한다. 상기 객체는 사용자의 장소(locale) 및 로그인(login)과 같은 사용자 특정 정보를 보유한다. HTTP에 유지된 상태 정보와 유사한 상태 정보가 유지된다. 메소드 getDb 및 setDb가 구문 정보를 설정하기 위해 사용된다. 클라이언트 세션은 다수의 데이터베이스를 포함할 수 있다. 클라이언트 세션(1241)과 임의의 액티브 데이터베이스 세션(1242) 사이의 관계 #dbClientSessions는 0..* 관계이다. 데이터베이스 클라이언트 세션은 클라이언트 세션이 얻어질 때 액티브가 아니다. 클라이언트 세션 동안, 많은 데이터베이스 클라이언트 세션이 액티브로 될 수 있다.Classes that support horizontal partitioning in the middle tier are adapted to interfaces to databases or database infrastructures, in this example to TopLink. 12 shows classes that can be used to perform horizontal division in the middle tier. This diagram is most easily understood as starting from the top left of CmoServerSession (1221). This object holds information and database connections obtained by the infrastructure. Since the logical identification of the database is static, the object can have static data and static methods and can be shared by multiple users. CmosystemSession 1231 can be obtained from the server session 1221, CmoSystemSession 1231. Only a single system session object needs to be created for the server. The CmoclientSession object 1241 holds state information and syntax for each user of the server. The object holds user specific information such as the user's locale and login. Status information similar to that maintained in HTTP is maintained. The methods getDb and setDb are used to set the syntax information. Client sessions can include multiple databases. The relationship between the client session 1241 and any active database session 1242 is a .dbClientSessions relationship. The database client session is not active when a client session is obtained. During a client session, many database client sessions can be active.

본 도면의 객체 CmoTransaction(1251)는 데이터가 수평으로 분할되도록 버퍼링한다. CmoTransaction(1251)의 역할은 트랜잭션이 커미트되려 하기 전까지 장시간 트랜잭션을 포함하여 트랜잭션의 상태를 유지하는 것이다. 트랜잭션이 소집될 때, 새롭거나 수정된 객체가 속하는 데이터베이스의 분해능(resolution)을 허용하는 정보가 수집된다. 트랜잭션이 커미트되려 할때, CmoDatabaseTransaction(1252)의 하나 이상의 인스턴스에 의해 하나 이상의 데이터베이스에서 커미트될 수 있다.The object CmoTransaction 1251 of this figure buffers the data so that it is divided horizontally. The role of CmoTransaction 1251 is to maintain the state of the transaction, including the long transaction, until the transaction is about to be committed. When a transaction is called, information is collected that allows for the resolution of the database to which the new or modified object belongs. When a transaction is about to be committed, it can be committed in one or more databases by one or more instances of CmoDatabaseTransaction 1252.

미들 칼럼 객체(1212, 1222, 1232, 1242 및 1252)를 포함하는 수평 분할 지원이 기존의 인프라구조 인터페이스(1223, 1243 및 1253) 더하기 노출된 세션(1221, 1241, 1251)이 부가될 수 있는데, 세션이 노출된 방식이나 세션이 노출된 것에 동작하는 비지니스 로직을 변경시키지 않는다. 예를 들어, 수평 분할은 동일한 코드와 소프트웨어를 사용하는 2개의 자동차 제조자(F와 G)를 지원하기 위해 사용될 수 있다. F에 대한 모든 데이터는, 예를 들어 오러클 데이터베이스로 분할되어야 하고, G에 대한 모든 데이터는 SQL 데이터베이스에 분할될 수 있다. 예를 들어 사용자의 로그인시에 구문(F 또는 G)이 설정되면, 데이터의 분할은 시스템에 대해 투명해야 한다. F의 데이터에 대한 모든 호출은 오러클 데이터베이스와 충돌할 수 있고, G의 데이터에 대한 모든 호출은 SQL 데이터베이스와 충돌할 수 있다. 동일한 로직이 데이터 서비스가 F 또는 G에 제공되는 지와 관계없이 제공될 수 있다. 비지니스 로직을 실행하는 코드는 구문 설정만이 F와 G의 데이터를 동일시하거나 구분하기 때문에, 공유될 수도 있다. 이 레벨에서의 분할은 고객 데이터를 분리해아 한다. 데이터베이스가 작을수록 더 효율적으로 처리될 수 있다. F에 의한 탐색은, 백 오피스 데이터베이스 서버 레벨에서조차도, G의 데이터를 결코 찾지 못한다. WQL, QL 또는 다른 데이터베이스 인쿼리에서의 믹스-업(mix-up)은 하나 이상의 데이터베이스로부터 데이터를 반환할 수 없는데, 이는 하나의 고객이 다른 고객 데이터로의 액세스를 얻을 수 있는 기회를 감소시킨다. 이는 특히, 원고측(plaintiff)과 피고측(defendant) 변호인들이 일부 데이터 베이스 컴포넌트를 공유하지만 자신들의 일이 엄격히 분리되기를 원할 때, 또는 경쟁자가 동일한 값이 부가된 서비스를 사용하고 서비스 공급자가 데이터가 안전하다고 고객들(경쟁자들) 모두에게 보장하려는 때와 같이, 공유된 경쟁 상황에서 유용한다. 고객의 데이터는 다른 고객으로부터 안전하게 유지되지만, 주기적인 유지 기능은 다중 고객 구문을 따라 반복하는 시스템 관리자에 의해 달성될 수 있다.Horizontal segmentation support, including middle column objects 1212, 1222, 1232, 1242, and 1252, can be added to existing infrastructure interfaces 1223, 1243, and 1253 plus exposed sessions 1221, 1241, and 1251. It does not change the way the session is exposed or the business logic that operates on the session. For example, horizontal segmentation can be used to support two car manufacturers F and G using the same code and software. All data for F must be partitioned into an Oracle database, for example, and all data for G can be partitioned in an SQL database. For example, if a phrase (F or G) is set at user login, the partitioning of data should be transparent to the system. Every call to F's data can crash the Oracle database, and every call to G's data can crash the SQL database. The same logic can be provided regardless of whether the data service is provided to F or G. Code that executes business logic may be shared because only the syntax configuration identifies or separates the data in F and G. Partitioning at this level should separate customer data. The smaller the database, the more efficiently it can be processed. The search by F never finds G's data, even at the back office database server level. Mix-up in WQL, QL, or other database queries cannot return data from more than one database, which reduces the chance of one customer gaining access to another customer data. This is especially true when plaintiff and defendant attorneys share some database components but want their work to be strictly separated, or when competitors use a service with the same value and the service provider uses data that is secure. This is useful in shared competition situations, such as when you want to ensure all of your customers (competitors). The customer's data is kept safe from other customers, but periodic maintenance can be accomplished by a system administrator who repeats along multiple customer statements.

미들 칼럼 객체(1212, 1222, 1232, 1242 및 1252)는 구문에 기초하여 다중 데이터베이스에 대한 액세스를 지원하는데, 여기에서, 다중 데이터베이스는 동일한 객체의 수평으로 분할된 인스턴스를 저장한다. CmodatabaseServerSession 객체(1222)는 서버 상에 액티브한 각각의 데이터베이스에 대해 존재한다. 데이터베이스는 논리적 이름에 의해 cmoDatabaseServerSession에 논리적으로 인식되는데, 상기 이름은 객체의 키잉된(keyed) 속성 dbName으로서 유지될 수 있다. getAllVersions 메소드는 버전 관리를 지원한다. 본 메소드는 데이터베이스 또는 개요 버전 내의 객체의 버전을 반환한다. 데이터베이스를 액세스하는 코드 또는 데이터베이스로의 액세스를 보장하는 코드는 버전이 모순되지 않는지를 체크한다. CmoClassConfiguration 객체(1212)는 객체를 데이터베이스에 연결한다. 하나의 cmoClassConfiguration 객체(1212)는 데이터베이스에서 액세스할 수 있는 객체를 나타낸다. CuDatabaseconfig(1232)는 논리적인 데이터베이스 이름에 상응하는 물리적인 데이터베이스 구성 정보를 보유한다. 이 정보는 구문 세트에 따라 단일 논리적 이름에 다중 물리적 데이터베이스를 연결하기 위해 사용될 수 있다. CmoDatabseServerSession(1222)은 인프라구조 객체 ServerSession(1223)에 #serverSession 관계에 의해 연결된다. CmoDatabaseClientSessiob(1242)은 클라이언트 세션은 인프라구조 객체 ClientSession(1243)으로써 관리하는데, (상기 예에서 F 또는 G인) 클라이언트의 구문을 고려한다.Middle column objects 1212, 1222, 1232, 1242, and 1252 support access to multiple databases based on syntax, where multiple databases store horizontally partitioned instances of the same object. A CmodatabaseServerSession object 1222 exists for each database that is active on the server. The database is logically recognized in cmoDatabaseServerSession by logical name, which may be maintained as the keyed attribute dbName of the object. The getAllVersions method supports versioning. This method returns the version of the object in the database or outline version. The code that accesses the database or the code that guarantees access to the database checks that the versions do not conflict. The CmoClassConfiguration object 1212 connects the object to the database. One cmoClassConfiguration object 1212 represents an object that can be accessed from a database. CuDatabaseconfig 1232 holds physical database configuration information corresponding to logical database names. This information can be used to link multiple physical databases to a single logical name, depending on the syntax set. CmoDatabseServerSession 1222 is connected to the infrastructure object ServerSession 1223 by a #serverSession relationship. CmoDatabaseClientSessiob 1242 manages client sessions as infrastructure object ClientSession 1243, taking into account the syntax of the client (which is F or G in the above example).

트랜잭션이 커미트되려할 때, CmoTransaction(1251)의 동작을 재초대하는 경우에, CmoTransaction은 적당한 구문 세트를 갖는 CmoDataTransaction(1252)을 호출한다. CmoDatabaseTranaction(1252)은 하나 또는 2단계 객체 커미트를 처리하기 위해, 예를 들어 TopLink 내의 UnitOfWork인, 인프라구조 객체(1253)와 접속한다.When a transaction is about to be committed, in case of reinviting the operation of CmoTransaction 1251, CmoTransaction calls CmoDataTransaction 1252 with the appropriate syntax set. CmoDatabaseTranaction 1252 connects with infrastructure object 1253, which is, for example, UnitOfWork in TopLink to process one or two-phase object commits.

2단계 커미트(two-stage commit)는 원자적 양식(atomic fashion)으로 다중 물리적 데이터베이스를 따른 변화를 커미트하는 트랜잭션 프로토콜이다. 일실시예에서, 2단계 커미트를 지원하기 위한 소프트웨어 컴포넌트는, JTS-기반 애플리케이션 서버(임의의 J2EE 1.3 합치 App Server), JDBC 드라이버(예를 들어 Opta2000 및 Seropto) 내의 분산된 트랜잭션 지원 및 데이터베이스(예를 들어 SQL 서버 및 오러클) 내의 분산된 트랜잭션 지원을 포함한다.COF 및 COF/EJB는 (통상적으로 J2EE 애플리케이션 서버에 의해 제공된) (JTS-기반 (자바 트랜잭션 서비스) 트랜잭션 관리자와 트랜잭션 통합을 지원하기 위해 TopLink를 사용한다. 2단계 커미트의 사용은 옵션이다. 2단계 커미트는 매우 비싸고, 따라서 이는 단지 필요할 때만 사용된다. 다중 객체에 영향을 미치고 다중 물리적 데이터베이스를 확장시키는 사용자 트랜잭션은 통상적으로 2단계 커미트 트랜잭션을 사용한다. EJB 객체 및 COF 객체는 단일 트랜잭션에서 커미트될 필요가 있을 때, 2단계 커미트가 적당하다. 본 프로토콜은 COF 객체, 수평 분할된 객체 및 EJB 객체의 임의의 조합으로써 사용될 수 있다.Two-stage commit is a transactional protocol that commits changes across multiple physical databases in atomic fashion. In one embodiment, the software component for supporting two-phase commit includes a JTS-based application server (any J2EE 1.3 compliant App Server), distributed transaction support and a database (e.g., in a JDBC driver (e.g. Opta2000 and Seropto). For example, it includes distributed transaction support within SQL Server and Oracle. COF and COF / EJB support transaction integration with JTS-based (Java Transaction Service) transaction managers (typically provided by J2EE application servers). Use TopLink The use of two-phase commit is an option Two-phase commit is very expensive, so it is only used when needed User transactions that affect multiple objects and extend multiple physical databases are typically two-phase commit transactions EJB objects and COF objects need to be committed in a single transaction When it is suitably in the two-phase commit. This protocol may be used by any combination of the COF objects, the divided objects and horizontal EJB object.

수평 분할은 COF 또는 다른 프로토콜이 직접 사용되는지, 또는 EJB나 다른 원격 메소드 호출 캡슐화에서 캡슐화되는 지에 의존하지 않는다는 것을 유의하라. 미들 티어 갭슐화는 데이터베이스 관리자에 의존하지 않고서 독립적인 데이터베이스를 따라 수평 분할을 처리한다. 이는 느슨하게 커플링된 수평 분할로서 언급될 수 있는데, 왜냐하면 독립적인 데이터베이스는 상이한 데이터베이스 공급자로부터 공급된 호환할 수 없는 데이터베이스일 수 있기 때문이다.Note that horizontal partitioning does not depend on whether COF or other protocols are used directly or encapsulated in EJB or other remote method call encapsulation. Middle tier encapsulation handles horizontal partitioning along an independent database without depending on the database manager. This may be referred to as loosely coupled horizontal partitioning, because an independent database may be an incompatible database supplied from different database providers.

또한, 상대적으로 작은 비지니스 로직이나 시스템 코드는 수평 분할을 사용하기 위해 변경될 필요가 있다. 일부 기본적인 규칙이 리스트된다.Also, relatively small business logic or system code may need to be changed to use horizontal partitioning. Some basic rules are listed.

1. 만일, 구성 파일에서, 특성에 대한 값 "database.projects"가 단일이라는 것을 의미하는 단지 하나의 데이터베이스가 사용되면, 상기 데이터베이스는 항상 사용될 것이다.1. If only one database is used in the configuration file, meaning that the value "database.projects" for a property is single, the database will always be used.

2. 만일 하나 이상의 데이터베이스가 구성 파일에 존재하면, 데이터베이스 정보는 동작이 수행될 때 명시적으로, 또는 함축적으로 분석된다. 명백한 해상도(explicit resolution)는 "setDb(cudatabaseconfig)"가 CmoClientSession 객체 및/또는 CmoTransaction 객체로 불린다는 것을 의미한다. CuDatabaseConfig 객체는 통상적으로 시스템 기동 시간 동안 생성된다. "CmoserverSession.getAvailableDbObjects()"는 전체 시스템에 대해 이용가능한 데이터베이스 객체의 리스트를 얻기 위해 사용된다. 특정한 클래스에 대해, "CmoServersession.getDbObjectsforClass(Class aClass)" 및 "CmoServerSession.getDbObjectsForClass(String aClassName)"은 "class"가 상주하는 CuDatabaseConfig 객체 리스트를 반환한다. 함축적인 해상도(Implicit resolution)는 cmoClientSession 및/또는 CmoTransaction 객체가 이하 설명하는 바와 같이 애플리케이션 코드에서 특정하게 "setDb(CuDatabaseConfig)"를 호출하지 않고서도 동작되고 있다는 것을 지능적으로 발견할 수 있다는 것을 의미한다.2. If more than one database is present in the configuration file, database information is resolved either explicitly or implicitly when the operation is performed. Explicit resolution means that "setDb (cudatabaseconfig)" is called a CmoClientSession object and / or a CmoTransaction object. CuDatabaseConfig objects are typically created during system startup time. "CmoserverSession.getAvailableDbObjects ()" is used to get a list of available database objects for the entire system. For a particular class, "CmoServersession.getDbObjectsforClass (Class aClass)" and "CmoServerSession.getDbObjectsForClass (String aClassName)" return a list of CuDatabaseConfig objects in which "class" resides. Implicit resolution means that the cmoClientSession and / or CmoTransaction objects can be found intelligently without having to specifically call "setDb (CuDatabaseConfig)" in the application code as described below.

3. 데이터베이스 정보는 CmoClientSession 및 CmoTransaction 객체 상에 명백하게 분석될 수 없을 때, 세션 객체는 포함될 모든 객체를 사용함으로써 이를 분석하는 시도를 할 것이다. 만일 포함된 임의의 객체가 (널이 아닌) 일부 데이터베이스 정보를 갖는다면, 이 정보는 세션 객체와 연관된 데이터베이스 정보와 비교될 것이다. 만일 세션 객체에 대한 데이터베이스 정보가 널이라면, 상기 정보는 객체로부터의 데이터베이스 정보라고 설정될 것이고; 만일 정보가 그렇지 않다면, 예외(exception)가 던져질 것이다. 이러한 로직은 포함된 모든 객체에 대해 계속될 것이다. 동작 및/또는 트랜잭션을 위해 데이터베이스 정보를 식별하는 것을 보조하기 위해, COF는 새로운 인터페이스 "CmoDbConflictResolve"를 도입한다. CmoDbConflictResolve 객체는 하나의 프로젝트를 위해 구성된다. 이는 키가 database.conflictresolver인 구성에서 행해질 수 있다. {프로젝트의 전체 클래스 이름}={cmoDbConflictResolver 인터페이스를 실행하는 전체 클래스 이름}.3. When database information cannot be resolved explicitly on the CmoClientSession and CmoTransaction objects, the session object will attempt to resolve it by using all the objects to be included. If any object included has some (non-null) database information, this information will be compared with the database information associated with the session object. If the database information for the session object is null, the information will be set to database information from the object; If the information is not, an exception will be thrown. This logic will continue for every object it contains. To assist in identifying database information for operation and / or transaction, COF introduces a new interface "CmoDbConflictResolve". The CmoDbConflictResolve object is configured for one project. This can be done in a configuration where the key is database.conflictresolver. {Full class name of the project} = {full class name to run the cmoDbConflictResolver interface}.

4. 분석기(resolver)는 가장 마지막 순간에 호출된다. 객체가 생성된 것을 의미하기 때문에, 객체가 커미트되려 하기 전까지 호출되지 않는다. 이는 분석기가 객체의 모든 속성이 생성을 위해 설정된 것을 기대할 수 있고, 상기 속성들을 객체가 속하는 데이터베이스를 결정하기 위해 사용할 수 있다는 것을 의미한다.4. The resolver is called at the last minute. Because it means that the object is created, it is not called until the object is about to be committed. This means that the analyzer can expect all attributes of the object to be set for creation, and that the attributes can be used to determine the database to which the object belongs.

검색 경우에 대해, 식(expression)이나 속성 쿼리, 또는 속성 맵 쿼리는 분석기가 질의할 데이터베이스에 대해 질의되고 있는 속성에 기반하여 결정할 수 있도록 통과된다. 단일 쿼리 내의 데이터베이스에 따른 쿼리는 지원될 수 없다. 또한, 이는 setDb가 clientSession 상에서 아직 호출되지 않고 질의되는 객체가 하나 이상의 데이터베이스에 존재하도록 구성된 경우에 요구된다.For search cases, expressions, attribute queries, or attribute map queries are passed through so that the analyzer can make decisions based on the attributes being queried for the database being queried. Queries based on databases within a single query cannot be supported. This is also required if setDb is not yet called on the clientSession and the object being queried is configured to exist in one or more databases.

CmoDbconflictResolver가 실행될 수 있는 방법은 일부 객체 속성값을 특정 물리적 데이터베이스에 매핑하도록 하는 소정의 다른 동적 데이터나 소정의 구성 정보를 사용하는 것이다. 이는 가능한 한 단순하게 유지되어야 한다. 예를 들어, 어느 데이터 베이스 또는 데이터베이스들이 orgID에 기반하여 이름지어지는지를 결정하기 위해 객체의 조직화(organization) id를 사용하는데, 이는 단순한 매핑이 되도록 한다. 이러한 데이터베이스 이름은 데이터 베이스 및 데이터베이스가 위치되는 것에 관한 구성 정보에 이름을 주기 위해 구성/설치 시간에 결정되는 "논리적(logical)" 이름이다. 따라서 사용되는 이름은 논리적 이름이고, 데이터베이스 시스템 내의 실제 물리적 데이터베이스 이름이 아니라 액세스할 데이터베이스 구성의 이름을 나타낸다.The way CmoDbconflictResolver can be executed is to use some other dynamic data or some configuration information that allows some object attribute values to be mapped to a particular physical database. This should be kept as simple as possible. For example, to determine which databases or databases are named based on orgID, we use the organization's organization id, which allows for simple mapping. This database name is a "logical" name that is determined at configuration / installation time to name the database and configuration information about where the database is located. Thus, the name used is a logical name and represents the name of the database configuration to be accessed, not the actual physical database name within the database system.

4개의 기능이 데이터베이스 정보를 제어하기 위해 클라이언트 세션에서 이용가능하다. 이들은: setDb(CuDatabaseConfig); getDb(); overrideDb(CuDatabaseconfig); 및 resetDb()이다. getDb()는 클라이언트 세션 객체에 설정된 현재의 데이터베이스를 반환하고; overrideDb(CuDatabaseConfig aNewdb) 및 resetDb()는 클라이언트 세션에서 db info의 변화를 추적하기 위해 스택 메커니즘을 사용한다. overrideDb(CuDatabaseConfig aNewDb)는 현재의 db를 스택에 푸쉬하고, 현재의 db를 통과된 "aNewDb"가 되도록 설정한다. resetDb()는 현재의 db를 비어있지 않다면 스택의 탑(top) 엘리먼트가 되도록 설정하고; 그렇지 않다면 아무것도 하지 않을 것이다. setDb(CuDatabaseConfig aNewDb2)는 현재의 db가 "aNewDb2"가 되도록 설정하고 스택을 비울 것이다. 따라서, 만일 setDb()가 스택이 일부 정보를 가질 때 호출된다면, 스택은 비워질 것이다. 특정 클라이언트 세션인 시스템 클라이언트 세션 객체는 스레드(thread) 베이스당 이러한 4개의 기능을 사용한다. 따라서, 스레드 상의 데이터베이스 정보는 다른 스레드 상의 것에 대해 아무것도 하지 않는다.Four functions are available in the client session to control database information. These are: setDb (CuDatabaseConfig); getDb (); overrideDb (CuDatabaseconfig); And resetDb (). getDb () returns the current database set in the client session object; overrideDb (CuDatabaseConfig aNewdb) and resetDb () use a stack mechanism to track changes to db info in client sessions. overrideDb (CuDatabaseConfig aNewDb) pushes the current db onto the stack and sets it to be "aNewDb" passed through the current db. resetDb () sets the current db to be the top element of the stack if it is not empty; If not, nothing will be done. setDb (CuDatabaseConfig aNewDb2) will set the current db to be "aNewDb2" and empty the stack. Thus, if setDb () is called when the stack has some information, the stack will be empty. A specific client session, the system client session object, uses these four functions per thread base. Thus, database information on a thread does nothing to that on another thread.

overrideDb(CuDatabaseconfig aDbconfig) 및 resetDb() 기능은 CmoClientSession의 서브클래스임에도 불구하고 CmoTrasaction에서 호출될 수 없다.The overrideDb (CuDatabaseconfig aDbconfig) and resetDb () functions cannot be called in CmoTrasaction even though they are subclasses of CmoClientSession.

CmoDbConflictResolver API는: public CuDatabaseConfig resolveCreate(CmoDbresolverInfo aDbResolverInfor)가 CeDbNameconflictResolveException을 내놓고(throw); public CuDatabaseConfig resolveFind(CmoDbResolverINfo aDbResolverInfo)가 CeDbNameconflictResolverExceptiion을 내놓는 것을 포함한다. CmoDbResolverInfo API는: public CmoClientSession getClientSession(); public Class getMainClass(); public HashMap getAttValuePairs(); public CmoFindObject getFindObject(); 및 public cmoBase getNewlyCreatedObject()를 포함한다.The CmoDbConflictResolver API: public CuDatabaseConfig resolveCreate (CmoDbresolverInfo aDbResolverInfor) throws a CeDbNameconflictResolveException; public CuDatabaseConfig resolveFind (CmoDbResolverINfo aDbResolverInfo) includes publishing CeDbNameconflictResolverExceptiion. The CmoDbResolverInfo API is: public CmoClientSession getClientSession (); public Class getMainClass (); public HashMap getAttValuePairs (); public CmoFindObject getFindObject (); And public cmoBase getNewlyCreatedObject ().

CmoDbConflictResolver 인터페이스를 실행하는 클래스가 개발될 때, CmoDbResolverInfo 내의 getNewlyCreatedObject()는 resolverCreate(CmoDbResolverInfo)의 실행을 보조하기 위해 사용될 수 있고; 유사하게, getAttValuePaires() 및/또는 CmoDbResolverInfor 내의 getFindObject()는 resolverFind(cmoDbResolverInfo)의 실행에서 유용할 수 있다.When a class is developed that implements the CmoDbConflictResolver interface, getNewlyCreatedObject () in CmoDbResolverInfo can be used to assist in the execution of resolverCreate (CmoDbResolverInfo); Similarly, getAttValuePaires () and / or getFindObject () in CmoDbResolverInfor may be useful in the execution of resolverFind (cmoDbResolverInfo).

이상의 설명으로부터, 매우 다양한 시스템 및 방법이 본 발명의 특징 및 컴포넌트로부터 만들어질 수 있다는 것은 당업자에 자명할 것이다. 본 발명의 일 실시예는 애플리케이션 개발 코드를 생성하는 방법을 포함한다. 본 방법은 택일적으로 본 방법의 단계들을 수행할 시스템이나 디바이스로서 실행될 수 있다. 시스템이나 디바이스는 본 발명의 다수의 실시예, 단계 조합, 특징, 옵션 및 택일적인 실시예들을 포함할 수 있다. 본 방법은 또한 본 방법 단계들을 수행하는 프로그램이 구현된 자기 매체로서 실행될 수 있다. 이 프로그램은 본 방법의 다수의 실시예들, 단계들 조합, 특징들 옵션들 및 택일적인 실시예들을 포함할 수 있다. 개발 코드의 생성은 특히 다중-티어되고 캡슐화된 비지니스 애플리케이션 환경에 적용가능하다. 본 방법은 객체-지향 애플리케이션 디자인의 동작과 관계 및 객체 모델에 기초한다. 이러한 객체, 관계 및 동작의 모델링은 그래픽 툴을 사용하여 시각적으로 수행될 수 있다. 객체, 관계 및/또는 동작에 할당된 특성들은 모델링된 객체에 대한 인터페이스를 생성할지를 지시하는 첫번째 특성을 포함할 수 있다. 상기 특성은 특정된 동작에 대한 로컬 및/또는 원격 인터페이스를 생성할지를 지시하는 제 2 특성을 포함할 수 있다. 모델로부터, 모델 및 그의 특성에 상응하는 머신-판독가능한 데이터가 생성된다. 이는 내부 모델 또는 추출된 모델에 구현된 데이터일 수 있다. 본 모델은 머신만이 판독가능할 수 있고, 또는 사람이 판독가능할 수 있다. 머신-판독가능한 데이터는 데이터베이스에 모델을 매핑하기 위해 사용된다. 일실시예에서, 데이터베이스는 관계형 데이터베이스이다. 애플리케이션 개발 코드는 매핑 및 머신-판독가능한 데이터를 사용하여 생성된다. 생성된 애플리케이션 코드는 데이터베이스 내의 객체를 보존하고 액세스할 코드를 포함할 수 있다. 상기 코드는 제 1 특성과 일치하는 특정 동작에 대한 인터페이스를 추가로 포함할 수 있다. 코드로의 인터페이스와 특정 동작은 표준-기반 서버-측 컴포넌트 모델 및 원격 메소드 호출 프로토콜과 실질적으로 합치될 수 있다. 애플리케이션 개발 코드는 택일적으로 Enterprise JavaBeans(EJB) 표준 2.0 또는 그 후의 버전과 실질적으로 합치될 수 있다. EJB 객체를 보존하고 액세스하는 코드는 빈 관리된 지속성(bean managed persistence, BMP) 프로토콜과 실질적으로 합치될 수 있다. 택일적으로, 애플리케이션 개발 코드는 마이크로소프트의 DCOM 명세와 실질적으로 합치될 수 있다. 본 발명의 다른 특징에서, 객체-지향 애플리케이션 디자인은 통일된 모델링 언어(unified modeling language, UML) 표준과 실질적으로 합치될 수 있다.From the above description, it will be apparent to those skilled in the art that a wide variety of systems and methods can be made from the features and components of the present invention. One embodiment of the invention includes a method for generating application development code. The method may alternatively be implemented as a system or device to perform the steps of the method. The system or device may include a number of embodiments, combinations of steps, features, options and alternative embodiments of the invention. The method may also be executed as a magnetic medium in which a program for performing the method steps is implemented. The program can include multiple embodiments, combination of steps, feature options and alternative embodiments of the method. Generation of development code is particularly applicable to multi-tiered and encapsulated business application environments. The method is based on the object model and the behavior and relationships of object-oriented application design. Modeling of such objects, relationships, and actions can be performed visually using graphical tools. Properties assigned to an object, relationship, and / or action may include a first property that indicates whether to create an interface for the modeled object. The characteristic may include a second characteristic indicating whether to generate a local and / or remote interface for the specified operation. From the model, machine-readable data is generated corresponding to the model and its characteristics. This may be data implemented in an internal model or an extracted model. The model may be machine readable only or human readable. Machine-readable data is used to map models to databases. In one embodiment, the database is a relational database. Application development code is generated using mapping and machine-readable data. The generated application code may include code to preserve and access objects in the database. The code may further include an interface for a particular operation that matches the first characteristic. The interface to the code and the specific behavior can be substantially consistent with the standards-based server-side component model and the remote method invocation protocol. The application development code may alternatively be substantially consistent with Enterprise JavaBeans (EJB) Standard 2.0 or later. Code that preserves and accesses EJB objects can be substantially matched with the bean managed persistence (BMP) protocol. Alternatively, application development code can be substantially consistent with Microsoft's DCOM specification. In another aspect of the invention, the object-oriented application design may be substantially consistent with the Unified Modeling Language (UML) standard.

메소드 스터브를 생성하는 애플리케이션 개발 코드 메소드의 일 특징은 커스텀 비지니스 로직이 부가된다는 것이다. 본 발명의 이러한 특징을 실행기 위해, 시스템에 대한 객체-지향 모델이 수정될 때 재생성되는 코드는 커스텀 비지니스 로직을 포함하는 코드에서 분리되고, 객체-지향 모델이 수정될 때 오버라이트되거나 재생성되지 않아야 한다. 본 발명의 다른 특징은 객체와 관계의 다수의 제 3 특성을 추가로 포함하는데, 상기 제 3 특성은 매핑 단계를 제어한다. 이러한 특성들은 관계형 데이터베이스와 같은 하부 데이터베이스에 객체와 관계를 매핑하기 위해 사용된다. 이러한 제 3 특성은 모델링된 객체의 배치 스테이징을 지원할지를 포함할 수 있다. 상기 특성은 모델링된 객체의 배치의 변화 히스토리를 기록할지를 포함할 수 있다. 이는 필드들을 범용화하기 위해 모델링된 객체 내의 하나 이상의 필드를 동적으로 배열할지를 추가로 포함할 수 있다. 동적으로 필드를 배열하는 것을 포함하는 본 발명의 특징에 따라, 모델링된 객체를 보존하고 액세스하는 코드는 특정된 언어에 기초하여 검색할 동적 어레이의 요소를 분석할 수 있다. 이 언어는 처리되는 객체에 존재하는 데이터에 의해 함축적으로 특정될 수 있거나 언어에 의해 명시적으로 특정될 수 있다.One feature of application development code methods that generate method stubs is that custom business logic is added. In order to implement this feature of the invention, code that is regenerated when the object-oriented model for the system is modified must be separated from code containing custom business logic and not overwritten or regenerated when the object-oriented model is modified. . Another aspect of the invention further includes a plurality of third characteristics of the objects and relationships, which control the mapping step. These properties are used to map objects and relationships to underlying databases, such as relational databases. This third property may include whether to support batch staging of the modeled object. The property may include whether to record a change history of the placement of the modeled object. This may further include whether to dynamically arrange one or more fields in the modeled object to generalize the fields. In accordance with features of the present invention, including dynamically arranging fields, code that preserves and accesses modeled objects can analyze elements of a dynamic array to search based on a specified language. This language may be implicitly specified by the data present in the object being processed or may be explicitly specified by the language.

본 발명의 또 다른 특징은 사용자가 생성할 애플리케이션 코드를 특정할 수 있고 머신-판독가능한 데이터를 생성하고, 매핑하고 부가적으로 생성하는 방법 단계들이 사용자에 의한 추가적인 액션을 요구하지 않고서 진행될 수 있다는 것이다.Another feature of the present invention is that the user can specify the application code to generate and the method steps of generating, mapping and additionally generating machine-readable data can proceed without requiring further action by the user. .

본 발명의 다른 실시예는 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 트랜잭션 소집 방법이 처리된다는 것이다. 이 방법은 방법 단계들을 수행하는 시스템 또는 디바이스로서 실행될 수 있다. 시스템 또는 디바이스는 본 방법의 다수의 실시예들, 단계 조합들 특징들, 옵션들 및 택일적인 실시예들을 포함할 수 있다. 본 방법은 또한 방법 단계들을 수행하는 프로그램이 구현된 자기 매체로서 실행될 수 있다. 이 방법은 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 보존하는 방법의 객체-지향 프레임워크를 제공하는 것을 포함할 수 있다. 부가적으로, 표준-기반 서버-측 컴포넌트 모델과 원격 호출 프로토콜과 실질적으로 합치하는 객체-지향 프레임워크의 버전을 제공한다. 표준-기반 서버-측 컴포넌트 모델 및 원격 호출 프로토콜의 예는 Enterprise JavaBeans(EJB), 분산된 공통 객체 모델(DCOM) 및 COBRA를 포함한다. 트랜잭션을 소집하는 방법은 하나 이상의 데이터베이스로 의도된 트랜잭션-관련 활동성(activity)을 수용하거나 버퍼링하는 것을 추가로 포함할 수 있다. 이러한 수용이나 버퍼링은 객체-지향 프레임워크의 표준 합치 버젼 및 객체-지향 프레임워크를 통해 동시에 발생할 수 있다. 본 실시예의 일 특징은 객체를 버퍼링하는 것을 포함할 수 있다는 것이고, 트랜잭션을 커미트하는 방향에서, 본 방법은 트랜잭션을 처리하기 위해 데이터베이스 매니저를 호출하는 것을 추가로 포함한다. 이러한 특징은 데이터베이스 관리자 이외의 메커니즘에 의해 트랜잭션-관련 활동성을 수용하는 것을 포함한다. 본 발명의 이러한 특징은 JEB, DCOM 및 COBRA를 포함하여 위에서 언급된 임의의 표준으로써 실행될 수 있다.Another embodiment of the present invention is that the transaction convocation method is handled by at least one database manager that supports transaction processing. This method can be implemented as a system or device that performs method steps. The system or device may include a number of embodiments, step combinations features, options, and alternative embodiments of the method. The method may also be executed as a magnetic medium in which a program for performing the method steps is implemented. The method may include providing an object-oriented framework of how to access and preserve data through transaction processing support of the database manager. In addition, it provides a version of an object-oriented framework that substantially matches the standards-based server-side component model and the remote invocation protocol. Examples of standards-based server-side component models and remote invocation protocols include Enterprise JavaBeans (EJB), Distributed Common Object Model (DCOM), and COBRA. The method of convening a transaction may further include accepting or buffering the intended transaction-related activity into one or more databases. Such acceptance or buffering can occur simultaneously through standard conforming versions of object-oriented frameworks and object-oriented frameworks. One feature of this embodiment may include buffering the object, and in the direction of committing the transaction, the method further includes calling a database manager to process the transaction. Such features include accepting transaction-related activity by mechanisms other than the database manager. This feature of the invention can be implemented with any of the standards mentioned above including JEB, DCOM and COBRA.

본 발명의 부가적인 실시예는 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 트랜잭션 소집 방법이 처리되는 것이다. 위에서와 같이, 본 방법은 또한 상기 방법을 실행하는 프로그램을 포함하는 방법, 디바이스 또는 자기 매체로서 실행될 수 있다. 본 실시예의 택일적인 방법은 전술한 소집 방법에서 매우 밀접한 변형이다. 일 변형은 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 보유하는 방법의 객체-지향 프레임워크를 제공하는 것을 포함한다. 본 방법은 EJB 표준-합치 처리 및 호출에 적응된 객체-지향 프레임워크의 버전을 제공하는 것을 부가적으로 포함한다. 본 방법은 또한 객체-지향 프레임워크 및 상기 프레임워크의 EJB-표준 합치 버젼을 통해 동시에 하나 이상의 데이터베이스로 유도된 트랜잭션-관련 활동성을 수용하는 것을 포함한다. 본 실시예의 2가지 다른 변형에서, 객체-지향 프레임워크는 DCOM 명세와 합치하여, 또는 COBRA에 적응된다. 임의의 이러한 변형에서, 수용하는 스태프(accepting staff)는 객체를 버퍼링하는 것을 포함할 수 있고, 트랜잭션을 커미트하는 방향에서, 트랜잭션을 처리하기 위해 데이터베이스 관리자를 호출하는 것을 포함한다.An additional embodiment of the present invention is that the transaction convocation method is handled by at least one database manager that supports transaction processing. As above, the method may also be implemented as a method, device or magnetic medium containing a program for executing the method. The alternative method of this embodiment is a very close variant of the above-mentioned convocation method. One variation includes providing an object-oriented framework of how to access and retain data through the database manager's transaction processing support. The method additionally includes providing a version of the object-oriented framework adapted to EJB standard-matching processing and invocation. The method also includes accepting transaction-related activity directed to one or more databases simultaneously through an object-oriented framework and an EJB-standard compliant version of the framework. In two other variations of this embodiment, the object-oriented framework is adapted to COBRA or in line with the DCOM specification. In any such variant, the accepting staff may include buffering the object, and invoking the database manager to process the transaction, in the direction of committing the transaction.

다른 실시예는 적어도 하나의 데이터베이스 관리자에 의해 처리된 데이터를 보존하는 방법이다. 위에서와 같이, 본 방법은 본 방법을 실행하는 프로그램을 포함하는 방법, 디바이스 또는 자기 매체로서 실행될 수 있다. 데이터를 보존하는 본 방법은 데이터베이스 관리자를 통해 데이터를 액세스하고 보존하는 방법의 객체-지향 프레임워크로 제공하는 것을 포함한다. 본 방법은 또한 데이터베이스 관리자를 통해 데이터를 액세스하고 보유하는 방법으로의 표준-합치 인터페이스를 제공하는 것을 포함한다. 이러한 표준-합치 인터페이스는 EJB, DCOM 또는 COBRA와 합치할 수 있다. 본 방법은 또한 객체-지향 프레임워크 및 표준 합치 인터페이스를 통해 동시에 하나 이상의 데이터베이스로 의도된 객체 액세스 및 지속성 요구를 포함한다. 표준이 EJB일 때, 객체 요구는 객체-지향 프레임워크와 EJB 표준-합치 인터페이스 모두에 의해 자바 트랜잭션 서비스에 제공될 수 있다.Another embodiment is a method of preserving data processed by at least one database administrator. As above, the method can be implemented as a method, device or magnetic medium containing a program for executing the method. The present method of preserving data includes providing it with an object-oriented framework of a method of accessing and preserving data through a database manager. The method also includes providing a standard-consistent interface to a method of accessing and retaining data through a database manager. This standard-matching interface can match EJB, DCOM or COBRA. The method also includes intended object access and persistence requests to one or more databases simultaneously through an object-oriented framework and standard conformance interface. When the standard is an EJB, object requests can be provided to Java transaction services by both an object-oriented framework and an EJB standard-matching interface.

임의의 이전의 실시예에 적용할 수 있는 본 발명의 특징은 객체-지향 프레임워크가 데이터베이스에 지속성 미세-소단위 객체(persisting fine-grained object)에 적응되도록 하는 것이다. EJB 표준-합치 인터페이스를 포함하여, 표준-합치 인터페이스는 하나 이상의 데이터베이스로의 트랜잭션 내의 지속성 객체(persisting object)에 적응된다.A feature of the invention that can be applied to any previous embodiment is that the object-oriented framework is adapted to persistent fine-grained objects in the database. Standard-matching interfaces, including EJB standard-matching interfaces, are adapted to persistent objects in a transaction to one or more databases.

본 발명의 또 다른 실시예는 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 트랜잭션 소집 방법이 처리된다는 것이다. 위에서와 같이, 본 방법은 또한 본 방법을 실행하는 프로그램을 포함하는 방법, 디바이스 또는 자기 매체로서 실행될 수 있다. 본 방법은 부가적인 기능을 수행하고 데이터 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 보존하는 방법의 객체-지향 프레임워크를 제공하는 것을 포함한다. 부가적인 기능은 생산 시스템에 부가하여, 그리고 테스트를 위해 객체를 스테이징하는 것일 수 있다. 또는, 본 특징은 필드를 범용화하기 위해 객체 내에 필드를 동적으로 배열하는 것일 수 있다. 이러한 부가적인 기능은 쌍으로 또는 모두 함께 조합될 수 있다. 트랜잭션을 소집하는 방법은 또한, 표준-기반 서버-측 컴포넌트 모델과 원격 메소드 호출 프로토콜과 실질적으로 합치되는 객체-지향 프레임워크 버전을 부가적으로 제공하는 것을 포함하는데, 상기 버젼은 또한 위에서 언급된 하나 이상의 부가적인 기능을 포함한다. 별도의 실시예는 부가적인 기능 각각을 개별적으로, 부가적인 기능 쌍의 조합을, 그리고 3개의 부가적인 기능 모두를 포함한다. 트랜잭션을 조립하는 이러한 방법이 따르는 표준은 EJB, DCOM 또는 COBRA일 수 있다.Yet another embodiment of the present invention is that the transaction convocation method is handled by at least one database manager that supports transaction processing. As above, the method may also be implemented as a method, device or magnetic medium containing a program for executing the method. The method includes providing an object-oriented framework of how to perform additional functions and access and preserve data through transaction processing support of the data manager. An additional function may be to stage the object in addition to the production system and for testing. Alternatively, the feature may be to dynamically arrange the fields within the object to generalize the fields. These additional functions may be combined in pairs or all together. The method of convening a transaction also includes additionally providing an object-oriented framework version that substantially matches the standards-based server-side component model and the remote method invocation protocol, which version is also the one mentioned above. The above additional functions are included. A separate embodiment includes each of the additional functions individually, a combination of additional function pairs, and all three additional functions. The standard followed by this method of assembling transactions can be EJB, DCOM or COBRA.

본 발명의 상이한 실시예는 수평으로 분할되는 다중-티어 비지니스 애플리케이션과 데이터베이스를 생성하는 방법이다. 위에서와 같이, 본 방법은 본 방법을 실행하는 프로그램을 포함하는 방법, 디바이스 또는 자기 매체로서 실행될 수 있다. 본 방법은 객체-지향 애플리케이션 디자인의 동작을 특정하고 객체와 관계를 모델링하는 것을 포함하는데, 여기에서 객체의 특성은 다중 데이터베이스를 따라 객체를 수평으로 분할할지를 포함한다. 본 접근방법은 객체들 또는 객체 그룹들 중 어느 하나에 적용될 수 있다. 객체 그룹은 단일 논리적 이름으로 표현될 수 있다. 본 방법은 또한 특성을 포함하여, 모델에 상응하는 머신-판독가능한 데이터를 생성하는 것을 포함한다. 본 머신-판독가능한 데이터는, XML 명세에서와 같이, 단지 머신만이-판독가능할 수도 있고, 사람이 판독가능할 수 있다. 본 방법은 또한 머신 판독가능한 데이터를 사용하여 다수의 데이터베이스에 모델을 매핑하는 것과 부가적으로 머신-판독가능한 데이터로부터, 그리고 매핑으로부터 애플리케이션 개발 코드를 생성하는 것을 포함한다. 애플리케이션 개발 코드는 다수의 데이터베이스를 따라 객체를 유지하고 액세스하기 위해 코드를 포함한다. 객체를 유지하고 액세스하는 코드는 데이터베이스 티어 이상의 미들 프로그램 티어의 일부이다. 본 발명의 추가적인 특징은 객체를 유지하고 액세스하는 코드가 다수의 독립적인 데이터베이스를 호출할 수 있다는 것이다. 이러한 독립적인 데이터베이스는 상이한 데이터베이스 공급자에 의해 제공될 수 있고, 또는 단일 데이터베이스 공급자에 의해 공급되어 독립적으로 동작할 수 있다. 본 실시예의 추가적인 특징은 객체가 분할되는 다수의 데이터베이스를 선언하고, 객체 또는 객체들 그룹을 특정 데이터베이스로 분할하기 위해 사용되도록 하나 이상의 필드를 선언하는 것을 포함한다.A different embodiment of the present invention is a method for creating a multi-tier business application and database that is horizontally partitioned. As above, the method can be implemented as a method, device or magnetic medium containing a program for executing the method. The method involves specifying the behavior of an object-oriented application design and modeling objects and relationships, where the properties of the object include whether to split the object horizontally along multiple databases. This approach can be applied to any of the objects or groups of objects. Object groups can be represented by a single logical name. The method also includes generating machine-readable data corresponding to the model, including the characteristics. The present machine-readable data may be only machine-readable and human readable, as in the XML specification. The method also includes mapping the model to multiple databases using machine readable data and additionally generating application development code from and from the machine-readable data. Application development code includes code for maintaining and accessing objects along multiple databases. Code that maintains and accesses objects is part of the middle program tier beyond the database tier. An additional feature of the present invention is that code that maintains and accesses objects can invoke multiple independent databases. Such independent databases may be provided by different database providers, or may be supplied by a single database provider and operate independently. Additional features of this embodiment include declaring multiple databases into which the object is partitioned, and declaring one or more fields to be used to partition the object or group of objects into a particular database.

본 발명의 또 다른 실시예는 적어도 데이터베이스 티어 및 미들 비지니스 애플리케이션 티어를 포함하는 다중-티어 비지니스 애플리케이션에서, 다중 독립 데이터베이스를 따라 객체를 수평으로 분할하는 것을 실행하는 방법이다. 위에서와 같이, 본 방법은 또한 본 방법을 실행하는 프로그램을 포함하는 방법, 디바이스 또는 자기 매체로서 실행될 수 있다. 본 실시예는 특정 데이터베이스에 특정 객체를 할당하도록 사용될 수 있는 적어도 하나의 수평으로 분할된 객체에서 하나 이상의 필드를 선언하는 것을 포함한다. 이는, 연결이 수평으로 분할된 객체가 속하는 모든 데이터베이스에서 만들어질 필요는 없지만, 수평으로 분할된 객체가 속하는 다수의 데이터베이스와의 연결을 만드는 것을 포함한다. 연결을 만들기 이전 또는 이후에, 본 방법은 수평으로 분할된 객체를 포함하여, 검색(find)하거나, 생성(create)하거나, 검색 또는 생성할 하나 이상의 객체를 버퍼링하는 것을 포함한다. 상기 검색이나 생성을 진행하는 도중에, 객체가 속한 특정 데이터베이스를 분석하는 것은 검색 또는 생성을 수행하기 위해 데이터베이스 티어 내의 특정 데이터베이스를 호출하고 선언된 필드를 사용한다. 유사한 실시예는 적어도 하나의 수평으로 분할된 객체가 속할 수 있는 다수의 데이터베이스와의 연결을 만드는 것을 포함하여, 다중 독립 데이터베이스에 따른 객체 수평 분할을 실행하는 방법이다. 나아가. 수평으로 분할된 객체가 속한 특정 데이터베이스를 설정하거나 식별한다. 결정 단계 이전이나 이후에, 수평으로 분할된 객체를 포함하여, 검색하거나, 생성하거나 또는 검색 또는 생성하기 위해 하나 이상의 객체를 버퍼링한다. 검색이나 생성을 진행하는 도중에, 검색이나 생성을 수행하기 위해 데이터베이스 티어 내의 특정 데이터베이스를 호출한다. 수평으로 분할된 객체가 속할 수 있는 다수의 데이터베이스는 단일 논리적 이름으로써 집합적으로 지칭될 수 있다. 다수의 데이터베이스 사이의 특정 데이터베이스는 하나 이상의 수평으로 분할된 객체 속성들을 이용하여 논리적으로 대응된다. 이러한 속성들은 수평으로 분할된 객체의 필드일 수 있다.Yet another embodiment of the present invention is a method for executing horizontal partitioning of objects along multiple independent databases in a multi-tier business application, including at least a database tier and a middle business application tier. As above, the method may also be implemented as a method, device or magnetic medium containing a program for executing the method. This embodiment includes declaring one or more fields in at least one horizontally partitioned object that can be used to assign a particular object to a particular database. This does not need to be made in every database to which the horizontally partitioned object belongs, but involves creating a connection to multiple databases to which the horizontally partitioned object belongs. Before or after making the connection, the method includes buffering one or more objects to find, create, retrieve, or create, including the horizontally divided objects. During the search or creation process, analyzing a specific database to which the object belongs calls a specific database in the database tier and uses the declared fields to perform the search or creation. A similar embodiment is a method of performing object horizontal partitioning according to multiple independent databases, including making a connection with multiple databases to which at least one horizontally partitioned object can belong. Furthermore. Sets or identifies the specific database to which the horizontally partitioned object belongs Before or after the decision step, buffer one or more objects to retrieve, create or retrieve or create, including the horizontally divided objects. During a search or creation process, a specific database in the database tier is called to perform a search or creation. Multiple databases to which horizontally partitioned objects can belong may be referred to collectively as a single logical name. A particular database between multiple databases is logically mapped using one or more horizontally partitioned object attributes. These attributes may be fields of the horizontally divided object.

본 발명이 이상 설명한 바와 같이 바람직한 실시예와 예를 참조하여 개시되었지만, 이러한 예들은 제한적인 의미라기보다 예시적인 것으로 의도된 것으로 이해되어야 한다. 컴퓨터-보조 처리는 설명된 실시예에 포함된다. 따라서, 본 발명은 컴퓨터-보조 처리를 위한 방법으로 구현될 수 있고, 시스템은 방법을 실행하는 로직, 방법을 수행할 로직이 구현된 매체, 방법을 수행하기 위한 로직이 구현된 데이터 스트림, 또는 컴퓨터-액세스가능한 처리 서비스를 포함한다. 본 발명의 범위 내에서 다양한 변형과 조합이 이루어질 수 있지만, 이러한 변형과 조합이 청구범위에 의해 정해지는 본 발명의 범위 내에 있다는 것은 당업자에게 자명할 것이다.Although the present invention has been described with reference to preferred embodiments and examples as described above, it should be understood that these examples are intended to be illustrative rather than restrictive. Computer-assisted processing is included in the described embodiments. Thus, the invention may be implemented in a method for computer-assisted processing, the system comprising logic to execute the method, a medium on which logic to perform the method, a data stream on which logic to perform the method, or a computer Include accessible processing services. Various modifications and combinations may be made within the scope of the invention, but it will be apparent to those skilled in the art that such modifications and combinations are within the scope of the invention as defined by the claims.

Claims (46)

다중-티어 캡슐화된 비지니스 애플리케이션을 위한 애플리케이션 개발 코드를 생성하는 방법으로서,A method of generating application development code for a multi-tier encapsulated business application. 객체들과 관계들을 시각적으로 모델링하고 객체-지향 애플리케이션 디자인의 동작들을 특정하는 단계로서, 상기 객체들, 관계들 및/또는 동작들의 특성들은 상기 모델링된 객체에 대한 인터페이스를 생성할지를 지시하는 제 1 특성과 특정된 동작으로의 로컬 및/또는 원격 인터페이스들을 생성할지를 지시하는 제 2 특성을 포함하는 단계;Visually modeling objects and relationships and specifying operations of an object-oriented application design, wherein the properties of the objects, relationships, and / or actions indicate a first property indicating whether to create an interface to the modeled object And a second characteristic indicating whether to generate local and / or remote interfaces to the specified operation; 상기 특성들을 포함하여, 상기 시각적 모델에 상응하는 머신 판독가능한 데이터를 생성하는 단계;Generating machine readable data corresponding to the visual model, including the characteristics; 상기 머신 판독가능한 데이터를 사용하여, 상기 시각적 모델을 데이터베이스에 매핑하는 단계; 및Using the machine readable data, mapping the visual model to a database; And 상기 매핑과 상기 머신 판독가능한 데이터로부터 애플리케이션 개발 코드를 부가적으로 생성하는 단계로서, 상기 데이터베이스 내의 상기 모델링된 객체들을 유지하고 액세스하는 코드와, 상기 제 1 특성과 일관되고 상기 객체들을 유지하고 액세스하는 상기 코드에 대한 인터페이스들과, 상기 제 2 특성과 일관되고 상기 특정된 동작들에 대한 인터페이스들을 포함하는 단계를 포함하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.Additionally generating application development code from the mapping and the machine readable data, the code for maintaining and accessing the modeled objects in the database, and for maintaining and accessing the objects consistent with the first property. And including interfaces to the code and interfaces to the specified operations that are consistent with the second characteristic. 제 1항에 있어서, 상기 애플리케이션 개발 코드는 Enterprise JavaBeans(EJB) 표준 2.0 이상의 버전을 실질적으로 따르는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.2. The method of claim 1 wherein the application development code substantially conforms to a version of Enterprise JavaBeans (EJB) standard 2.0 or later. 제 2항에 있어서, 상기 객체들을 유지하고 액세스하는 코드는 Bean Managed Persistenc(BMP) 프로토콜을 실질적으로 따르는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.3. The method of claim 2 wherein the code for maintaining and accessing objects substantially conforms to a Bean Managed Persistenc (BMP) protocol. 제 1항에 있어서, 상기 애플리케이션 개발 코드는 a,NET 프레임워크 명세를 실질적으로 따르는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.2. The method of claim 1 wherein said application development code substantially conforms to a, NET framework specification. 제 1항에 있어서, 상기 객체-지향 애플리케이션 디자인은 통일된 모델링 언어(UML) 표준을 실질적으로 따르는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.2. The method of claim 1 wherein the object-oriented application design substantially conforms to a unified modeling language (UML) standard. 제 1항에 있어서, 상기 특성들은 상기 매핑 단계를 제어하는 관계들과 다수의 객체들의 제 3 특성들을 추가로 포함하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.The method of claim 1, wherein the properties further comprise third properties of a plurality of objects and relationships that control the mapping step. 제 6항에 있어서, 상기 매핑 단계를 제어하는 상기 제 3 특성들은 상기 모델링된 객체의 배치의 스테이징을 지원할지를 포함하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.7. The method of claim 6 wherein the third properties controlling the mapping step include whether to support staging of the placement of the modeled object. 제 7항에 있어서, 상기 매핑 단계를 제어하는 상기 제 3 특성들은 상기 모델링된 객체의 배치 변화 히스토리를 기록할지를 추가로 포함하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.8. The method of claim 7, wherein the third properties controlling the mapping step further comprise whether to record a history of placement changes of the modeled object. 제 1항에 있어서, 상기 객체들의 특성들은 상기 필드들을 범용화하기 위해 상기 모델링된 객체 내의 하나 이상의 필드들을 동적으로 배열할지를 지시하는 하나 이상의 제 4 특성들을 추가로 포함하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.2. The application development code generation of claim 1 wherein the properties of the objects further comprise one or more fourth properties that indicate whether to dynamically arrange one or more fields in the modeled object to generalize the fields. Way. 제 9항에 있어서, 상기 객체들을 보유하고 액세스하는 코드는 특정된 언어에 기반하여 상기 동적 어레이 중에서 어느 엘리먼트를 검색해야 할지를 분석하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.10. The method of claim 9 wherein the code holding and accessing the objects analyzes which element of the dynamic array to retrieve based on a specified language. 제 1항에 있어서, 사용자가 생성할 것을 특정하고, 상기 머신 판독가능한 데이터, 매핑 및 부가적인 생성 단계는 상기 사용자에 의한 추가적인 액션들을 요구하지 않고서 진행하는 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.The method of claim 1, wherein the user specifies to generate, and wherein the machine readable data, mapping, and additional generating step proceed without requiring additional actions by the user. 제 1항에 있어서, 상기 데이터베이스는 관계형 데이터베이스인 것을 특징으로 하는 애플리케이션 개발 코드 생성 방법.2. The method of claim 1 wherein the database is a relational database. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining data through transaction processing support of the database manager; 표준-기반 서버-측 컴포넌트 모델과 원격 메소드 호출 프로토콜을 실질적으로 따르는 상기 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계;Additionally providing a version of the object-oriented framework that substantially conforms to a standards-based server-side component model and a remote method invocation protocol; 상기 객체-지향 프레임워크와 상기 객체-지향 프레임워크의 표준 합치 버전을 통해 하나 이상의 데이터베이스들로 동시에 지향된 트랜잭션-관련 활동성을 수용하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Accepting transaction-related activity directed simultaneously to one or more databases through the standard conforming version of the object-oriented framework and the object-oriented framework. 제 13항에 있어서, 상기 표준은 Enterprise JavaBeans(EJB)인 것을 특징으로 하는 트랜잭션 소집 방법.14. The method of claim 13, wherein said standard is Enterprise JavaBeans (EJB). 제 13항에 있어서, 상기 표준은 분산형 공통 객체 모델(distributed common object model, DCOM)인 것을 특징으로 하는 트랜잭션 소집 방법.14. The method of claim 13, wherein said standard is a distributed common object model (DCOM). 제 13항에 있어서, 상기 표준은 CORBA인 것을 특징으로 하는 트랜잭션 소집 방법.The method of claim 13, wherein said standard is CORBA. 제 14항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션의 커미팅(committing) 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 추가로 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.15. The transaction of claim 14, wherein the accepting step comprises buffering objects, and further comprising invoking the database manager to process the transaction during the committing of the transaction. Convocation method. 제 15항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션의 커미팅 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 추가로 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.16. The method of claim 15, wherein the accepting step comprises buffering objects, and further comprising invoking the database manager to process the transaction during the committing of the transaction. 제 16항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션의 커미팅 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 추가로 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.17. The method of claim 16, wherein the accepting step includes buffering objects, and further comprising invoking the database manager to process the transaction during the committing of the transaction. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining data through transaction processing support of the database manager; EJB 표준-합치 핸들링 및 호출에 적응된 상기 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계;Additionally providing a version of the object-oriented framework adapted to EJB standard-matching handling and invocation; 상기 객체-지향 프레임워크 및 상기 객체-지향 프레임워크의 EJB-표준 합치 버전을 통해 하나 이상의 데이터베이스들로 동시에 지향된 트랜잭션-관련 활동성을 수용하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Accepting transaction-related activity directed simultaneously to one or more databases through the object-oriented framework and the EJB-standard compliant version of the object-oriented framework. 제 20항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션을 커미팅하는 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 추가로 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.21. The method of claim 20, wherein said accepting step comprises buffering objects, and further comprising invoking said database manager to process said transaction while committing said transaction. . 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining data through transaction processing support of the database manager; DCOM 명세-합치 핸들링 및 호출에 적응된 상기 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계;Additionally providing a version of the object-oriented framework adapted to DCOM specification-match handling and invocation; 상기 객체-지향 프레임워크 및 상기 객체-지향 프레임워크의 DCOM 명세-합치 버전을 통해 하나 이상의 데이터베이스들로 동시에 지향된 트랜잭션-관련 활동성을 수용하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Accepting transaction-related activity directed simultaneously to one or more databases through the object-oriented framework and the DCOM specification-consistent version of the object-oriented framework. 제 22항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션을 커미팅하는 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.23. The method of claim 22, wherein the accepting step comprises buffering objects, and during committing the transaction, calling the database manager to process the transaction. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining data through transaction processing support of the database manager; CORBA-합치 핸들링 및 호출에 적응된 상기 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계;Additionally providing a version of the object-oriented framework adapted to CORBA-matching handling and invocation; 상기 객체-지향 프레임워크 및 상기 객체-지향 프레임워크의 CORBA-합치 버전을 통해 하나 이상의 데이터베이스들로 동시에 지향된 트랜잭션-관련 활동성을 수용하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Accepting transaction-related activity directed simultaneously to one or more databases via the object-oriented framework and a CORBA-consistent version of the object-oriented framework. 제 24항에 있어서, 상기 수용 단계는 객체들을 버퍼링하는 것을 포함하고, 상기 트랜잭션을 커미팅하는 도중에, 상기 트랜잭션을 처리하기 위해 상기 데이터베이스 관리자를 호출하는 것을 추가로 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.25. The method of claim 24, wherein the accepting step comprises buffering objects, and further comprising invoking the database manager to process the transaction while committing the transaction. . 적어도 하나의 데이터베이스 관리자에 의해 처리된 데이터를 유지하는 방법으로서,A method of maintaining data processed by at least one database manager, comprising: 상기 데이터베이스 관리자를 통해 데이터를 액세스하고 유지하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining data through the database manager; 상기 데이터베이스 관리자를 통해 데이터를 액세스하고 유지하는 메소드들로의 EJB 표준-합치 인터페이스들을 제공하는 단계; 및Providing EJB standard-matching interfaces to methods for accessing and maintaining data through the database manager; And 상기 객체-지향 프레임워크 및 상기 EJB-표준 합치 인터페이스들을 통해 하나 이상의 데이터베이스들로 동시에 지향된 객체 액세스 및 지속성 요구들을 수용하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Accommodating object access and persistence requests directed simultaneously to one or more databases via the object-oriented framework and the EJB-standard conforming interfaces. 제 26항에 있어서, 상기 객체 요구들은, 상기 요구들이 상기 객체-지향 프레임워크 또는 상기 EJB 표준-합치 인터페이스들을 통해 이루어지는 지에 관계없이, 자바 트랜잭션 서비스들 엔진에 제공되는 것을 특징으로 하는 트랜잭션 소집 방법.27. The method of claim 26, wherein the object requests are provided to a Java transaction services engine, regardless of whether the requests are made through the object-oriented framework or the EJB standard-matching interfaces. 제 26항에 있어서, 상기 EJB 표준-합치 인터페이스들이 없는 상기 객체-지향 프레임워크는 미세-요소 객체들을 유지하는데 적응되고, 상기 EJB 표준-합치 인터페이스들은 하나 이상의 데이터베이스로의 트랜잭션에서 객체들을 유지하는데 적응되는 것을 특징으로 하는 트랜잭션 소집 방법.27. The method of claim 26, wherein the object-oriented framework without the EJB standard-matching interfaces is adapted to maintain micro-element objects, and the EJB standard-matching interfaces are adapted to maintaining objects in a transaction to one or more databases. Transaction convocation method, characterized in that. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 매니저에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하며, 생산 시스템에의 부가 및 테스트를 위해 객체들을 스테이징하는 메소드들의 객체-지향 프레임워크를 제공하는 단계; 및Providing an object-oriented framework of methods to access and maintain data through transaction processing support of the database manager and to stage objects for addition and testing to a production system; And 표준-기반 서브-측면 컴포넌트 모델 및 원격 메소드 호출 프로토콜과 실질적으로 합치되는 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계로서, 상기 버전은 객체들의 스테이징을 포함하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Additionally providing a version of the object-oriented framework that substantially conforms to the standards-based sub-side component model and the remote method invocation protocol, wherein the version includes staging of objects. How to call a transaction. 제 29항에 있어서, 상기 표준은 Enterprise JavaBeans(EJB)인 것을 특징으로 하는 트랜잭션 소집 방법.30. The method of claim 29, wherein said standard is Enterprise JavaBeans (EJB). 제 29항에 있어서, 상기 표준은 분산형 공통 객체 모델(DCOM)인 것을 특징으로 하는 트랜잭션 소집 방법.30. The method of claim 29, wherein said standard is a distributed common object model (DCOM). 제 29항에 있어서, 상기 표준은 CORBA인 것을 특징으로 하는 트랜잭션 소집 방법.30. The method of claim 29, wherein said standard is CORBA. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 액세스하고 유지하며, 생산 시스템에서 객체의 변화 히스토리를 추적하는 메소드들의 객체-지향 프레임워크를 제공하는 단계;Providing an object-oriented framework of methods for accessing and maintaining through transaction processing support of the database manager and for tracking the history of changes in objects in a production system; 표준-기반 서브-측면 컴포넌트 모델 및 원격 메소드 호출 프로토콜과 실질적으로 합치되는 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계로서, 상기 버전은 상기 변화 히스토리의 추적을 포함하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Additionally providing a version of an object-oriented framework that substantially conforms to a standards-based sub-side component model and a remote method invocation protocol, the version comprising tracking the change history. Characterized by a transaction convocation method. 제 33항에 있어서, 상기 표준은 Enterprise JavaBeans(EJB)인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is Enterprise JavaBeans (EJB). 제 33항에 있어서, 상기 표준은 분산형 공통 객체 모델(DCOM)인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is a distributed common object model (DCOM). 제 33항에 있어서, 상기 표준은 CORBA인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is CORBA. 트랜잭션 처리를 지원하는 적어도 하나의 데이터베이스 관리자에 의해 처리될 트랜잭션들을 소집하는 방법으로서,A method of assembling transactions to be processed by at least one database manager that supports transaction processing, the method comprising: 상기 데이터베이스 관리자의 트랜잭션 처리 지원을 통해 데이터를 액세스하고 유지하며, 상기 필드들을 범용화기 위해 객체 내의 필드들을 동적으로 배열하는 메소드들의 객체-지향 프레임워크를 제공하는 단계; 및Providing an object-oriented framework of methods to access and maintain data through the database manager's transaction processing support and to dynamically arrange the fields in an object to generalize the fields; And 표준-기반 서버-측 컴포넌트 모델 및 원격 메소드 호출 프로토콜을 실질적으로 따르는 상기 객체-지향 프레임워크의 버전을 부가적으로 제공하는 단계로서, 상기 버전은 상기 필드들을 범용화하기 위해 상기 필드들의 동적 배열을 포함하는 단계를 포함하는 것을 특징으로 하는 트랜잭션 소집 방법.Additionally providing a version of the object-oriented framework that substantially conforms to a standards-based server-side component model and a remote method invocation protocol, the version including a dynamic arrangement of the fields to generalize the fields. Transaction convocation method comprising the step of. 제 33항에 있어서, 상기 표준은 Enterprise JavaBeans(EJB)인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is Enterprise JavaBeans (EJB). 제 33항에 있어서, 상기 표준은 분산형 공통 객체 모델(DCOM)인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is a distributed common object model (DCOM). 제 33항에 있어서, 상기 표준은 CORBA인 것을 특징으로 하는 트랜잭션 소집 방법.34. The method of claim 33, wherein said standard is CORBA. 수평으로 분할된 다중-티어 비지니스 애플리케이션에서 데이터베이스를 생성하는 방법으로서,A method for creating a database in a horizontally partitioned multi-tier business application. 객체들과 관계들을 모델링하고 객체-지향 애플리케이션 디자인의 동작들을 특정하는 단계로서, 상기 객체들의 특성들은 다중 데이터베이스들에 따른 객체들을 수평으로 분할할지를 포함하는 단계;Modeling objects and relationships and specifying operations of object-oriented application design, the properties of the objects including whether to horizontally partition objects according to multiple databases; 상기 특성들을 포함하여, 상기 모델에 상응하는 머신 판독가능한 데이터를 생성하는 단계;Generating machine readable data corresponding to the model, including the characteristics; 상기 머신 판독가능한 데이터를 사용하여, 다수의 데이터베이스들에 상기 모델을 매핑하는 단계; 및Using the machine readable data, mapping the model to a plurality of databases; And 상기 다수의 데이터베이스들에 따라 상기 객체들을 유지하고 액세스하는 코드를 포함하여, 상기 매핑과 상기 머신 판독가능한 데이터로부터 애플리케이션 개발 코드를 부가적으로 생성하는 단계로서, 상기 객체들을 유지하고 액세스하는 코드는 데이터베이스 티어 이상의 미들 프로그램 티어인 단계를 포함하는 것을 특징으로 하는 데이터베이스 생성 방법.Additionally generating application development code from the mapping and the machine readable data, including code to maintain and access the objects in accordance with the plurality of databases, wherein the code to maintain and access the objects is a database. And a middle program tier of a tier or more. 제 41항에 있어서, 상기 객체가 분할되는 다수의 데이터베이스들을 선언하고, 상기 다수의 데이터베이스들 사이의 특정 데이터베이스들로 상기 객체를 분할하기 위해 사용된 상기 객체의 하나 이상의 필드들을 선언하는 단계를 추가로 포함하는 것을 특징으로 하는 데이터베이스 생성 방법.42. The method of claim 41, further comprising: declaring a plurality of databases into which the object is partitioned, and declaring one or more fields of the object used to partition the object into specific databases among the plurality of databases. Database generation method comprising the. 적어도 데이터베이스 티어 및 미들 비지니스 애플리케이션 티어를 포함하는 다중-티어 비지니스 애플리케이션에서, 다중 독립 데이터베이스들을 따른 객체들의 수평 분할을 실행하는 방법으로서,In a multi-tier business application comprising at least a database tier and a middle business application tier, a method of performing horizontal partitioning of objects along multiple independent databases, comprising: 특정 데이터베이스에 특정 객체를 할당하기 위해 사용될 수 있는 적어도 하나의 수평으로 분할된 객체에서 하나 이상의 필드들을 선언하는 단계;Declaring one or more fields in at least one horizontally partitioned object that can be used to assign a particular object to a particular database; 상기 수평으로 분할된 객체가 속할 수 있는 다수의 데이터베이스들과의 연결을 만드는 단계;Making a connection with a plurality of databases to which the horizontally divided object can belong; 상기 수평으로 분할된 객체를 포함하여, 검색하거나 생성하기 위해 하나 이상의 객체들을 버퍼링하는 단계; 및Buffering one or more objects to retrieve or create, including the horizontally divided object; And 상기 검색 또는 생성을 처리하는 도중에, 상기 선언된 필드들을 사용하여 상기 객체가 속하는 특정 데이터베이스를 분석하고, 상기 검색 또는 생성을 수행하기 위해 상기 데이터베이스 티어 내의 상기 특정 데이터베이스를 호출하는 단계를 포함하는 것을 특징으로 하는 객체 수평 분할 실행 방법.During processing of the search or generation, analyzing the specific database to which the object belongs using the declared fields and calling the specific database in the database tier to perform the search or generation. How to perform horizontal division of objects. 적어도 데이터베이스 티어 및 미들 비지니스 애플리케이션 티어를 포함하는 다중-티어 비지니스 애플리케이션에서, 다중 독립 데이터베이스들을 따라 객체들의 수평 분할을 실행하는 방법으로서,In a multi-tier business application comprising at least a database tier and a middle business application tier, a method of performing horizontal partitioning of objects along multiple independent databases, comprising: 적어도 하나의 수평으로 분할된 객체가 속할 수 있는 다수의 데이터베이스들과의 연결들을 만드는 단계;Making connections with a plurality of databases to which at least one horizontally divided object can belong; 상기 수평으로 분할된 객체가 속하는 특정 데이터베이스를 설정하는 단계;Setting a specific database to which the horizontally divided object belongs; 사기 수평으로 분할된 객체를 포함하여, 설정 단계 이전 또는 이후에, 검색하거나 생성할 하나 이상의 객체들을 버퍼링하는 단계; 및Buffering one or more objects to retrieve or create, including before or after the setting step, including a fraud horizontally divided object; And 상기 검색 또는 생성을 처리하는 도중에, 상기 검색 또는 생성을 수행하기 위해 상기 데이터베이스 티어 내의 특정한 데이터베이스를 호출하는 단계를 포함하는 것을 특징으로 하는 객체 수평 분할 실행 방법.In the course of processing the search or generation, calling a particular database in the database tier to perform the search or generation. 제 44항에 있어서, 상기 다수의 데이터베이스들은 단일 논리적 이름으로 집합적으로 지칭되고, 상기 다수의 데이터베이스들 사이의 특정한 데이터베이스들은 하나 이상의 부가적인 속성들에 논리적으로 매핑되는 것을 특징으로 하는 객체 수평 분할 실행 방법.45. The method of claim 44, wherein the plurality of databases are collectively referred to by a single logical name, and particular databases among the plurality of databases are logically mapped to one or more additional attributes. Way. 제 45항에 있어서, 상기 부가적인 속성들은 상기 수평으로 분할된 객체의 필드들인 것을 특징으로 하는 객체 수평 분할 실행 방법.46. The method of claim 45 wherein the additional attributes are fields of the horizontally segmented object.
KR1020057007438A 2002-10-28 2003-08-21 Transparent ejb support and horizontal data partitioning KR20050065638A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US28191402A 2002-10-28 2002-10-28
US10/281,914 2002-10-28

Publications (1)

Publication Number Publication Date
KR20050065638A true KR20050065638A (en) 2005-06-29

Family

ID=32228781

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007438A KR20050065638A (en) 2002-10-28 2003-08-21 Transparent ejb support and horizontal data partitioning

Country Status (6)

Country Link
EP (1) EP1579297A4 (en)
JP (1) JP2006504194A (en)
KR (1) KR20050065638A (en)
CN (3) CN101630331B (en)
AU (2) AU2003263943B2 (en)
WO (1) WO2004040399A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100945181B1 (en) * 2008-03-26 2010-03-03 한양대학교 산학협력단 Storage system, middle storage and data management method for data protection using file name
KR101470319B1 (en) * 2008-02-15 2014-12-08 삼성전자주식회사 Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using thereof
KR20210060689A (en) * 2019-11-18 2021-05-27 주식회사 오픈드래프트 Server side data component for support of development and management and method for perform the data component

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676791B2 (en) * 2004-07-09 2010-03-09 Microsoft Corporation Implementation of concurrent programs in object-oriented languages
US7890926B2 (en) * 2005-01-04 2011-02-15 Vaakya Technologies Private Limited System and method for application development and deployment
US8141032B2 (en) 2007-02-02 2012-03-20 Microsoft Corporation N-tiered applications support via common interface
US8396845B2 (en) * 2008-09-26 2013-03-12 Microsoft Corporation Data-tier application component
CN103186564A (en) * 2011-12-28 2013-07-03 深圳市金蝶中间件有限公司 Data object processing method and system
CN105827671A (en) * 2015-01-04 2016-08-03 深圳市领耀东方科技股份有限公司 System platform characterized by distributed use and centralized management and portal server
US9916373B2 (en) 2015-03-26 2018-03-13 Red Hat, Inc. Dynamic data partitioning extension
CN108287717B (en) * 2017-03-13 2021-03-09 平安科技(深圳)有限公司 Jar packet generation method and terminal
US11936739B2 (en) * 2019-09-12 2024-03-19 Oracle International Corporation Automated reset of session state
US11372675B2 (en) * 2020-06-15 2022-06-28 Bank Of America Corporation Jobs synchronize framework
WO2022010491A1 (en) * 2020-07-10 2022-01-13 Hewlett-Packard Development Company, L.P. Application version switching
WO2024039382A1 (en) * 2022-08-17 2024-02-22 Rakuten Mobile, Inc. Method and uniqueness constraint management server for managing uniqueness constraints associated with entities

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263342B1 (en) * 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6067548A (en) * 1998-07-16 2000-05-23 E Guanxi, Inc. Dynamic organization model and management computing system and method therefor
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6370541B1 (en) * 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US7404175B2 (en) * 2000-10-10 2008-07-22 Bea Systems, Inc. Smart generator
WO2001052054A2 (en) * 2000-01-14 2001-07-19 Saba Software, Inc. Method and apparatus for a business applications server
US6631519B1 (en) * 2000-03-30 2003-10-07 Microsoft Corporation Automated schema and interface generation
AU2001259107A1 (en) * 2000-04-21 2001-11-07 Togethersoft Corporation Methods and systems for supporting and deploying distributed computing components
AU2001286848A1 (en) * 2000-08-28 2002-03-13 Michael D. Harold System and method for transmitting and retrieving data via a distributed persistence framework
US20030018694A1 (en) * 2000-09-01 2003-01-23 Shuang Chen System, method, uses, products, program products, and business methods for distributed internet and distributed network services over multi-tiered networks
WO2002046916A2 (en) * 2000-10-20 2002-06-13 Polexis, Inc. Extensible information system (xis)
US20030212987A1 (en) * 2001-02-28 2003-11-13 Demuth Steven J. Client container for building EJB-hosted java applications
US6847974B2 (en) * 2001-03-26 2005-01-25 Us Search.Com Inc Method and apparatus for intelligent data assimilation
US7149730B2 (en) * 2002-05-03 2006-12-12 Ward Mullins Dynamic class inheritance and distributed caching with object relational mapping and cartesian model support in a database manipulation and mapping system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101470319B1 (en) * 2008-02-15 2014-12-08 삼성전자주식회사 Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using thereof
KR100945181B1 (en) * 2008-03-26 2010-03-03 한양대학교 산학협력단 Storage system, middle storage and data management method for data protection using file name
KR20210060689A (en) * 2019-11-18 2021-05-27 주식회사 오픈드래프트 Server side data component for support of development and management and method for perform the data component

Also Published As

Publication number Publication date
JP2006504194A (en) 2006-02-02
WO2004040399A2 (en) 2004-05-13
CN101630259B (en) 2016-09-14
CN101630331B (en) 2011-04-06
AU2003263943B2 (en) 2010-01-21
AU2003263943A1 (en) 2004-05-25
CN101630259A (en) 2010-01-20
EP1579297A4 (en) 2008-07-02
EP1579297A2 (en) 2005-09-28
CN1729448A (en) 2006-02-01
WO2004040399A3 (en) 2005-09-29
CN100552625C (en) 2009-10-21
AU2010201505A1 (en) 2010-05-06
CN101630331A (en) 2010-01-20

Similar Documents

Publication Publication Date Title
AU2010201505A1 (en) Transparent EJB support and horizontal data partitioning
US6243709B1 (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6985912B2 (en) Dynamic object-driven database manipulation and mapping system having a simple global interface and an optional multiple user need only caching system with disable and notify features
US6366921B1 (en) System and method for data manipulation in a dynamic object-based format
US8095823B2 (en) Server computer component
US20070016595A1 (en) Session bean implementation of a system, method and software for creating or maintaining distributed transparent persistence of complex data objects and their data relationships
US20030208505A1 (en) Dynamic class inheritance and distributed caching with object relational mapping and cartesian model support in a database manipulation and mapping system
WO2003010691A1 (en) Method for creating distributed transparent persistence of complex data object
US20100198844A1 (en) Automatic Code Generation
US7451434B1 (en) Programming with shared objects in a shared memory
US8738746B2 (en) Configuration management for real-time server
Keith et al. Pro JPA 2
WO2004107162A1 (en) Dynamic object-driven database manipulation and mapping system
EP1040432B1 (en) Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
Mak et al. Hibernate Recipes: A Problem-Solution Approach
Chapeland et al. The ALICE-LHC online data quality monitoring framework
Goncalves et al. Java persistence API
Bai JDBC API and JDBC Drivers
Bai JDBC API and JDBC Drivers
Alia et al. A middleware framework for the persistence and querying of java objects
Wetherbee et al. Entities and the Java Persistence API (JPA)
US20100023923A1 (en) Method for medeling objects in a hetrogenious computing environment
Kalapos Database synchronization between mobile devices and classical relational database management systems
Guide et al. v6. 0
Chapeland et al. The ALICE-LHC online data quality monitoring framework

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application