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