[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-4857) Sharing metadata between different SessionFactories

Emmanuel Bernard (JIRA) noreply at atlassian.com
Thu Feb 4 04:06:31 EST 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=35458#action_35458 ] 

Emmanuel Bernard commented on HHH-4857:
---------------------------------------

Thanks, would there be a way to provide a patch instead of the full classes?

We are on JPA 2 for the moment but hopefully we can check that out soon :)

> Sharing metadata between different SessionFactories
> ---------------------------------------------------
>
>                 Key: HHH-4857
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4857
>             Project: Hibernate Core
>          Issue Type: New Feature
>          Components: core, entity-manager
>            Reporter: Chris Baxter
>            Priority: Minor
>         Attachments: AnnotationConfiguration.java, changes.txt, Configuration.java, Ejb3Configuration.java, SessionFactoryImpl.java, SharedAnnotationConfig.java
>
>
> In our system, we have each clients data in a separate DB instance. We're using JPA (via hibernate) on top of that to get at the data. The problem here is that for each client DB supported by one of our jboss servers, we have to have an instance of EntityManagerFactory compete with an Ejb3Configuration instance. Each config instance takes up around 20 MBs of permanent space, so if we have have 1000 client DBs supported by a jboss instance, it takes up a hugh amount of memory for information that will always be the same (the DB schemas are always the exact same in each client DB) across all EntityManagerFactory instances. So what I want to know is if there is a way to only have one instance of Ejb3Configuration that can be shared across all of the EntityManagerFactory instances that are spawning my EntityManagers. This would be huge as it would help me save many gigs of memory that never can be collected (old gen in jboss).
> I prototyped some changes locally to Ejb3Configuration (to allow an instance of AnnotationConfiguration to be supplied in the constructor, allowing sharing across all instanced of this class) and to SessionFactoryImpl (to share some of the properties like entityPersisters, classMetadata and such) and I was able to reduce the footprint to 20 MBs for the first DB and then under a MB for each additional DB.  The changes I made were a bit quick and dirty though, just to see if it was possible.  So I'm taking out this feature request to see if this is a piece of work that you guys can do (or I can contribute after refactoring to a more suitable approach) and integrate into the main code for hibernate-core and hibernate-entitymanager.  Let me know if this is something you guys think to be a valuable addition.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list