1
我正在做一個Spring 3 MVC Hibernate Web應用程序。我面臨的問題是應用程序正常工作,但問題出現時,我打電話多6或7數據庫調用.Means嘗試通過執行少量查詢來訪問數據。首先執行6到7個查詢,但在那之後,查詢停止執行意味着所有應用程序都沒有響應。非常奇怪的情況。我正在粘貼小服務程序的XML服務,實現控制器和DAO請指導我在哪裏,我錯了尋找,但仍然沒有解決春季3 MVC查詢不會執行幾個調用
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/MyData/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- Spring Database DataSource -->
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
<beans:property name="url"
value="jdbc:mysql://localhost:3306/health" />
<beans:property name="username" value="***" />
<beans:property name="password" value="***" />
</beans:bean>
<!-- Hibernate 3 Session Factory -->
<beans:bean id="enversListener" class="org.hibernate.envers.event.AuditEventListener" />
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="packagesToScan" value="com.***.model"/>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="dialect">org.hibernate.dialect.HSQLDialect</beans:prop>
<beans:prop key="hibernate.jdbc.batch_size">20</beans:prop>
<beans:prop key="show_sql">true</beans:prop>
<beans:prop key="hbm2ddl.auto">update</beans:prop>
</beans:props>
</beans:property>
<beans:property name="eventListeners">
<beans:map>
<beans:entry key="post-insert"><beans:ref local="enversListener" /></beans:entry>
<beans:entry key="post-update"><beans:ref local="enversListener" /></beans:entry>
<beans:entry key="post-delete"><beans:ref local="enversListener" /></beans:entry>
<beans:entry key="pre-collection-update"><beans:ref local="enversListener" /></beans:entry>
<beans:entry key="pre-collection-remove"><beans:ref local="enversListener" /></beans:entry>
<beans:entry key="post-collection-recreate"><beans:ref local="enversListener" /></beans:entry>
</beans:map>
</beans:property>
</beans:bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<beans:bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
<!-- Bean Defination -->
<beans:bean id="userDao" class="com.***.DAO.UserDaoImpl"/>
<beans:bean id="packDao" class="com.***.DAO.PackageDaoImpl"/>
<beans:bean id="adminDao" class="com.***.DAO.AdminDaoImpl"/>
<beans:bean id="branchDao" class="com.***.DAO.BranchDaoImpl"/>
<beans:bean id="companyDao" class="com.***.DAO.CompanyDaoImpl"/>
<beans:bean id="SubpackDao" class="com.***.DAO.SubpackageDaoImpl"/>
<!-- Services Bean -->
<beans:bean id="userService" class="com.***.services.UserServiceImpl"/>
<beans:bean id="packageService" class="com.***.services.PackageServiceImpl"/>
</beans:beans>
接收到請求並調用服務
1.控制器類實現。
@Controller
@RequestMapping(value="/PackageController")
public class PackageController implements PackageService{
private PackageService packService;
@Autowired
@Qualifier("packageService")
public void setPackService(PackageService packService) {
this.packService = packService;
}
@RequestMapping(value="/get_package_list",method=RequestMethod.POST,produces="application/json")
public @ResponseBody String callgetPackageList(){
System.out.println("Get the package list");
List<Package> packageList = this.getPackageList();
Iterator <Package> itTemp = packageList.iterator();
JSONObject json=null;
JSONArray json_data_array= new JSONArray();
while(itTemp.hasNext())
{
Package packageTemp = itTemp.next();
json = new JSONObject();
try {
json.put("Id", packageTemp.getPackageId());
json.put("PackageName", packageTemp.getPackageName());
json_data_array.put(json);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
json = new JSONObject();
try {
json.put("Id", "custom");
json.put("PackageName", "Customise Package");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
json_data_array.put(json);
return json_data_array.toString();
}
@Override
public List<Package> getPackageList() {
// TODO Auto-generated method stub
return packService.getPackageList();
}
}
3.服務實現,其中調用dao方法並應用事務性註釋。
public class PackageServiceImpl implements PackageService{
private PackageDao packageDao;
@Autowired
@Qualifier("packDao")
public void setPackageDao(PackageDao packageDao) {
this.packageDao = packageDao;
}
@Override
@Transactional
public List<Package> getPackageList() {
return packageDao.getPackageList();
}
}
4.將實際查詢寫入執行主要問題的Dao實現在於serviceimplementation和package我猜測。
public class PackageDaoImpl implements PackageDao{
private SessionFactory sessionFactory;
private SubpackageDao subpack;
@Autowired
@Qualifier("sessionFactory")
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public List<Package> getPackageList() {
Session session=sessionFactory.openSession();
List<Package> packageListTemp = null;
Criteria criteria = session.createCriteria(Package.class);
criteria.setFetchMode("subpackages", FetchMode.SELECT);
packageListTemp = criteria.list();
return packageListTemp;
}
}