Isn't this just the result of JIT development?  Don't need something 
right now, don't implement it.  If you need it later, refactor.
I'm probably looking at this too much from a low level grunt developer.  
I understand that when developing a framework or anything with a public 
API these are important issues, but that's what bugtrackers are for!

I'm all for composability, but it shouldn't be a religion :-)   (<-- 
please note the smiley!)

--Andrew

Derek Chen-Becker wrote:
> I agree that it's an issue. In my own defense, what I meant was not 
> that I didn't think people would use more than one DB. I actually have 
> several apps (not yet converted to Lift) that use 4 or more 
> persistence units that represent various legacy databases. Rather, I 
> failed to realize the problem that would arise from defining the EM 
> factory as a singleton because when I wrote that code I didn't fully 
> understand how member objects on classes worked. Other than that, I 
> agree with your post :)
> Derek
>
> On Tue, Jun 16, 2009 at 5:38 PM, Meredith Gregory 
> <lgreg.mered...@gmail.com <mailto:lgreg.mered...@gmail.com>> wrote:
>
>     Derek,
>
>     <soapbox>
>     You have just demonstrated a process that i have been talking
>     about for the last 15 years. People have a blind spot when it
>     comes to thinking compositionally. They think -- almost to a
>     person -- about "god's eye view" solutions where there's only one
>     of some key solution component. They don't think about solutions
>     that are composed of ... (wait for it)... solutions! It takes some
>     serious training to think compositionally. Compositional
>     solutions, however, are the only realistic way to scale. When
>     solutions are compositional, you can _/de/_compose. The db example
>     is a case in point. One of the most natural ways to scale data
>     access is sharding and partitioning -- which requires upfront
>     machinery to support decomposition of the store.
>
>     Lest you feel bad, note that some of the best scientific minds of
>     all time have fallen prey to this blind spot. Newtonian physics as
>     well as Einstein's update to Newton's proposal is a
>     non-compositional solution. Quantum mechanics also exhibits
>     compositional failures. This is why physics is failing to find
>     proposals that link theories of gravitation (essentially large
>     scale) to quantum mechanical theories of the other forces
>     (essentially very small scale) -- the physical theories are
>     non-compositional -- they don't scale!
>
>     One of the real things functional programming has going for it is
>     that the basic model of computation underlying the means of
>     structuring and manipulating programs is compositional. That's why
>     it is important to have a technology like Scala resting atop the
>     incumbent execution model (JVM) being deployed on web-scale
>     problems. Compositionality is the only way to tackle applications
>     at global scale.
>     </soapbox>
>
>     Thanks for getting the fix to this problem in so quickly.
>      
>     Best wishes,
>
>     --greg
>
>
>     On Tue, Jun 16, 2009 at 11:53 AM, Derek Chen-Becker
>     <dchenbec...@gmail.com <mailto:dchenbec...@gmail.com>> wrote:
>
>         Using multiple EMs was not something I had considered when I
>         wrote this. I think that I can modify the code to provide a
>         __nameSalt def to differentiate instances. Let me work on it
>         and I'll have something soon.
>
>         Derek
>
>
>         On 6/16/09, *Jean-Luc* <jlcane...@gmail.com
>         <mailto:jlcane...@gmail.com>> wrote:
>
>             For your information, here is an extract of source code of
>             RequestVarEM :
>
>             Trait RequestVarEM extends ScalaEntityManager with
>             ScalaEMFactory {
>                object emVar extends
>             RequestVar[EntityManager](openEM()) { ... }
>             }
>
>             EntityManager is stored in the singleton emVar; so, all db
>             access of Model objects are made using the singleton emVar.
>             => trait RequestVarEM allow only one connection to a
>             database within the same HttpRequest context.
>
>
>             Jean-Luc
>
>             2009/6/15 Jean-Luc <jlcane...@gmail.com
>             <mailto:jlcane...@gmail.com>>
>
>                 Hello,
>
>                 I have two databases, db1 (a.k.a. Motorbike) and db2
>                 (a.k.a. Motorway) defined with RequestVarEM :
>                 - object ModelDb1 extends LocalEMF("db1") with
>                 RequestVarEM  // Motorbike database
>                 - object ModelDb2 extends LocalEMF("db2") with
>                 RequestVarEM  // Motorway database
>
>                 I thought one could access to any databases
>                 independently from any snippet as long as the correct
>                 Model object were used (ModelDb1 or ModelDb2 for
>                 exemple) ; but when I access both databases from the
>                 same page, the second database access issues a "Named
>                 query not found" exception.
>
>                 I have two snippets, one to display a list of
>                 "motorbike", another to display a list of "motorway" :
>                 - page1 :
>                 
> ModelDb1.createNamedQuery[Motorbike]("Motorbike.findAll).getResultList()
>                 => ok
>                 - page2
>                 : 
> ModelDb2.createNamedQuery[Motorway]("Motorway.findAll).getResultList()
>                 => ok
>                 - page3 : calling from page 3 motorbike & motorway
>                 snippets : Named query not found: Motorway.findAll
>                 - page4 : calling from page 4 motorway & motorbike
>                 snippets : Named query not found: Motorbike.findAll
>                 - page3 & changing the query of *Motorway* snippet :
>                   -
>                 
> ModelDb2.createNamedQuery[*Motorbike*]("*Motorbike*.findAll).getResultList()
>                 => it's ok and I do NOT have an exception !
>                  
>                 I joined a sample application, ...
>                  
>                 any idea about this issue ?
>                 (bad use of LocalEMF in the application code ? issue
>                 with LocalEMF or RequestVarEM ?)
>                  
>                 Jean-Luc
>                  
>                 PS :
>                 I don't know if it's related but I have this in the log :
>                 [INFO] Checking for multiple versions of scala
>                 [WARNING] Multiple versions of scala libraries detected!
>                  
>
>
>                 -- 
>                 Jean-Luc Canela
>                 jlcane...@gmail.com <mailto:jlcane...@gmail.com>
>
>
>
>
>             -- 
>             Jean-Luc Canela
>             jlcane...@gmail.com <mailto:jlcane...@gmail.com>
>
>
>
>
>
>
>
>
>     -- 
>     L.G. Meredith
>     Managing Partner
>     Biosimilarity LLC
>     1219 NW 83rd St
>     Seattle, WA 98117
>
>     +1 206.650.3740
>
>     http://biosimilarity.blogspot.com
>
>
>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to