<!-- 
RSS generated by JIRA (5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5) at Sat May 18 11:13:19 UTC 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://www.doctrine-project.org/jira/si/jira.issueviews:issue-xml/DDC-546/DDC-546.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Doctrine Project</title>
    <link>http://www.doctrine-project.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>5.2.7</version>
        <build-number>850</build-number>
        <build-date>21-02-2013</build-date>
    </build-info>

<item>
            <title>[DDC-546] New fetch mode EXTRA_LAZY for collections</title>
                <link>http://www.doctrine-project.org/jira/browse/DDC-546</link>
                <project id="10032" key="DDC">Doctrine 2 - ORM</project>
                        <description>&lt;p&gt;A new fetch mode EXTRA_LAZY for one-to-many and many-to-many associations could have the following effects on PersistentCollection methods:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;count() : Does not initialize the collection but issues a straight SQL count query.&lt;/li&gt;
	&lt;li&gt;remove($key) : Does not initialize the collection but issues straight SQL instead.&lt;/li&gt;
	&lt;li&gt;removeElement($element) : Does not initialize the collection but issues straight SQL instead.&lt;/li&gt;
	&lt;li&gt;contains($element) : Does not initialize the collection but issues straight SQL instead.&lt;/li&gt;
	&lt;li&gt;containsKey($key)  : Does not initialize the collection but issues straight SQL instead.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This mode would usually be useful for (potentially) large collections.&lt;/p&gt;

&lt;p&gt;We need to work out concrete use-case examples and implementation proposals before implementation.&lt;/p&gt;

&lt;p&gt;The semantics of the mentioned methods with EXTRA_LAZY need to be carefully worked out, i.e. what happens to already managed instances in case of the remove operations and stuff like that.&lt;/p&gt;</description>
                <environment></environment>
            <key id="11277">DDC-546</key>
            <summary>New fetch mode EXTRA_LAZY for collections</summary>
                <type id="2" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/newfeature.png">New Feature</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="5" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/resolved.png">Resolved</status>
                    <resolution id="1">Fixed</resolution>
                    <security id="10000">All</security>
                        <assignee username="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="romanb">Roman S. Borschel</reporter>
                        <labels>
                    </labels>
                <created>Tue, 27 Apr 2010 11:36:53 +0000</created>
                <updated>Sun, 2 Jan 2011 09:16:27 +0000</updated>
                    <resolved>Sun, 2 Jan 2011 09:15:12 +0000</resolved>
                            <version>2.0-BETA1</version>
                                <fixVersion>2.1</fixVersion>
                                <component>ORM</component>
                        <due></due>
                    <votes>3</votes>
                        <watches>6</watches>
                        <comments>
                    <comment id="12869" author="mjh_ca" created="Fri, 7 May 2010 15:54:35 +0000"  >&lt;p&gt;Wow, this is an excellent idea.  I was just thinking how it is unfortunate that there aren&apos;t ways to manipulate large collections without resorting to DQL.&lt;/p&gt;

