JSTL с Hibernate (без весны) - PullRequest
       9

JSTL с Hibernate (без весны)

0 голосов
/ 16 февраля 2019

Я начал с небольшой программы с двумя классами в Java, которая использовала JSTL для создания веб-приложения.Теперь я хотел бы добавить Hibernate, чтобы информация сохранялась в базе данных и не удалялась после закрытия программ.Проблема в том, что я не знаю, как поставить эту технологию вместе.У меня есть два метода, которые позволяют мне добавлять и редактировать с использованием JSTL:

    private void addPerson(HttpServletRequest request, HttpSession session) {
    String name = request.getParameter("name");
    String name2 = request.getParameter("name2");
    Person person = new Person(name, name2);

    Map<Integer, Person> persons = (Map<Integer, Person>) session.getAttribute("persons");
    if (persons == null) {
        persons = new HashMap<>();
    }
    persons.put(person.getId(), person);
    session.setAttribute("persons", persons);
    request.setAttribute("_OK", + person.getName() + " " + person.getName2());
}

метод редактирования:

private void editPerson(HttpServletRequest request, HttpSession session) {
 int id = Integer.parseInt(request.getParameter("id"));
    String name = request.getParameter("name");
    String name2 = request.getParameter("name2");
    Map<Integer, Person> person = (Map<Integer, Person>) session.getAttribute("person");
    if (person == null) {
        person = new HashMap<>();
    }
    Person person = person.get(id);
    person.setNume(name);
    person.setDescriere(name2);
    request.setAttribute("_OK", "Edited persons: " +  person.getName() + " " + person.getName2());
}

И я получил свои методы Hibernate:

  public Person add(Person e){
    try {
        em().getTransaction().begin();
        em().persist(e);
        em().getTransaction().commit();
    }catch (PersistenceException pe) {
        pe.printStackTrace();
        em().getTransaction().rollback();
    }
    return e;
}

public Person modify (Person e){
    try {
        em().getTransaction().begin();
        em().persist(e);
        em().getTransaction().commit();
    }catch (PersistenceException pe) {
        pe.printStackTrace();
        em().getTransaction().rollback();
    }
    return e;
}
public List<Person> readAll(){
    CriteriaBuilder builder = em().getCriteriaBuilder();
    Class<Person> clazz = entityClass();
    CriteriaQuery<Person> query = builder.createQuery(clazz);
    Root<Person> root = query.from(clazz);
    query.select(root);
    return em().createQuery(query).getResultList();

}

любая идея, как использовать их в JSTL?

Позже редактирование: я попытался вызвать свой метод Hibernate в файле jsp, поэтому я сделал это:

<%@ page import="app.OpStudent" %>
<%@ page import="app.Database" %>

.......

 private void addPerson(HttpServletRequest request, HttpSession session) {
        String name= request.getParameter("name");
        String name2= request.getParameter("name2");
        Person person = new Person (name, name2);
        Database.getEM;
        OpPerson  op = new OpPerson;
        op.add(person);

класс OpPerson - это класс, в котором у меня есть методы гибернации.В классе Database я получил это:

public class Database {

private static final EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("personDb");
private static EntityManager em = emf.createEntityManager();
public static EntityManager getEM() {
        if (em == null || !em.isOpen()) {
            em = emf.createEntityManager();
        }
        return em;
}

Но теперь я получаю эту ошибку:

   org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [43] in the jsp file: [/Person.jsp]
Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration

40:         String name= request.getParameter("name");
41:         String name2= request.getParameter("name2");
42:         Person person = new Person (name, name2);
43:         Database.getEM;
44:         OpPerson  op = new OpPerson;
45:         op.add(person);

Из того, что я нашел, эта ошибка выдается, когда вы вызываете переменную, которая не инициализирована,Но как здесь быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...