I would welcome the addition of some DAO (data access object) methods in
the entity templates that make it even easier to query the DB.  For example
I have these defined in my entity template:

public static List<Invoice> fetchAll(ObjectContext ec);

public static List<Invoice> fetchAll(ObjectContext ec, List<? extends
Ordering> sortOrderings);

public static List<Invoice> fetch(ObjectContext ec, Expression qualifier);

public static List<Invoice> fetch(ObjectContext ec, Expression qualifier,
List<? extends Ordering> sortOrderings);

public static List<Invoice> fetch(ObjectContext ec, Expression qualifier,
List<? extends Ordering> sortOrderings, int fetchLimit);

public static Invoice fetchOne(ObjectContext ec, Expression qualifier);

This is something EOF/WebObjects does that I find useful.  However, I would
lean towards creating an inner class for this along with a singleton called
DAO and putting these methods there.  So you would do
Invoice.DAO.fetchAll(...)

But I don't really need .delete() or .save()


On Mon, Dec 17, 2012 at 5:09 PM, Дробеня Илья <[email protected]> wrote:

> Hi!
>
> Now Cayenne usage in projects looks like data mapper (Fowler), but all
> entities has dependecy on Cayenne (interface Persistent). For data mapper
> it is disadvantage.
> But it is acceptable for ActiveRecord. This is my first reason to propose
> this solution. Second reason - we may simple add all posibile methods in
> entities - because entities generates by modeler.
>
> Then my proposal - useful API that will be insert in each entity on
> generation. For example, in this case we may use cayenne such -
>
> Role curRole = Role.newInstance();
> curRole.setAuthority("MyAuthority");
> curRole.save();
>
> Role curRole = Role.get(id);
> curRole.delete();
>
> List<Role> roles = Role.findBy("firstName", name, "surname", lastName);
> List<Role> roles = Role.findAll("birthDate < $date and name = $name",
> "date", new Date(), "name", lastName);
>
> How we may to implement this?
> Need to allow use Cayenne in classic mode without active record. Then we
> may create separate set of templates and add its to Cayenne jars.
>
> Then for implement its we need:
> 1. Create separate set of templates with needed methods
> 2. Create singleton - that will provide access to ObjectContext
> 3. Maybe add to modeler option for generate custom queries to entities
> instead of add its to UntitledMap
>
> My questions to you:
> 1. What do you think - do this functionality will really useful? Are you
> ready to use it in your projects?
> 2. Which methods you want to see in API?
>
> Thanks!
> --
> Ilya Drabenia
> Software Engineer, ObjectStyle LLC
>

Reply via email to