powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и база данных Mysql
6 сообщений из 6, страница 1 из 1
Hibernate и база данных Mysql
    #33636382
Grelloo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется проект в Netbeans работающий с hibernate. Создается table "honey" в базе данных Mysql (база данных создана заранее) "firsthibernate". Вот код Honey.java и TestExample.java (InitSessionFactory.java не привожу):

Код: 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.
96.
97.
98.
99.
100.
101.
102.
103.
104.
//honey.java
 package  de.laliluna.example;
 public   class  Honey {
	 private  Integer id;
	 private  String name;
	 private  String taste;
	 public  Honey() {}
	 public  Integer getId() {
		 return  id;
	}
	 public   void  setId(Integer id) {
		 this .id = id;
	}
	 public  String getName() {
		 return  name;
	}
	 public   void  setName(String name) {
		 this .name = name;
	}
	 public  String getTaste() {
		 return  taste;
	}
	 public   void  setTaste(String taste) {
		 this .taste = taste;
	}
	@Override
	 public  String toString() {
		 return  "Honey: "+getId()+" Name: "+getName()+" Taste: "+getTaste();
	}
}

//TestExample.java
 package  de.laliluna.example;
 import  java.util.Iterator;
 import  java.util.List;
 import  org.apache.log4j.Logger;
 import  org.hibernate.HibernateException;
 import  org.hibernate.Session;
 import  org.hibernate.Transaction;
 import  de.laliluna.hibernate.InitSessionFactory;

 public   class  TestExample {

		 public   static   void  main(String[] args) {
		Honey forestHoney =  new  Honey();
		forestHoney.setName("forest honey");
		forestHoney.setTaste("very sweet");
		Honey countryHoney =  new  Honey();
		countryHoney.setName("country honey");
		countryHoney.setTaste("tasty");
		createHoney(forestHoney);
		createHoney(countryHoney);
		// our instances have a primary key now:
		log.debug(forestHoney);
		log.debug(countryHoney);
		listHoney();
		deleteHoney(forestHoney);
		listHoney();
	}
	 private   static   void  listHoney() {
		Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try  {
			tx = session.beginTransaction();
			List honeys = session.createQuery("select h from Honey as h")
					.list();
			 for  (Iterator iter = honeys.iterator(); iter.hasNext();) {
				Honey element = (Honey) iter.next();
				log.debug(element);
			}
			tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();
		}
	}
	 private   static   void  deleteHoney(Honey honey) {
		Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try  {
			tx = session.beginTransaction();
			session.delete(honey);
			tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();
		}
	}
	 private   static   void  createHoney(Honey honey) {
		Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try  {
			tx = session.beginTransaction();
			session.save(honey);
			tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();
		}
	}
}
Пример не мой, взят из нета. Он запускается и работает нормально. Теперь мне надо сделать сервлет, который выводил бы соответствующие строки таблицы honey (как делать простые сервлеты я знаю). Заранее спасибо
...
Рейтинг: 0 / 0
Hibernate и база данных Mysql
    #33636460
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь пишете сервлет и в его методах doGet(), doPost() вызываете нужные функции этог класса.
...
Рейтинг: 0 / 0
Hibernate и база данных Mysql
    #33638577
Grelloo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У сервлета нет main класса. Получается надо импортировать файлы с нужными функциями и вызывать их все в doGet и doPost?
...
Рейтинг: 0 / 0
Hibernate и база данных Mysql
    #33638604
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а как же еще? Конечно. Только методы, которые будете вызывать, сделайте публичными.
...
Рейтинг: 0 / 0
Hibernate и база данных Mysql
    #33639251
Grelloo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я переделал в сервлет эту прогу и теперь TestExample.java выглядит следующим образом:
Код: 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.
96.
97.
98.
 package  de.laliluna.example;

 import  java.util.Iterator;
 import  java.util.List;
 import  java.io.*;
 import  java.net.*;
 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  org.apache.log4j.Logger;
 import  org.hibernate.HibernateException;
 import  org.hibernate.Session;
 import  org.hibernate.Transaction;
 import  de.laliluna.hibernate.InitSessionFactory;

//public class TestExample {
 public   class  TestExample  extends  HttpServlet {
     protected   void  processRequest(HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
       /*    	Honey forestHoney = new Honey();
		forestHoney.setName("forest honey");
		forestHoney.setTaste("very sweet");
                Honey forest = new Honey();
                forest.setName("forest honey");
                forest.setTaste("very bad");
		Honey countryHoney = new Honey();
		countryHoney.setName("country honey");
		countryHoney.setTaste("tasty");
		createHoney(forestHoney);
		createHoney(countryHoney);
                createHoney(forest);  */
		
out.println("<html>" + "<head>" + "<title>Servlet MyHelly</title>");
        out.println("</head>" + "<body>");
               Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try {
			tx = session.beginTransaction();
		                        List honeys = session.createQuery("from Honey as h WHERE name = 'forest honey'").list();
                                  for  (Iterator iter = honeys.iterator(); iter.hasNext();) {
				Honey elem = (Honey) iter.next();

        out.println("Name = " + elem.getTaste()); 
        
			}
                        session.update(honeys);
                        tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();

		}
        out.println("</body>" + "</html>");
        out.close();
                 	
    }      protected   void  doGet(HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException {
        processRequest(request, response);
    }
     protected   void  doPost(HttpServletRequest request, HttpServletResponse response)
     throws  ServletException, IOException {
        processRequest(request, response);
    }
     public  String getServletInfo() {
         return  "Short description";
    } 
	        
	 private   static   void  deleteHoney(Honey honey) {
		Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try  {
			tx = session.beginTransaction();
			session.delete(honey);
                        tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();
		}
	}

	 private   static   void  createHoney(Honey honey) {
		Transaction tx =  null ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		 try  {
			tx = session.beginTransaction();
			session.save(honey);
			tx.commit();
		}  catch  (HibernateException e) {
			e.printStackTrace();
			 if  (tx !=  null  && tx.isActive())
				tx.rollback();
		}
	}

} 
Не произведение исскуств, но все же. :) Если я убираю /* */, то сервлет запускается и выдает:
Name = very sweet Name = very bad - что и требуется.
Если же снова поставить, то таблица в базе данных опустевает и сервлет ничего не выдает. Нужно чтобы сервлет ничего не создавал, а просто искал.
...
Рейтинг: 0 / 0
Hibernate и база данных Mysql
    #33639281
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А исключения никакие не появляются?... Такое поведение объяснимо только в том случае, если транзакции НЕ выполняются (откатываются), объекты при этом остаются в сессии (в кэше), благополучно находятся и отображаются. Если же вы коммментируете создание объектов, они вообще нигде не создаются и не находятся..

В общем, смотрите по сторонам. В базу загляните.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и база данных Mysql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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