powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate+servlet время ожидания ответа
3 сообщений из 3, страница 1 из 1
Hibernate+servlet время ожидания ответа
    #34074433
Sit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sit
Гость
Пытаюсь сделать простой сервлет который работает с БД через hibernate. делаю в сервлете запрос к таблице он долго работает потом говорит что страний недоступна.
Таблица которую я замапил в hibernate большая прм. 9000 записей. Пытался ограничить количество выбираемых строк - непомогло. Вот код сервлета -
package test_app;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
 import  util.*;
 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  java.io.*;
 import  java.util.*;
 import  org.hibernate.*;





 public   class  Test_serv
     extends  HttpServlet {
   private   static   final  String CONTENT_TYPE = "text/html";
  //@todo set DTD
   private   static   final  String DOC_TYPE =  null ;
  Collection results =  null ;
  SessionFactory sf;



  //Initialize global variables
   public   void  init()  throws  ServletException {
 
  }

  //Process the HTTP Get request
   public   void  doGet(HttpServletRequest request, HttpServletResponse response)  throws 
      ServletException, IOException {
    String sKod = request.getParameter("s_kod");
     if  (sKod ==  null ) {
      sKod = "";
    }
    String Date = request.getParameter("dat_od");
     if  (Date ==  null ) {
      Date = "";
    }
    String level = request.getParameter("hlev");
     if  (level ==  null ) {
      level = "";
    }
    String user = request.getParameter("User");
     if  (user ==  null ) {
      user = "";
    }
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();


    HibernateUtil.getSessionFactory()
                .getCurrentSession().beginTransaction();
   Criteria cr =HibernateUtil.getSessionFactory()
                    .getCurrentSession()
                    .createCriteria(Main_gr. class );
    cr.setMaxResults( 100 );
    cr.setFirstResult( 10 );
    List list = cr.list();

    HibernateUtil.getSessionFactory()
                                .getCurrentSession().getTransaction().commit();



  if  (list.size() >  0 ) {
         out.println("<h2>Events in database:</h2>");
         out.println("<table border='1'>");
         out.println("<tr>");
         out.println("<th>Event title</th>");
         out.println("<th>Event date</th>");
         out.println("</tr>");
          for  (Iterator it = list.iterator(); it.hasNext();) {
             Main_gr event = (Main_gr) it.next();
             out.println("<tr>");
             out.println("<td>" + event.getiGr() + "</td>");
             out.println("<td>" + event.getName() + "</td>");
             out.println("</tr>");
         }
         out.println("</table>");
     }




   //@todo implement GET
  }

  //Process the HTTP Post request
   public   void  doPost(HttpServletRequest request, HttpServletResponse response)  throws 
      ServletException, IOException {
    doGet(request, response);
  }

  //Clean up resources
   public   void  destroy() {
  }
}
Вот что пишет hibernate:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
окт  23   14 : 35 : 22   2006 : - Hibernate  3 . 2 . 0 

окт  23   14 : 35 : 23   2006 : - hibernate.properties not found

окт  23   14 : 35 : 23   2006 : - Bytecode provider name : cglib

окт  23   14 : 35 : 23   2006 : - using JDK  1 . 4  java.sql.Timestamp handling

окт  23   14 : 35 : 23   2006 : - configuring from url: http://sitnikov/test_app/hibernate.cfg.xml

окт  23   14 : 35 : 23   2006 : StaticPageCache_get: timeout: url = /test_app/hibernate.cfg.xml
окт  23   14 : 35 : 23   2006 : - Configured SessionFactory:  null 

окт  23   14 : 35 : 24   2006 : - Mapping  class : test_app.Main_gr -> main_gr

окт  23   14 : 35 : 24   2006 : - JNDI InitialContext properties:{}

окт  23   14 : 35 : 24   2006 : - Using datasource: java:comp/env/jdbc/AnalyseConnectionCache

окт  23   14 : 35 : 40   2006 : - RDBMS: Adaptive Server Enterprise, version: Adaptive Server Enterprise/ 12 . 5 . 3 /EBF  13332  ESD# 7 /P/Linux Intel/Enterprise Linux/ase1253/ 1951 / 32 -bit/OPT/Fri Mar  24   00 : 40 : 52   2006 

окт  23   14 : 35 : 40   2006 : - JDBC driver: jConnect (TM)  for  JDBC (TM), version: jConnect (TM)  for  JDBC(TM)/ 6 . 0 (Build  25361 )/P/EBF11817/JDK14/Sun Jun  13   14 : 54 : 17   2004 

