But each view (or if there were some sort of view-manager) could manage transactions as well... couldn't they? The example says just that.
2010/1/12 Raul Raja Martinez <[email protected]>: > I understand but imaging this case... > > Model - Person encapsulates underlying node that access name property > Controller - Handler that receives http request requests a model has > transaction and delegates the model to a template to be rendered > View - Template that gets rendered with domain objects > > If a property accessed in the view from a domain object delegates the > access to the value to a delegate node wrapped in the model it would > be outside a transaction thus failing if it required one. If you have > a view object that gets fully initialized from a domain object before > passing to the view then it works but requires a extra layer of view > objects and forces initialization of properties that might not ever be > used in the rendering phase. > > > 2010/1/12 Ryan Levering <[email protected]>: >> Then this wouldn't be M-V-C, it would be M/C-V. The point of having >> that separate layer is that you don't need to worry about the model >> abstraction. Generally, controller level transactions should only >> exist because you actually want to force multi-operation atomicity, >> not because you know the underlying database needs to be >> transactionalized. And again, if your controller is doing a lot of >> reading, it will have to be split up into multiple transaction blocks. >> >> Ryan >> >> On Jan 12, 2010, at 5:28 AM, Mattias Persson wrote: >> >>> Your code doesn't need to be littered with transaction management. You >>> can have a very big MVC (Model-View-Controller) application or >>> something like that and _only_ have transaction handling in one >>> place... in the Controller. >>> >>> See http://wiki.neo4j.org/content/Transactions#Best_practices (page >>> under construction) >>> >>> 2010/1/12 Laurent Laborde <[email protected]>: >>>> On Tue, Jan 12, 2010 at 6:41 AM, Ryan Levering >>>> <[email protected]> wrote: >>>>> >>>>> 1. User.getName() >>>>> >>>>> I want a property off the node. I assume I encapsulate the single >>>>> internal getProperty call in a transaction? My accessor code has >>>>> just >>>>> quadrupled in size, even if I am ok with this silly, time-consuming >>>>> transaction. Leaving it out means every piece of code in my system >>>>> has to understand to start a neo4j transaction just to get the >>>>> user's >>>>> name. >>>>> >>>>> 2: for (User user : getUsers()) >>>>> >>>>> I want to do something to all the users in the system. There are A >>>>> LOT of them and they are all linked to a UserFactory or whatever. I >>>>> can't create an internal list, because they won't all fit in memory. >>>>> So I wrap the Iterable<Relationship/Node> in an Iterable that wraps >>>>> the nodes in POJOs. Only there is no way to do this without >>>>> enclosing >>>>> that loop in a transaction. >>>> >>>> Ha ! Thank you for explaining my problem and POV in a much more >>>> readable english than me :) >>>> >>>>> Do people just create giant transactions that wrap their entire >>>>> programs since they don't work with large graphs/models? Or is your >>>>> code entirely littered with transaction = service.beginTx(); >>>>> transaction.success(); transaction.finish()? >>>> >>>> When i can, i have short transaction everywhere. >>>> When i have a very big traverser to do ... well... i have a top-level >>>> transaction. >>>> Another workaround i use is to fill an array with the traverser, >>>> and i >>>> work on the array. >>>> That why i switched to 8GB on my desktop PC -_-' >>>> >>>>> I've looked around on the wiki and site and I can't find good >>>>> answers >>>>> to these questions. The IMDB example transactionalizes things at a >>>>> very high level. In a sense, wrapping the entire program (web >>>>> request) in a single transaction. I guess that's fine if you have >>>>> small operations and use Spring injection, but what if you don't? >>>> >>>> You do it the Oracle(tm) way : buy more ram :) >>>> >>>> -- >>>> Laurent "ker2x" Laborde >>>> Sysadmin & DBA at http://www.over-blog.com/ >>>> _______________________________________________ >>>> Neo mailing list >>>> [email protected] >>>> https://lists.neo4j.org/mailman/listinfo/user >>>> >>> >>> >>> >>> -- >>> Mattias Persson, [[email protected]] >>> Neo Technology, www.neotechnology.com >>> _______________________________________________ >>> Neo mailing list >>> [email protected] >>> https://lists.neo4j.org/mailman/listinfo/user >> >> _______________________________________________ >> Neo mailing list >> [email protected] >> https://lists.neo4j.org/mailman/listinfo/user >> > > > > -- > Raul Raja > _______________________________________________ > Neo mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user > -- Mattias Persson, [[email protected]] Neo Technology, www.neotechnology.com _______________________________________________ Neo mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

