powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка списка Hibernate + Servlet
2 сообщений из 2, страница 1 из 1
обработка списка Hibernate + Servlet
    #37965751
mortal2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Пытаюсь осваивать Hibernate. В java я новичек и вот все бы ничего, но столкнулся с вопросом:
есть проект MyTabHib структура:
+src
.......+DAO
...............Factory.java //класс для вызова методов для работы с БД
...............IDepartment.java //интрефейс для описания методов работы с БД
.......+DAO.Impl
......................DepartmentImpl // реализация интерфейса
.......+logic
...............Department.java //класс-сущность
.......+tools
...............MySprav.java //сервлет в котором заполняется список
...............Main.java //тут тоже что и в сервлете
.......+utils
...............HibernateUtil.java
.......hibernate.cfg.xml //конфигурационный файл проекта
========================================================
файл hibernate.cfg.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/MyTabelHib</property>  
    <property name="connection.username">root</property>
    <property name="connection.password"></property>
    <property name="connection.pool_size">10</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">update</property>
    <property name="hibernate.connection.autocommit">false</property>
    <property name="current_session_context_class">thread</property>

    <mapping class="logic.Sotrudnik" />
	<mapping class="logic.Department" />
   
  </session-factory>
</hibernate-configuration>


==========================================
файл Department.java:
Код: java
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.
package logic;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="Department")
public class Department {
	private int id_dep;
	private String Dep;
	
	public Department() {
		Dep = null;
	}
	
	public Department(String dep) {
		Dep = dep;
	}

	@Id
	@GeneratedValue(generator="increment")
	@GenericGenerator(name="increment", strategy="increment")
	@Column(name="id_dep")
	public int getId_dep() {
		return id_dep;
	}

	@Column(name="Dep")
	public String getDep() {
		return Dep;
	}

	public void setId_dep(int id_dep) {
		this.id_dep = id_dep;
	}

	public void setDep(String dep) {
		Dep = dep;
	}
}


===============================
файл HibernateUtil.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
package utils;


import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	private static SessionFactory sessionFactory = null;
	static {
		try{
			//creates the session factory from hibernate.cfg.xml
			Configuration cfg = new Configuration();
			cfg.configure("hibernate.cfg.xml");
			sessionFactory = cfg.buildSessionFactory();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}


=============================
файл IDepartment.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package DAO;

import java.sql.SQLException;
import java.util.List;

import logic.Department;

public interface IDepartment {
	public void addDep(Department dep) throws SQLException;				//добавить отдел
	public List<Department> getDepAll() throws SQLException;			//получить список всех отделов
}


==============================
файл DepartmentImpl.java
Код: java
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.
package DAO.Impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Session;
import utils.HibernateUtil;
import logic.Department;
import DAO.IDepartment;

public class DepartmentImpl implements IDepartment {

	public void addDep(Department dep) throws SQLException {
		// TODO Auto-generated method stub
		
	}

	public List<Department> getDepAll() throws SQLException {
		Session sess = null;
		List<Department> deps = new ArrayList<Department>();
		try {
			sess = HibernateUtil.getSessionFactory().openSession();
			sess.beginTransaction();
			deps = sess.createCriteria(Department.class).list();
			//deps = sess.createSQLQuery("select * from Department").addEntity(Department.class).list();
			//deps = (List<Department>)sess.createQuery("from Department").list();
			sess.getTransaction().commit();
			System.out.println(deps);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "Ошибка I/O", JOptionPane.OK_OPTION);	
		} finally {
			if(sess != null && sess.isOpen()) {
				sess.clear();
			}
		}
		return deps;
	}
	
}


===============================
файл Factory.java
Код: java
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.
package DAO;

import DAO.Impl.DepartmentImpl;
import DAO.Impl.SotrudnikDAOImpl;

public class Factory {
	private static ISotrudnikDAO sotrDAO = null;
	private static IDepartment depsDAO = null;
	private static Factory instance = null;
	
	public static synchronized Factory getInstance() {
		if(instance == null) {
			instance = new Factory();
		}
		return instance;
	}
	
	public ISotrudnikDAO getSotrDAO() {
		if(sotrDAO == null) {
			sotrDAO = new SotrudnikDAOImpl();
		}
		return sotrDAO;
	}
	
	public IDepartment getDepDAO() {
		if(depsDAO == null) {
			depsDAO = new DepartmentImpl();
		}
		return depsDAO;
	}
}


========================
файл-servlet MySprav.java
Код: java
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.
package tools;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import DAO.Factory;

import logic.Department;

/**
 * Servlet implementation class MySprav
 */
@WebServlet("/MySprav")
public class MySprav extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MySprav() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		HttpSession sess = request.getSession(true);
		String url = "/my-sprav.jsp";
		//List<Department> deps = new ArrayList<Department>();
		PrintWriter out = response.getWriter();

		//List<Department> deps;
			List<Department> deps;
			try {
				deps = Factory.getInstance().getDepDAO().getDepAll();
				for(int i=0; i < deps.size(); i++) {
					System.out.println(deps.get(i).getDep()+":"+deps.get(i).getId_dep());
				}
				sess.setAttribute("deps", deps);
			} catch (SQLException e) {				
				e.printStackTrace();
			}

	
		response.sendRedirect("/MyTabHib/"+url);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}


============================
файл Main.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
package tools;

import java.sql.SQLException;
import java.util.List;
import logic.Department;
import logic.Sotrudnik;
import DAO.Factory;

public class Main {

	public static void main(String[] args) throws SQLException {
//		List<Sotrudnik> sotr = Factory.getInstance().getSotrDAO().getAllSotr();
//			for(int i=0; i < sotr.size(); i++) {
//				System.out.println(sotr.get(i).getUser()+":"+sotr.get(i).getId_user());
                                //out.println(sotr.get(i).getUser()+":"+sotr.get(i).getId_user());
//			}
		List<Department> deps = Factory.getInstance().getDepDAO().getDepAll();
		for(int i=0; i < deps.size(); i++) {
			System.out.println(deps.get(i).getDep()+":"+deps.get(i).getId_dep());
		}
	}

}



Вопрос1: почему в Main.java список(deps) заполняется и выводится как надо, а в сервлете(MySprav.java) выводит [] (вроде как пустой список?)
Нужно получить список отделов организации наприм:
Администрация:1

Отдел Продаж:2

ИТ:3
и т.д.
Вопрос2: может можно после решения 1-го вопроса получить этот список в jsp-странице без передачи его из сервлета (c помощью jstl-тегов), если можно, то как?
Заранее спасибо.
...
Рейтинг: 0 / 0
обработка списка Hibernate + Servlet
    #37965779
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mortal2010Вопрос1: почему в Main.java список(deps) заполняется и выводится как надо, а в сервлете(MySprav.java) выводит [] (вроде как пустой список?)

Потомучто вы перехватываете все ошибки, и теряя детали, пытаетесь отобразить в JOptionPane (в сервлете, ага). Вместо этого используйне логирование или хотя бы e.printStackTrace();

mortal2010Вопрос2: может можно после решения 1-го вопроса получить этот список в jsp-странице без передачи его из сервлета (c помощью jstl-тегов), если можно, то как?
Заранее спасибо.
JSP страница сама по себе - сервлет. Тут много разных вариантов можно придумать. И данные получать в JSP и форвард делать из сервлета. И MVC начать изучать.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка списка Hibernate + Servlet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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