시리얼라이즈 LOB(Serialized LOB) 패턴
시리얼라이즈 LOB 패턴의 정의
시리얼라이즈 LOB 패턴은 동기화된 개체들을 데이터베이스 필드에 저장된 단일 큰 개체 개체의 그래프를 저장한다.
그림 Ⅴ-27. 시리얼라이즈 LOB 패턴의 구조
시리얼라이즈 LOB 패턴의 설명
시리얼라이즈 LOB 패턴의 예제:XML에 있는 부서 계층을 시리얼라이즈
class Customer ...
private String name;
private List departments = new ArraryList();
class Department ...
private String name;
private List subsidaries = new ArraryList();
이 경우 데이터베이스는 한개 테이블만 가진다.
create table customers(ID int primary key, name varchar, departments varchar)
활동 레코드(Active Record) 패턴과 같이 고객 테이블은 다루어지고, 입력 행동을 가진 데이터 쓰기를 설명한다.
class Customer ...
public Long insert() {
PreparedStatment insertStatment = null;
try {
insertStatment = DB.prepare(insertStatementString);
setID(findNextDatabaseId();
insertStatment.setInt(1, getID().intValue());
insertStatment.setString(2, name);
insertStatment.setString(3, XmlStringer.write(deapertmentsToXmlElement());
insertStatment.execuete();
Registry.addCustomer(this);
return getID();
} catch(SQLException e) {
throw new ApplicationException(e);
} finally { DB.cleanUp(insertStatment);
}
}
public Element departmentsToXmlElement() {
Element root = new Element("departmentList");
Interator i = departments.iterator();
while (i.hasNext()) {
Department dept = (Department) i.next();
root.addContent(dep.toXmlElement());
}
return root;
}
class Department ...
Element toXmlElement() {
Element root = new Element("department");
root.setAttribute("name", name);
Interator i = subsidiaries.iterator();
while (i.hasNext()) {
Department dept = (Department) i.next();
root.addContent(dep.toXmlElement());
}
return root;
}
'Dev... > 소프트웨어 아키텍처' 카테고리의 다른 글
[SA강좌] Part 4-22 Metadata Mapping (0) | 2009.01.14 |
---|---|
[SA강좌] Part 4-21 Single Table Inheritance 패턴 (0) | 2009.01.14 |
[SA강좌] Part 4-19 Embedded Value 패턴 (0) | 2008.12.27 |
[SA강좌] Part 4-18 Dependent Mapping 패턴 (0) | 2008.12.27 |
[SA강좌] Part 4-17 Association Table Mapping 패턴 (0) | 2008.12.13 |