окт  23   14 : 35 : 40   2006 : - Using dialect: org.hibernate.dialect.SybaseDialect

окт  23   14 : 35 : 40   2006 : - Using  default  transaction strategy (direct JDBC transactions)

окт  23   14 : 35 : 40   2006 : - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)

окт  23   14 : 35 : 40   2006 : - Automatic flush during beforeCompletion(): disabled

окт  23   14 : 35 : 40   2006 : - Automatic session close at end of transaction: disabled

окт  23   14 : 35 : 40   2006 : - Scrollable result sets: enabled

окт  23   14 : 35 : 40   2006 : - JDBC3 getGeneratedKeys(): disabled

окт  23   14 : 35 : 40   2006 : - Connection release mode: auto

окт  23   14 : 35 : 40   2006 : -  Default  batch fetch size:  1 

окт  23   14 : 35 : 40   2006 : - Generate SQL with comments: disabled

окт  23   14 : 35 : 40   2006 : - Order SQL updates by primary key: disabled

окт  23   14 : 35 : 40   2006 : - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory

окт  23   14 : 35 : 40   2006 : - Using ASTQueryTranslatorFactory

окт  23   14 : 35 : 40   2006 : - Query language substitutions: {}

окт  23   14 : 35 : 40   2006 : - JPA-QL strict compliance: disabled

окт  23   14 : 35 : 40   2006 : - Second-level cache: enabled

окт  23   14 : 35 : 40   2006 : - Query cache: disabled

окт  23   14 : 35 : 40   2006 : - Cache provider: org.hibernate.cache.NoCacheProvider

окт  23   14 : 35 : 40   2006 : - Optimize cache  for  minimal puts: disabled

окт  23   14 : 35 : 40   2006 : - Structured second-level cache entries: disabled

окт  23   14 : 35 : 40   2006 : - Echoing all SQL to stdout

окт  23   14 : 35 : 40   2006 : - Statistics: disabled

окт  23   14 : 35 : 40   2006 : - Deleted entity synthetic identifier rollback: disabled

окт  23   14 : 35 : 40   2006 : -  Default  entity-mode: pojo

окт  23   14 : 35 : 41   2006 : - building session factory

окт  23   14 : 35 : 41   2006 : - Not binding factory to JNDI, no JNDI name configured

окт  23   14 : 35 : 41   2006 : - Running hbm2ddl schema export

окт  23   14 : 35 : 41   2006 : - exporting generated schema to database

окт  23   14 : 35 : 46   2006 : - schema export complete

окт  23   14 : 35 : 51   2006 : Hibernate: select this_.iGr as iGr0_0_, this_.name as name0_0_, this_.hlev as hlev0_0_, this_.s_kod as s4_0_0_ from main_gr this_

Может быть както увеличить время ожидания ответа от сервлета, подскажите как.
...
Рейтинг: 0 / 0
Hibernate+servlet время ожидания ответа
    #34114192
bu_ma_ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы написал так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		Session session = HibernateUtil.getSessionFactory().openSession();
		
		Criteria cr = session.createCriteria(Main_gr. class );
						   cr.setMaxResults( 100 );
						   cr.setFirstResult( 10 );
		List list = cr.list();

		session.close();


Во первых сами разработчики hibernate рекомендуют использовать на каждый запрос одну сессию.

Во вторых если нужно просто что то достать из базы, то метод getTransaction()
абсолютно бесполезен, и естественно, никаких commit делать не нужно, не к чему применить.

А 9000 записей не так много чтобы не доставалось, хотя конечно может повлиять на скорость выполнения запроса.Тем полее что сдесь и ораничения на выборку так что проблем быть не должно.

И кстати в hibernate присутствует такая вешь как хеширование данных, если данные ресурса (таблицы) изменяются или не изменяются в пределах одной и той же SessionFactory, то время выполнения любых операций с базой существенно увеличивается.
...
Рейтинг: 0 / 0
Hibernate+servlet время ожидания ответа
    #34114196
mitriy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправка :
И кстати, в hibernate присутствует такая вешь как хеширование данных, если данные ресурса (таблицы) изменяются или не изменяются в пределах одной и той же SessionFactory, то время выполнения любых операций с базой существенно УМЕНЬШАЕТСЯ .
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate+servlet время ожидания ответа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]