I am not sure it can help for you, but sometimes I use this for "readonly"
data :
transform tables like "TBL_CITY" or "TBL_COUNTRY" to  "properties" file and
store this data on client side.



> Using Hibernate 2.0.3
>
> We have a table "panel_demographics" (xml at bottom) which holds foreign
> keys to many other tables.  These other (metadata) tables all look
basically
> the same, at the bottom "Education" is an example.
> A query like: PanelDemographics panelDemographics = (PanelDemographics)
> session.load(PanelDemographics.class, new Long(1));
> will generate about 7000 characters of sql and takes about 15 seconds to
> execute.
>
> I wanted to know if the following setup is possible:
>
> All the foreign tables should be cached indefinately.  There are only a
> couple rows in each.
> Is a way for hibernate to, when loading PanelDemographics, the sql
generated
> would just select the id's of the foreign tables, then grab the objects
from
> the cache.
>
> The following...
>     PanelDemographics panelDemographics = (PanelDemographics)
> session.load(PanelDemographics.class, new Long(1))
>     would generate sql like   "select education_id, household_size_id,
> etc... where panel_id = 1"
>     Then Hibernate would use the ids to grab the references from cache and
> set them on PanelDemographics.
>
> I tried the following:
>
> I have JCS configured to cache each metadata table, along with <jcs-cache
> usage="read-only"/> in each <class> tag.
>
> 1. Adding a proxy to the PanelDemographics class makes everything load in
> about .5 seconds.  But obviously, when the session is closed and the
object
> is passed to the UI for rendering, all of its references are not
> initialized. So, doing a Hibernate.initialize(panelDemographics); still
> takes about 15 seconds.
>
> 2. Adding a proxy to each metadata table, then calling initialize on each
> does what I am looking for (I think).
>                 long start = System.currentTimeMillis();
>                 panelPersonal = (PanelPersonal)
> session.load(PanelPersonal.class, panel.getId());
>                 panelDemographics = (PanelDemographics)
> session.load(PanelDemographics.class, panel.getId());
>                 System.out.println("Time: " +
(System.currentTimeMillis() -
> start));
> // Time: 506
>                 start = System.currentTimeMillis();
>                 Hibernate.initialize(panelDemographics.getEducation());
>                 Hibernate.initialize(panelDemographics.getChild0005());
>                 Hibernate.initialize(panelDemographics.getChild0609());
>                 Hibernate.initialize(panelDemographics.getChild1012());
>                 Hibernate.initialize(panelDemographics.getChild1317());
>                 Hibernate.initialize(panelDemographics.getEthnicity());
>                 Hibernate.initialize(panelDemographics.getGender());
>                 Hibernate.initialize(panelDemographics.getIndustry());
>                 Hibernate.initialize(panelDemographics.getOccupation());
>                 Hibernate.initialize(panelDemographics.getEmployment());
>
Hibernate.initialize(panelDemographics.getInternetHours());
>
> Hibernate.initialize(panelDemographics.getInternetHowOften());
>
> Hibernate.initialize(panelDemographics.getPresenceChildren());
>
> Hibernate.initialize(panelDemographics.getHouseholdIncome());
>
Hibernate.initialize(panelDemographics.getPersonalIncome());
>
Hibernate.initialize(panelDemographics.getHouseholdSize());
>
Hibernate.initialize(panelDemographics.getInternetSpeed());
>
Hibernate.initialize(panelDemographics.getMaritalStatus());
>                 System.out.println("Init Time: " +
> (System.currentTimeMillis() - start));
> // Init Time: 206
>
>
>
> Am I doing this the right way or is there an easier way?
>
>
>
> Also, since I have to also retrieve all the data from a metadata table to
> display it along with the selected option, I now have to initialize these
> objects everywhere I use them.
>     public static Title[] selectAllTitle(Session session) throws
> HibernateException
>     {
>         Title[] o = null;
>
>         List list = session.find("SELECT o FROM Title o");
>         o = new Title[list.size()];
>         list.toArray(o);
>
> // Initialize each
>         for (int i = 0; i < o.length; i++)
>         {
>             Hibernate.initialize(o[i]);
>         }
>
>         return o;
>     }
>
>
>
> Thanks for your help!
> Joseph Toth
>
>
> --------------------------------------------------------------------------
--
> -------------------------------------------------------
> Below is the xml for PanelDemographics and an example metadata table
> (Education).
> --------------------------------------------------------------------------
--
> -------------------------------------------------------
>
>
> <class name="com.lsr.eclipse.framework.model.PanelDemographics"
> table="panel_demographics">
> <id column="panel_id" name="panelId" type="java.lang.Long">
> <generator class="assigned"/>
> </id>
> <many-to-one column="household_size_id" name="householdSize"
> class="com.lsr.eclipse.framework.model.HouseholdSize"/>
> <many-to-one column="ethnicity_id" name="ethnicity"
> class="com.lsr.eclipse.framework.model.Ethnicity"/>
> <property column="birth_date" length="23" name="birthDate"
> type="java.util.Date"/>
> <many-to-one column="internet_how_often_id" name="internetHowOften"
> class="com.lsr.eclipse.framework.model.InternetHowOften"/>
> <many-to-one column="internet_hours_id" name="internetHours"
> class="com.lsr.eclipse.framework.model.InternetHours"/>
> <property column="html_preference" length="3" name="htmlPreference"
> type="java.lang.Integer"/>
> <property column="chief_wage_earner" length="10" name="chiefWageEarner"
> type="java.lang.Integer"/>
> <many-to-one column="gender_id" name="gender"
> class="com.lsr.eclipse.framework.model.Gender"/>
> <many-to-one column="marital_status_id" name="maritalStatus"
> class="com.lsr.eclipse.framework.model.MaritalStatus"/>
> <many-to-one column="education_id" name="education"
> class="com.lsr.eclipse.framework.model.Education"/>
> <many-to-one column="occupation_id" name="occupation"
> class="com.lsr.eclipse.framework.model.Occupation"/>
> <many-to-one column="employment_id" name="employment"
> class="com.lsr.eclipse.framework.model.Employment"/>
> <many-to-one column="industry_id" name="industry"
> class="com.lsr.eclipse.framework.model.Industry"/>
> <many-to-one column="child_0005" name="child0005"
> class="com.lsr.eclipse.framework.model.Child"/>
> <many-to-one column="child_0609" name="child0609"
> class="com.lsr.eclipse.framework.model.Child"/>
> <many-to-one column="child_1012" name="child1012"
> class="com.lsr.eclipse.framework.model.Child"/>
> <many-to-one column="child_1317"  name="child1317"
> class="com.lsr.eclipse.framework.model.Child"/>
> <many-to-one column="household_income_id" name="householdIncome"
> class="com.lsr.eclipse.framework.model.HouseholdIncome"/>
> <many-to-one column="internet_speed_id" name="internetSpeed"
> class="com.lsr.eclipse.framework.model.InternetSpeed"/>
> <many-to-one column="personal_income_id" name="personalIncome"
> class="com.lsr.eclipse.framework.model.PersonalIncome"/>
> <property column="presence_children_id" length="3" name="presenceChildren"
> type="java.lang.Integer"/>
> <many-to-one column="chief_occupation_id" name="chiefOccupation"
> class="com.lsr.eclipse.framework.model.Occupation"/>
> <many-to-one column="chief_employment_id" name="chiefEmployment"
> class="com.lsr.eclipse.framework.model.Employment"/>
> <many-to-one column="chief_industry_id" name="chiefIndustry"
> class="com.lsr.eclipse.framework.model.Industry"/>
> <property column="ethnic_other_text" length="128" name="ethnicOtherText"
> type="java.lang.String"/>
> <property column="internet_speed_other" length="128"
> name="internetSpeedOther" type="java.lang.String"/>
> <property column="expecting" length="23" name="expecting"
> type="java.util.Date"/>
> <property column="social_class_code" length="3" name="socialClassCode"
> type="java.lang.String"/>
> <property column="last_mod_dt" length="23" name="lastModDt"
> formula="getdate()" not-null="true" type="java.util.Date"/>
> </class>
>
> <class name="com.lsr.eclipse.framework.model.Education" table="education"
> proxy="com.lsr.eclipse.framework.model.Education">
> <jcs-cache usage="read-only"/>
> <id column="race_id" name="id" type="java.lang.Integer">
> <generator class="assigned"/>
> </id>
> <property column="description" length="255" name="description"
> not-null="true" type="java.lang.String"/>
> <property column="isvisible" length="1" name="isvisible" not-null="true"
> type="java.lang.Boolean"/>
> <property column="isdefault" length="1" name="isdefault" not-null="true"
> type="java.lang.Boolean"/>
> <property column="sequence" length="3" name="sequence"
> type="java.lang.Integer"/>
> <property column="last_mod_dt" length="23" name="lastModDt"
> formula="getdate()" not-null="true" type="java.util.Date"/>
> <property column="last_mod_userid" length="10" name="lastModUserid"
> formula="user_id()" not-null="true" type="java.lang.Integer"/>
> </class>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> hibernate-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/hibernate-devel



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to