&lt;p&gt;If nothing else, having access to a count() would be particularly great.&lt;/p&gt;</comment>
                    <comment id="12871" author="romanb" created="Fri, 7 May 2010 16:49:50 +0000"  >&lt;p&gt;@Marc: You might then also be interested in a related ticket: &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DDC-547&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/jira/browse/DDC-547&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This would basically allow you to craft special implementations that inherit from PersistentCollection that are &quot;optimized&quot; in some way for a specific association (i.e. write your own custom SQL query when count() is invoked). Your wrapper class is then used by Doctrine instead of the default one, thats the idea. Of course implementing such a custom collection and overriding methods needs to be done carefully to fully preserve the public API contract (PersistentCollection wrappers are supposed to be &quot;invisible&quot; to the user after all). So this would be an advanced feature. EXTRA_LAZY I think is a pretty easy feature, accessible for all users with no further knowledge required. It just means that the collection delays initialization even more, whereever possible, which is a good thing for large collections which you normally don&apos;t really want to load, yet it allows you to use the normal OO API of your domain model without resorting to special (DQL) queries.&lt;/p&gt;</comment>
                    <comment id="12872" author="romanb" created="Fri, 7 May 2010 16:51:51 +0000"  >&lt;p&gt;Oh, I just saw you&apos;re watching that one already &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; sorry for the noise&lt;/p&gt;</comment>
                    <comment id="12996" author="romanb" created="Wed, 19 May 2010 06:31:39 +0000"  >&lt;p&gt;Rescheduling for beta3 as we&apos;re running out of time.&lt;/p&gt;</comment>
                    <comment id="13471" author="beberlei" created="Wed, 30 Jun 2010 16:17:04 +0000"  >&lt;p&gt;Additional features that have been requested by users:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Fetch entries in this collection in batches, i.e. only in 20 steps, issue a limit 0,21 and check if there is more&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I don&apos;t know about the remove() and removeElement() operations, would they register with the UoW or directly execute the DELETE or UPDATE stements themselves?&lt;/p&gt;</comment>
                    <comment id="13536" author="romanb" created="Wed, 7 Jul 2010 11:17:16 +0000"  >&lt;p&gt;Pushing back to beta4.&lt;/p&gt;</comment>
                    <comment id="13569" author="romanb" created="Mon, 12 Jul 2010 11:48:51 +0000"  >&lt;p&gt;Moved to 2.1 due to lack of time for larger new stuff for 2.0.&lt;/p&gt;</comment>
                    <comment id="14908" author="beberlei" created="Sat, 4 Dec 2010 13:46:25 +0000"  >&lt;p&gt;&lt;a href=&quot;https://github.com/doctrine/doctrine2/tree/DDC-546&quot; class=&quot;external-link&quot;&gt;https://github.com/doctrine/doctrine2/tree/DDC-546&lt;/a&gt; first prototype implementation with tests.&lt;/p&gt;

&lt;p&gt;Missing:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;XML and YAML Mapping support.&lt;/li&gt;
	&lt;li&gt;Contains() support.&lt;/li&gt;
	&lt;li&gt;RemoveElement() support&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Necessary for later scheduling (only make sense when persisting keys):&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;ContainsKey() support&lt;/li&gt;
	&lt;li&gt;RemoveKey() support&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="15053" author="beberlei" created="Wed, 29 Dec 2010 06:31:53 +0000"  >&lt;p&gt;I updated the branch to include XML, YAML support, refactored a little bit and added contains() support.&lt;/p&gt;

&lt;p&gt;The RemoveElement() support should be put into its own ticket that relates to the EntityManager#link() / EntityManager#unlink() functionality.&lt;/p&gt;</comment>
                    <comment id="15100" author="beberlei" created="Sun, 2 Jan 2011 09:15:12 +0000"  >&lt;p&gt;Implemented&lt;/p&gt;</comment>
                    <comment id="15101" author="beberlei" created="Sun, 2 Jan 2011 09:16:27 +0000"  >&lt;p&gt;Usage would be inside a @OneToMany or @ManyToMany definition set&lt;/p&gt;

&lt;p&gt;Annotations/XML:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;fetch=&lt;span class=&quot;code-quote&quot;&gt;&quot;EXTRA_LAZY&quot;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;YAML:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;fetch: EXTRA_LAZY
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                <issuelinks>
                        <issuelinktype id="10001">
                <name>Reference</name>
                                <outwardlinks description="relates to">
                            <issuelink>
            <issuekey id="10362">DDC-128</issuekey>
        </issuelink>
                    </outwardlinks>
                                                <inwardlinks description="is referenced by">
                            <issuelink>
            <issuekey id="10273">DDC-80</issuekey>
        </issuelink>
                    </inwardlinks>
                            </issuelinktype>
                    </issuelinks>
                <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>
</channel>
</rss>