greenDAO 두 Entity 간에 관계 설정하기

프로그래밍/Android 2013. 9. 24. 21:35

greenDAO 두 Entity 간에 관계 설정하기


참조

http://greendao-orm.com/documentation/relations/


greenDAO 는 안드로이드에서 작동하는 ORM 툴로서 기본적으로 1:M 관계를 지원합니다.

A Entity 와 B Entity 사이에 1:M 관계를 Generator 에서 정의하는 것으로 두 Entity 간의 Relationship 에 관련된 불필요한 코딩 작업을 해결할 수 있습니다.


Company 와 Employer 의 관계 정의하기

// Company 엔티티 정의하기

Entity company = schema.addEntity( "Company");

company.addIdProperty();

company.addStringProperty( "name");


// Employer 엔티티 정의하기

Entity employer = schema.addEntity( "Employer");

employer.addIdProperty();

employer.addStringProperty( "name");

Property hireDate = employer.addDateProperty( "hireDate");

Property companyId = employer.addLongProperty( "companyId").notNull().getProperty();


// 두 엔티티 간에 관계 설정하기

employer.addToOne( company, companyId);


ToMany tomany = company.addToMany( employer, companyId);

tomany.setName( "employers");

tomany.orderAsc( hireDate);


위 코드에서 엔티티 간에 관계를 설정하므로써 해당 엔티티에서는 관계된 엔티티를 가져올 수 있는 메소드가 자동으로 생성됩니다.


employer.addToOne( company, companyId)


addToOne 은 Employer 엔티티에 관계된 Company 엔티티를 가져올 수 있는 getCompany() 메소드를 생성해 줍니다.

쉽게 이해하기 위해서는 Employer 엔티티에 companyId 를 사용하여 Company 를 가져오는 메소드를 생성해라고 생각하면 됩니다.


ToMany tomany = company.addToMany( employer, companyId);

tomany.setName( "employers");

tomany.orderAsc( hireDate);


addToMany 는 엔티티에 1:M 관계를 설정하는 메소드입니다.

company.addToMany( employer, companyId); 코드를 통해서 Company 와 Employer 엔티티간에 1:M 관계를 설정합니다.

또는 Compnay 엔티티에 연결된 모든 Employer를 가져오는 getEmployer() 메소드를 생성하라는 의미로 이해하시면 됩니다.


tomany.setName( "employers");

tomany.orderAsc( hireDate);

코드를 통해서 생성된 메소드 이름이 getEmployer() 가 아니라 getEmployers() 로 생성하고 hireDate 로 정렬해서 가져오라고 설정했습니다.





: