0

ZK Spring Hibernate how to use saveOrUpdate

asked 2011-05-31 23:46:30 +0800

gellaps gravatar image gellaps
157 1

I'm a nubi one..

i have a simple project for adding some information, but it add nothing to database and there are no errors..
please help me..


this is my POJO class

import java.io.Serializable;

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


@Entity
@Table (name="Person2")
public class Person implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	@Column (name="id")
	private int id;
	
	@Column (name="name")
	private String name;
	
	@Column (name="surname")
	private String surname;
	
    
	
	public Person(){
		
	}
	
	public Person(int id, String name, String surname){
		this.id=id;
		this.name=name;
		this.surname=surname;
	}
	
	
	//ommiting getters and setters
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSurname() {
		return surname;
	}
	public void setSurname(String surname) {
		this.surname = surname;
	}
    
    
    
}


i'm using AbstractSpringDao like this

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public abstract class AbstractSpringDao extends HibernateDaoSupport {

	public void setSession(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}	
	
	protected void saveOrUpdate(Object obj) {
		getHibernateTemplate().saveOrUpdate(obj);
	}
	
	protected void delete(Object obj) {
		getHibernateTemplate().delete(obj);
	}
	
	protected Object find(Class clazz, Long id) {
		return getHibernateTemplate().get(clazz, id);
	}
	
	protected List findBy(Class clazz, String query) {
		return getHibernateTemplate().find("FROM "+clazz.getName()+" WHERE "+query);
	}	
	
	protected List findAll(Class clazz) {
		return getHibernateTemplate().find("FROM "+clazz.getName());
	}
	
	protected List findByOrder(Class clazz, String query) {
		return getHibernateTemplate().find("FROM "+clazz.getName()+" ORDER BY "+query);
	}
	
}


and a Dao class extending AbstractSpringDao


import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.glen.bean.Person;
 
public class PersonDAO extends AbstractSpringDao {
 
    public void saveOrUpdate(Person person) {
		super.saveOrUpdate(person);
	}
    public void delete(Object ob) {
        super.getHibernateTemplate().delete(ob);
    }
     
    public Object find(Class clazz, Long id) {
        Object ob =  super.getHibernateTemplate().load(clazz,id);
        return ob;
    }
 
    public List findAll(Class clazz) {
        List list = super.getHibernateTemplate().find("from"+" "+clazz.getName());
        return list;
    }
}


This is my Interface for Service/Composer



import java.util.List;

import com.glen.bean.Person;
 
public interface PersonManager {
  
    public List getAllPersons();
    /** for simplicity we are only providing a simple business rule method **/
}

My Service/Composer class implement the interface


import com.glen.dao.PersonDAO;
import com.glen.bean.Person;
import java.util.*;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
 
public class PersonManagerImpl extends GenericForwardComposer implements PersonManager {
	
	private Window win;
	private Textbox name;
	private Textbox surname;
	private Intbox id;
	
	private Person person;
    private PersonDAO dao;
 
    public PersonDAO getDao() {
        return this.dao;
    }
 
    public void setDao(PersonDAO personDAO) {
        this.dao = personDAO;
    }
 
    public List getAllPersons() {
        return this.dao.findAll(Person.class);
    }
    
    public void onClick$btnSave(Event event){
    	
    	try{
    		Person persons = new Person(id.getValue(), name.getValue(), surname.getValue());
    		dao.saveOrUpdate(persons);
    	}catch (Exception e) {
			// TODO: handle exception
		}
    	
    	Executions.sendRedirect("view.zul");
    	
    }
    
}


my zul

<?page title="Ticket" contentType="text/html;charset=UTF-8"?>
<zk>
	<window title="User" border="normal" id="win" apply="com.glen.composer.PersonManagerImpl">
		<groupbox mold="3d">
			<grid>
				<columns height="22px">
					<column label="Type" width="150px" />
					<column label="Content" />
				</columns>
				<rows>
					<row>
						Id :
						<intbox id="id" width="230px" constraint="no empty:Please enter ID"/>
					</row>
					<row>
						Name :
						<textbox id="name" width="230px" constraint="no empty:Please enter Name"/>
					</row>
					<row>
						Surname :
						<textbox id="surname" width="250px" constraint="no empty:Please enter Surname"/>
					</row>
					<row spans="2">
						<toolbar>
							<button id="btnSave" label="Save"
								orient="vertical" width="150px"  />
							<button id="btnCancel" label="Cancel"
								orient="vertical" width="150px" />
						</toolbar>
					</row>
				</rows>
			</grid>
		</groupbox>


	</window>
</zk>


I'm so confused, cause there are no errors..
but when i run my project, and clcik save button, it won't add the field..
please let me no where is the wrong codes..
thanks 4 any help

delete flag offensive retag edit

4 Replies

Sort by ยป oldest newest

answered 2011-06-01 03:05:38 +0800

terrytornado gravatar image terrytornado flag of Germany
9393 3 7 16
http://www.oxitec.de/

I cannot see any 'transaction' stuff in your code .

Look here.

best
Stephan

link publish delete flag offensive edit

answered 2011-06-01 04:13:58 +0800

gellaps gravatar image gellaps
157 1

thanks stephan for your advise..

i'm a newbie so sorry if i ask like this..

where must i put the Transaction??

i have add it to context.xml

 
        </bean>
    	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="factory" />
	</bean>


and i add @Transactional into my POJO class

package com.glen.bean;

import java.io.Serializable;

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

import org.springframework.transaction.annotation.Transactional;


@Entity
@Table (name="Person2")
@Transactional
public class Person implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	@Column (name="id")
	private int id;
	
	@Column (name="name")
	private String name;
	
	@Column (name="surname")
	private String surname;
	
    
	
	public Person(){
		
	}
	
	public Person(int id, String name, String surname){
		this.id=id;
		this.name=name;
		this.surname=surname;
	}
	
	
	//ommiting getters and setters
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSurname() {
		return surname;
	}
	public void setSurname(String surname) {
		this.surname = surname;
	}    
}


but still got the same..
any suggestion??

link publish delete flag offensive edit

answered 2011-06-01 05:44:23 +0800

terrytornado gravatar image terrytornado flag of Germany
9393 3 7 16
http://www.oxitec.de/

Sorry, i don't work in Annotated way. Search the hibernate forum, because it's backend dependend.

link publish delete flag offensive edit

answered 2011-06-01 08:41:57 +0800

blacksensei gravatar image blacksensei
234 2

updated 2011-06-01 08:53:48 +0800

Hey your DAO should look like this

@Repository
@Transactional
@Component("userDAO") //this line assumes that you don't need an entry in the context file for this DAO
public class UserDAOImpl {
}

and add this to your context

   <context:annotation-config />

good luck!!

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2011-05-31 23:46:30 +0800

Seen: 621 times

Last updated: Jun 01 '11

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More