CMS 개체의 개체 캐시에서 작업 중입니다. 나는 제품과 자식 객체 (옵션과 속성) 사이에 부모/자식 관계를 유지할 필요가있다. 부모 (제품)는 첫 번째 코드 샘플에 나와 있습니다.어떻게이 알고리즘을 일반화 할 수 있습니까?
쉽게 할 수 있지만 제 2 코드 블록 (일반)과 같이 부모에게 자식을 할당하는 방법을 찾고 있습니다.
모든 CMS 개체가 CMSContent를 확장하므로 ProductID를 사용할 수 있습니다. 그러나 메소드 (예 : ProductAttribute)를 generic으로 만들어 메소드에 알고리즘을 넣고 부모 및 자식 객체로 메소드를 호출하여 속성을 할당 할 수있는 방법이 있습니까?
나는 Hibernate와 같은 ORM 프레임 워크가 여기에 적합하다는 것을 알고 있지만, 고정 된 데이터베이스 구조를 가지고 있기 때문에 적합하지 않을 것이다.
public class Product extends CMSContent {
private List<ProductAttribute> productAttributes;
private List<ProductOptions> productOptions;
// getters,setters
}
알고리즘을 일치시킵니다.
// attach Product Attributes to Product
for (Product p : listP) {
Map<String, Object> parameters = new HashMap<String, Object>();
for (ProductAttribute po : listPA) {
parameters.put("pid", p.getPid());
parameters.put("ref", po.getRid());
int i = jdbcTemplate.queryForInt(sqlAttr, parameters); // select count(*), 1 if matched.
if (i == 1) {
p.getProductAttributes().add(po); // generic field?
}
}
}
당신이 일반적인 방법 서명이처럼 보이는 어떤 구상 않습니다를 추가 할 수 있어야하지 않을까요? 이 알고리즘의 일반적인 부분이 무엇인지는 분명하지 않습니다. 항상 List와'Product'를 연결하는 것처럼 보입니다. –
하지만 ProductOption과 Product를 동일한 방식으로 연관시켜야합니다. 하지만 p.getProductAttributes()를 변경해야합니다. p.getProductOption(). add (po);에 add (po)를 추가합니다. 내가 할 수있을 때까지 나는 그것을 일반화 할 수 없다. – EdgeCase
제네릭이 이것을 해결할 도구라고 생각하지 않는다. –