рдлрд┐рд▓рд╣рд╛рд▓, рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреЛ рдореБрдЦреНрдп рд╣реИрдВред рдпреЗ
ORMLite рдФрд░
GreenDAO рд╣реИрдВ ред
рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдУрдЖрд░рдПрдо рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдмрддрд╛рдиреЗ рдФрд░ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
ORM - рдСрдмреНрдЬреЗрдХреНрдЯ-рд░реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧред рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬреЛ рд╡рд╣ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИред ORM рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрдкрд░рдХ DBMS рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред GreenDAO рдФрд░ ORMLite рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВред
GreenDAO
рдЬрд░реНрдорди рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд░реВрдкрд░реЗрдЦрд╛, рдЬреЛ рд╡реЗ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдлрд╛рдпрджреЗ:
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
Android ORM рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди
рдиреНрдпреВрдирддрдо рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди:
- рд╕реНрдХреАрдорд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИред
- рдПрдиреЛрдЯреЗрдЯрд┐рдВрдЧ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрд╕рдВрднрд╡рддрд╛, рдФрд░ рдирдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
ORMLite
Android рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХред
рдлрд╛рдпрджреЗ:
- рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЕрднреА рддрдХ рд╕рд░рд▓ рдПрдиреЛрдЯреЗрд╢рди
- рд╕рдореГрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
- рд╕рд╣рд┐рдд рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди SQLite
- KISS рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рдиреБрдХрд╕рд╛рди:
... рд╣рдореНрдо ... рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдкрд╛рдпрд╛) рдЕрд╕рдВрднрд╡ рд▓рдЧрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдЧреЛрджреА рдХреЗ рдЧрд╣рди рдЕрдзреНрдпрдпрди рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдСрд░рдорд▓рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕рд╕реЗ рдХрд╛рдлреА рдХрд░реАрдм рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╕ рдмреИрдареВрдВрдЧрд╛ред
рд╕рд░рд▓ рд╡рд░реНрдЧ рдПрдиреЛрдЯреЗрд╢рди
рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ (рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рд╣реЗрдЬрдирд╛) рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдПрдиреЛрдЯреЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЖрдк
рд╡рд░реНрдЧ-рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИ) рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдиреЛрдЯреЗрд╢рди рдЙрджрд╛рд╣рд░рдг:
@DatabaseTable(tableName = "goals") public class Goal{ public final static String GOAL_NAME_FIELD_NAME = "name"; @DatabaseField(generatedId = true) private int Id; @DatabaseField(canBeNull = false, dataType = DataType.STRING, columnName = GOAL_NAME_FIELD_NAME) private String name; @DatabaseField(dataType = DataType.DATE) private Date lastEditDate; @DatabaseField() private String notes; public Goal(){ scheduleList = new ArrayList<Shedule>(); priorities = new ArrayList<PrioritySchedule>(); } }
рдкрд╣рд▓рд╛ рдПрдиреЛрдЯреЗрд╢рди
@DatabaseTable(tableName = "goals")
рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо
@DatabaseTable(tableName = "goals")
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде
@DatabaseField
рдПрдиреЛрдЯреЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЖрдк рддрд░реНрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рднреА рд╕рдХрддреЗ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрддрдВрдн рдирд╛рдо рдлрд╝реАрд▓реНрдб рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛)ред рдирд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ рддреАрди рддрд░реНрдХ рд╣реИрдВред
canBeNull = false
рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрд▓рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
dataType = DataType.STRING
рдЖрдкрдХреЛ рд╕реНрддрдВрдн рдкреНрд░рдХрд╛рд░ рдХреЛ
String
рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
String
ред (рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░
рдпрд╣рд╛рдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ )ред
columnName = GOAL_NAME_FIELD_NAME
- рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд┐рдВрджрд╛ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЙрд▓рдо рдирд╛рдо рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЛрдИ рднреА рдлрд╝реАрд▓реНрдб рд╣реЛ рд╕рдХрддреА рд╣реИ - рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП
id = true
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ id-
generatedId = true
id рдорд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ
generatedId = true
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ
generatedId = true
ред ORMLite рдЦреБрдж рдЙрд╕реЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирдВрдмрд░ рд╕реМрдВрдкреЗрдЧрд╛ред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
index = true
рд╕рднреА рдЙрдкрд▓рдмреНрдз рдлрд╝реАрд▓реНрдб рдПрдиреЛрдЯреЗрд╢рди рддрд░реНрдХреЛрдВ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ORMLite рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рд╛рдорд╛рдиреНрдп javax.persistence рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
Android рдкрд░ SQLite рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
Android рдореЗрдВ ORMLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдЖрдк ORMLiteBaseActivity рд╕реЗ рд╣рд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред (
рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ )
рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реИред
рдЖрдкрдХреЛ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХреЛ рддреБрд░рдВрдд рдХрд░ рджреЗрдЧрд╛:
public class HelperFactory{ private static DatabaseHelper databaseHelper; public static DatabaseHelper getHelper(){ return databaseHelper; } public static void setHelper(Context context){ databaseHelper = OpenHelperManager.getHelper(context, DatabaseHelper.class); } public static void releaseHelper(){ OpenHelperManager.releaseHelper(); databaseHelper = null; } }
рдЖрд╡реЗрджрди рдХреЗ рдЬреАрд╡рди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА:
рдпрд╣ рдПрдХ рдЦреБрд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рд░рдг рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); HelperFactory.setHelper(getApplicationContext()); } @Override public void onTerminate() { HelperFactory.releaseHelper(); super.onTerminate(); } }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдХрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:
<application android:name=".MyApplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
рдЪрд▓рд┐рдП DataBaseHelper рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдФрд░ DAO рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛:
public class DatabaseHelper extends OrmLiteSqliteOpenHelper{ private static final String TAG = DatabaseHelper.class.getSimpleName();
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЦреЗрддреЛрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдбреАрдПрдУ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд▓рд┐рдВрдХ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдм рд╕реАрдзреЗ DAO рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
рдбреАрдПрдУ
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдЧ рд╣реИ
public class RoleDAO extends BaseDaoImpl<Role, Integer>{ protected RoleDAO(ConnectionSource connectionSource, Class<Role> dataClass) throws SQLException{ super(connectionSource, dataClass); } public List<Role> getAllRoles() throws SQLException{ return this.queryForAll(); } }
рдпрд╣рд╛рдБ рд╣рдордиреЗ рднреВрдорд┐рдХрд╛ рд╡рд░реНрдЧ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рд╣реИред
BaseDaoImpl рдХреЗ рдкреВрд░реНрд╡рдЬ рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд┐рд░реНрдорд┐рдд, рдЕрджреНрдпрддрди, рдирд╖реНрдЯ рдХреА рдЧрдИ рд╣реИрдВред
рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдореЗрдВ рд░реЛрд▓рдбреЙ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдлрд╝реИрдХреНрдЯрд░реА рдХреНрд▓рд╛рд╕ рдХреА рдУрд░ рд░реБрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
RoleDAO roleDao = HelperFactory.GetHelper().getRoleDAO();
рдХреНрд╡реЗрд░реА рдмрдирд╛рдПрдБ
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдЖрдк DAO рд╡рд░реНрдЧ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
public List<Goal> getGoalByName(String name) throws SQLException{ QueryBuilder<Goal, String> queryBuilder = queryBuilder(); queryBuilder.where().eq(Goal.GOAL_NAME_FIELD_NAME, "First goal"); PreparedQuery<Goal> preparedQuery = queryBuilder.prepare(); List<Goal> goalList =query(preparedQuery); return goalList; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рдлрд╝реАрд▓реНрдб рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд▓рд╛рд╢ рдереАред
рдЬрдм
eq
(рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ) рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
gt
(рдЕрдзрд┐рдХ),
ge
(рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рд╕рдорд╛рди) рдФрд░ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд░реВрдк рдмрд╛рдХреА рд╣реИрдВ рдЬрд╣рд╛рдБ SQL (рдкреВрд░реНрдг рд╕реВрдЪреА
рдпрд╣рд╛рдБ рд╣реИ )
рдПрдХ рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
and
:
queryBuilder.where().eq(Goal.GOAL_NAME_FIELD_NAME, "First goal").and().eq(Goal.GOAL_NOTES_NAME_FIELD_NAME,тАЭaaaтАЭ);
рддрджрдиреБрд╕рд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ
рд╣рдЯрд╛рдирд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдзреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХрд┐рд╕реА рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ рдореЗрдВ, рдлрд╝реАрд▓реНрдб рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@DatabaseField(foreign = true) private Role role; public void setRole(Role value){ this.role = value; } public Role getRole(){ return role; }
рдЕрдм рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ
Goal g = new Goal(); g.setName(тАЬasdтАЭ); Role r = new Role(); g.setRole(r); HelperFactory.getHelper.getRoleDAO().create(r); HelperFactory.getHelper.getGoalDAO().create(g);
рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ:
Goal g = HelperFactory.getHelper.getRoleDAO().getGoalByName(тАЬasdтАЭ); Role r = g.getRole(); HelperFactory.getHelper.getRolelDAO().refresh(g);
refresh()
рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ r рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреБрд░реВрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рдлрд╝реАрд▓реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рд╕рдВрдЧреНрд░рд╣ рд╕рдВрджрд░реНрдн рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╕рдордп, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ:
рд▓рдХреНрд╖реНрдп рд╡рд░реНрдЧ рдореЗрдВ:
@ForeignCollectionField(eager = true) private Collection<Role> roleList; public addRole(Role value){ value.setGoal(this); HelperFactory.GetHelper().getRoleDAO().create(value); roleList.add(value); } public void removeRole(Role value){ roleList.remove(value); HelperFactory.GetHelper().getRoleDAO().delete(value); }
eager
рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рддрд░реНрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд░реЛрд▓рд┐рд╕реНрдЯ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд╛рде рд╣реА рд▓рдХреНрд╖реНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рд╕рд╛рдеред рдЕрдирд┐рд╡рд╛рд░реНрдп рднреВрдорд┐рдХрд╛ рд╡рд╕реНрддреБ рдореЗрдВ рд▓рдХреНрд╖реНрдп рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд░реЛрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд░реЛрд▓рдбреАрдПрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред
рддрджрдиреБрд╕рд╛рд░, рднреВрдорд┐рдХрд╛ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
@DatabaseField(foreign = true, foreignAutoRefresh = true) private Goal goal;
рдпрджрд┐ рдЖрдк
eager=true
, рддреЛ рдЖрд▓рд╕реА-рдЖрд░рдВрднреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддреНред рдЬрдм рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рд░реЛрд▓рд┐рд╕реНрдЯ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
Iterator<Role> iter = state.goal.getRoleList().iterator(); while (iter.hasNext()) { Role r = iter.next(); }
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ ред