下面是從Hibernate.xml如何使用Hibernate處理最大數據庫連接?
Hibernate配置<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
.....
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
下面是從GenricDaoImpl類代碼(碼1)
@Override
public T save(T t) {
Session session = getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
session.saveOrUpdate(t);
tx.commit();
session.close();
return t;
}
和從項目其它代碼(代碼2)
Query executeQuery = getSession().createQuery(hql);
UserProfileuser = (UserProfile) executeQuery.uniqueResult();
高於我在項目中使用的兩個代碼。我的問題是需要遵循哪些編碼?代碼1或代碼2以避免最大連接錯誤。我可以連接最多1000個連接數據庫。但在某些情況下,它會超過1000。所以我想保持數據庫連接最小。 請指導我。
你能告訴我,不管是來自代碼1還是代碼2。如果我不關閉代碼1的連接,那麼它會每次都創建新的連接。或者它會使用現有的已打開的。 – RBP
這是真的。作爲好奇心,我想知道,在代碼1中,我正在打開連接並正確關閉它,那麼爲什麼它會增加連接數。爲什麼連接沒有通過調用close()立即關閉?連接在一段時間後關閉,但直到那時它達到最大連接。 – RBP
你怎麼知道你一次有超過1000個連接?大多數db只允許數百個。 –