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