Simple hibernate web app
pepelara Oct 28, 2009 11:36 PMHello,
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