5 Replies Latest reply: Nov 4, 2009 1:56 AM by Jose Alvarez de Lara RSS

    Simple hibernate web app

    Jose Alvarez de Lara Novice

      Hello,


      I am a newbe in Hibernate but I am learning quickly. But I have reached a point that is taking me a lot of time.

      I have developed a pretty simple web. It is just two JSP, index.jsp that redirects to user.jsp where I have all the code.

      This is user.jsp,

      <%@page import="com.examscam.dao.*,com.examscam.model.*,
      com.examscam.util.*,org.hibernate.*;" contentType="text/html;" %>
      
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      
      <jsp:useBean class="com.examscam.model.User" id="user" scope="request"/>
      <jsp:setProperty name="user" property="*" />
      
      <%
      HibernateUtil.beginTransaction();
      UserDAO userDAO = new HibernateUserDAO();
      java.util.List<User> users = null;
      String command = request.getParameter("command");
      if (command != null) {
      if (command.equals("Create")) {
      userDAO.create(user);
      }
      if (command.equals("Update")) {
      userDAO.update(user);
      }
      if (command.equals("edit")) {
      user = userDAO.findByPrimaryKey(user.getId());
      request.setAttribute("user", user);
      }
      if (command.equals("delete")) {
      userDAO.delete(user);
      request.setAttribute("user", null);
      }
      if (command.equals("Fuzzy Search")) {
      users = userDAO.findByExample(user, true);
      }
      if (command.equals("Strict Search")) {
      users = userDAO.findByExample(user, false);
      }
      if (command.equals("Clear")) {
      request.setAttribute("user", null);
      }
      }
      if (users == null) {
      users = userDAO.findAll();
      }
      request.setAttribute("users", users);
      HibernateUtil.commitTransaction();
      %>
      
      <html>
      <body>
      <form action="user.jsp">
      <!-- Here are our four textfields -->
      <input type="text" size="7"
      name="id" value=""> Id
      <BR/>
      <input type="text" size="30"
      name="loginName" value=""> Name
      <BR/>
      <input type="text" size="30"
      name="password" value=""> Password
      <BR/>
      <input type="text" size="30"
      name="emailAddress" value=""> Email
      <BR/>
      <!-- Here are all of our buttons!!! -->
      <input type="submit" name="command" value="Strict Search">
      <input type="submit" name="command" value="Fuzzy Search">
      <input type="submit" name="command" value="Update">
      <input type="submit" name="command" value="Create">
      <input type="submit" name="command" value="Clear">
      <BR>
      <c:forEach items="" var="user">
      <c:url var="editurl" value="user.jsp" >
       <c:param name="command" value="edit" />
       <c:param name="id" value=""/>
      </c:url>
      <c:url var="deleteurl" value="user.jsp" >
       <c:param name="command" value="delete" />
       <c:param name="id" value=""/>
      </c:url>
       <a href="">edit</a>
       <a href="">delete</a>
       <c:out value="" />
       <c:out value="" />
       <c:out value="" />
      <BR/>
      </c:forEach>
      </form>
      </body>
      </html>
      



      The problem is that I am not building the web app correctly. For user.jsp I import a jar, hibernatedaoaccess.jar, where are the classes and interfaces I need,

      package com.examscam.dao;
      
      import java.util.List;
      import com.examscam.model.User;
      
      public interface UserDAO {
      
       public User create(User user);
       public boolean update(User user) ;
       public boolean delete(User user) ;
       public User findByPrimaryKey(Long primaryKey);
       public List<User> findByExample(User user, boolean fuzzy);
       public List<User> findAll();
      
      }
      


      package com.examscam.model;
      
      import javax.persistence.Entity;
      import javax.persistence.GeneratedValue;
      import javax.persistence.Id;
      import javax.persistence.Column;
      import javax.persistence.Table;
      import javax.persistence.Basic;
      import javax.persistence.Temporal;
      import javax.persistence.TemporalType;
      import javax.persistence.Transient;
      
      @Entity
      @Table (name="user", schema="examscam")
      public class User {
       private Long id;
       private String loginName;
       private String password;
       private String encryptedPassword;
       private String emailAddress;
       private Boolean verified;
       private java.util.Date lastAccessTime;
       private java.util.Calendar registrationDate;
      
       @Transient
       public String getEncryptedPassword() {
       return encryptedPassword;
       }
       public void setEncryptedPassword(String ep) {
       this.encryptedPassword = ep;
       }
      
       @Id
       @GeneratedValue
       @Column (name="id")
       public Long getId() {
       return id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Column (name="login_name")
       public String getLoginName() {
       return loginName;
       }
       public void setLoginName(String loginName) {
       this.loginName = loginName;
       }
      
       @Column (name="password", nullable=false)
       public String getPassword() {
       return password;
       }
       public void setPassword(String password) {
       this.password = password;
       }
      
       @Column (name="emailAddress")
       public String getEmailAddress() {
       return emailAddress;
       }
      
       @Temporal(TemporalType.TIMESTAMP)
       public java.util.Date getLastAccessTime() {
       return lastAccessTime;
       }
      
       @Temporal(TemporalType.DATE)
       public java.util.Calendar getRegistrationDate() {
       return registrationDate;
       }
      
       @Basic
       public Boolean isVerified() {
       return verified;
       }
      
       public void setEmailAddress(String emailAddress) {
       this.emailAddress = emailAddress;
       }
      
       public void setLastAccessTime
       (java.util.Date lastAccessTime) {
       this.lastAccessTime = lastAccessTime;
       }
      
       public void setRegistrationDate
       (java.util.Calendar registrationDate){
       this.registrationDate = registrationDate;
       }
      
       public void setVerified(Boolean verified) {
       this.verified = verified;
       }
      
       public String toString() {
       return getId() + " : " +
       getLoginName() + " : " +
       getPassword() + " : " +
       getEmailAddress();
       }
      }
      


      package com.examscam.dao;
      
      import java.util.List;
      import org.hibernate.Criteria;
      import org.hibernate.Query;
      import org.hibernate.Session;
      import org.hibernate.criterion.Example;
      import org.hibernate.criterion.MatchMode;
      import com.examscam.model.User;
      
      
      public class HibernateUserDAO extends ExamScamDAO implements UserDAO {
      
       public User create(User user) {
       // TODO Auto-generated method stub
       if (user.getId() != null && user.getId() != 0) {
       user = null;
       }
       else {
       user.setLastAccessTime(new java.util.Date());
       user.setRegistrationDate
       (new java.util.GregorianCalendar());
       user.setVerified(false);
       super.save(user);
       }
       return user;
       }
      
       public boolean update(User user) {
       // TODO Auto-generated method stub
       boolean successFlag = true;
      
       try {
       if (user.getId() == null || user.getId() == 0) {
       successFlag = false;
       }else {
       super.save(user);
       }
       }
       catch (Throwable th) {
       successFlag = false;
       }
      
       return successFlag;
       }
      
       public boolean delete(User user) {
       // TODO Auto-generated method stub
       boolean successFlag = true;
      
       try {
       user.setPassword(" ");
       super.delete(user);
       } catch (Throwable th) {
       successFlag = false;
       }
      
       return successFlag;
       }
      
       @SuppressWarnings("unchecked")
       public List<User> findAll() {
       // TODO Auto-generated method stub
       String queryString = "from User";
       List<User> allUsers;
       Query queryResult =
       this.getSession().createQuery(queryString);
       allUsers = (List<User>) queryResult.list();
      
       return allUsers;
      
       }
      
       @SuppressWarnings("unchecked")
       public List<User> findByExample(User user, boolean fuzzy) {
       // TODO Auto-generated method stub
       List<User> users = null;
       Session session = this.getSession();
       Criteria criteria =
       session.createCriteria(User.class);
       Example example = Example.create(user);
       if (fuzzy) {
       example.enableLike(MatchMode.ANYWHERE);
       example.ignoreCase();
       example.excludeZeroes();
       }
       criteria.add(example);
       List<User> list = (List<User>) criteria.list();
       users = list;
       return users;
      
       }
      
       public User findByPrimaryKey(Long primaryKey) {
       // TODO Auto-generated method stub
       User user = (User)
       super.findByPrimaryKey(User.class, primaryKey);
      
       return user;
      
       }
      
      }
      


      The question is depending on where I put the jar, running the web app against JBoss 4.2.2 GA, it does not find the hibernate.cfg.xml file or the interface UserDao as well.

      And I can not get it works.

      Any idea?

      I am developing on Eclipse Ganymede RS1 that integrates the Data Base if needed and the apps server.

      Thanking in advance,
      Jose