Thanks everyone for the input.

 Vincent, do you wind up making model objects that are per-instance
adapters? or more class level service objects?

iain

On Thu, Jun 9, 2016 at 12:47 PM, Vincent Catalano <
[email protected]> wrote:

> Personally, I've found that many times the logic and object structures
> that I'm dealing with in my service layer do not directly correlate to my
> SQLA Objects. This usually caused my SQLA Objects to become bloated with
> logic and many times these objects become awkward to use. Plus, this also
> meant that a lot of my business logic was being into the persistence layer
> (SQLA Objects) violating the principle of separation of concerns. My
> recommendation is this: strictly use SQLA Objects for persistence only
> (unless your project is relatively small) and use separate model objects
> (not dictionaries) to encapsulate behavior and pass around to your service
> layers. The one disadvantage to this approach can be the redundancy between
> your domain objects and your SQLA Objects, but I find it's still much
> easier to test individual components and easier to handle the differences
> between your persistence model and your domain model.
>
> On Thu, Jun 9, 2016 at 11:33 AM, Iain Duncan <[email protected]>
> wrote:
>
>> Thanks for the input everyone. One thing I'm wrestling with is whether to
>> use my deserializer/validator to go to app-level dicts or straight to
>> SQLAlchemy objects. I'm not sure yet whether the service/action layer
>> should work with SQLA objects all the time. Thoughts on that?
>>
>> thanks
>> iain
>>
>> On Thu, Jun 9, 2016 at 10:43 AM, Jonathan Vanasco <[email protected]>
>> wrote:
>>
>>> In our largest app we have a caching layer and do a lot of transitions
>>> between SqlAlchemy and a Dict (both directions)
>>>
>>> some of these may apply to you:
>>>
>>> 1. dicts are wrapped in an 'attribute safe' container, so they behave
>>> like sqlalchemy objects.  certain sqlalchemy relationships are handled via
>>> lazyloading cache items from a readthrough cache.
>>>
>>> 2. there is a per-request local cache of dict objects.
>>>
>>> 3. the dict containers have a 'readonly' flag, so they raise errors if
>>> we try to write.  the system loads a fresh sqlalchemy object when it needs
>>> to write, then updates the cached items.
>>>
>>> 4. there is a single method for converting the objects from one type to
>>> another.  after a while, it made more sense to keep the mapping logic
>>> between the two object types instead of nested into one.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "pylons-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/pylons-discuss/2a6a8c2d-1d00-4ba9-b99e-2de88be16d56%40googlegroups.com
>>> <https://groups.google.com/d/msgid/pylons-discuss/2a6a8c2d-1d00-4ba9-b99e-2de88be16d56%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "pylons-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/pylons-discuss/CAN9NcLz8rjPTHK8wFrG97Hnx-UBB_K7GJ97UUZRSTb4WOZA6hA%40mail.gmail.com
>> <https://groups.google.com/d/msgid/pylons-discuss/CAN9NcLz8rjPTHK8wFrG97Hnx-UBB_K7GJ97UUZRSTb4WOZA6hA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Vincent Catalano
> Software Engineer and Web Developer,
> (520).603.8944
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/pylons-discuss/CAEhnOszCW%3D1NgYm6hA6XaCmYb_U-LyZ-_%3DuN%2BaXCq-Z5P%2BMuuA%40mail.gmail.com
> <https://groups.google.com/d/msgid/pylons-discuss/CAEhnOszCW%3D1NgYm6hA6XaCmYb_U-LyZ-_%3DuN%2BaXCq-Z5P%2BMuuA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/CAN9NcLyL8tqHzmo2k8we7qOLdCTuO2jHG2WAfQE9097yA77AGg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to