On Fri, Nov 5, 2010 at 6:08 AM, Timothy Ward <[email protected]> wrote:
>
> To clarify, the aim when designing this function was to make consuming 
> persistence units and contexts as simple as possible - hence trying to make 
> sure that it could be expressed as a single element.
>
> The primary injection mechanism people use is by setters, which in blueprint 
> would be something like:
>
> <property name="foo" ref="bar"/>
>
> In order to get JPA to be similarly concise, and to avoid breaking the 
> existing validation requirements of Blueprint, we came up with the <unit/> 
> and <context/> tags, which contain the information from an 
> @PersistenceContext and @PersistenceUnit annotation.
>
> The decision was made that:
>
> <property name="emf" type="javax.persistence.EntityManagerFactory">
>   <jpa:unit unitname="myUnit"/>
> </property>
>
> was significantly less usable than:
>
> <jpa:unit property="emf" unitname="myUnit"/>

I disagree. To me the following is much clearer:

<property name="emf">
  <jpa:unit unitname="myUnit">
</property>

And this syntax is consistent with rest of the blueprint syntax, i.e.
how you would inject a bean as a property or argument. The <jpa:unit/>
and <jpa:context/> provide a specific object just like a <bean/> or
<reference/>, etc. and should be handled in the same way, IMHO.

Jarek

Reply via email to