浏览 3375 次
锁定老帖子 主题:关于hibernate+struts的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-05-15
我做一个HIbernate+Struts 的weblog。 代码如下: 有两个实体,Post,User: /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package entity; public class Post { int id; private String title; private String content; private User user; /** * @return Returns the user. */ public User getUser() { return user; } /** * @param user The user to set. */ public void setUser(User user) { this.user = user; } public int getId(){ return id; } public void setId(int id){ this.id=id; } /** * @return Returns the content. */ public String getContent() { return content; } /** * @param content The content to set. */ public void setContent(String content) { this.content = content; } /** * @return Returns the title. */ public String getTitle() { return title; } /** * @param title The title to set. */ public void setTitle(String title) { this.title = title; } } package entity; import java.util.Set; public class User { private String userid; private String name; private String password; private Set posts; /** * @return Returns the posts. */ public Set getPosts() { return posts; } /** * @param posts The posts to set. */ public void setPosts(Set posts) { this.posts = posts; } /** * @return Returns the name. */ public String getName() { return name; } /** * @param name The name to set. */ public void setName(String name) { this.name = name; } /** * @return Returns the password. */ public String getPassword() { return password; } /** * @param password The password to set. */ public void setPassword(String password) { this.password = password; } /** * @return Returns the userid. */ public String getUserid() { return userid; } /** * @param userid The userid to set. */ public void setUserid(String userid) { this.userid = userid; } } Form和Action如下: /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package www; import org.apache.struts.action.ActionForm; /** * @author liuwei * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ import entity.Post; public class PostForm extends ActionForm { int id; private String title; private String content; public int getId(){ return id; } public void setId(int id){ this.id=id; } /** * @return Returns the content. */ public String getContent() { return content; } /** * @param content The content to set. */ public void setContent(String content) { this.content = content; } /** * @return Returns the title. */ public String getTitle() { return title; } /** * @param title The title to set. */ public void setTitle(String title) { this.title = title; } } /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package www; import dao.HibernatePostDAO; import entity.Post; import dto.PostDTO; import dto.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import service.PostService; /** * @author liuwei * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class PostAction extends Action { /* (non-Javadoc) * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { // TODO Auto-generated method stub PostForm pf=(PostForm)form; //生成PostDTO //sevice.post(postDTO); //Post post=new Post(); //post.setTitle(pf.getTitle() ); //post.setContent(pf.getContent()); // UserDTO userdto=new UserDTO(); userdto.setUserid("111"); //生成一个postdto; PostDTO postDto=new PostDTO(); postDto.setTitle(pf.getTitle()); postDto.setContent(pf.getContent()); postDto.setUserid(userdto.getUserid() ); //调用service进行持久化 PostService postservice=new PostService(); postservice.post(postDto); return(mapping.findForward("out")); } } 然后通过Form生成DTO; /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package dto; /** * @author liuwei * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class PostDTO { private int id; private String title; private String content; private String userid; /** * @return Returns the userid. */ public String getUserid() { return userid; } /** * @param userid The userid to set. */ public void setUserid(String userid) { this.userid = userid; } public int getId(){ return id; } public void setId(int id){ this.id=id; } public String getTitle() { return title; } /** * @param title The title to set. */ public void setTitle(String title) { this.title = title; } public String getContent() { return content; } /** * @param title The title to set. */ public void setContent(String content) { this.content = content; } } 把生成的DTO在PostService里实现持久化; /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package service; import dto.*; import entity.*; import dao.*; /** * @author liuwei * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class PostService { HibernateUserDAO userdao; HibernatePostDAO postdao; public PostService(){ } public void post(PostDTO postdto){ //从dto里面获得 Post post=new Post(); post.setTitle(postdto.getTitle()); post.setContent(postdto.getContent()); HibernateUserDAO userdao=new HibernateUserDAO(); User user=userdao.getUserById(postdto.getUserid()); post.setUser(user); //先持久post,post得到id // postdao.savePost(post); //再持久user的post对象 user.getPosts().add(post); userdao.saveUser(user); } } 实现持久的文件dao为: /* * Created on 2005-5-11 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package dao; /** * @author liuwei * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ import entity.Post; import net.sf.hibernate.*; import net.sf.hibernate.cfg.*; public class HibernatePostDAO{ public void savePost(Post post){ try { SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); Post p=new Post(); p.setTitle(post.getTitle()); p.setContent(post.getContent()); session.save(p); tx.commit(); session.close(); } catch (HibernateException e) { e.printStackTrace(); } } } User为已经存在的用户! 这个流程有错误么?我在eciplise里怎么也不能实现把post插进数据库,更不用说实现post和user的关联! hibernate和struts的配置文件如下: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="Post" table="post"> <id name="id" column="id"> <generator class="increment" /> </id> <property name="title" column="title" /> <property name="content" column="content" /> <many-to-one name="user" column="user_id" class="User" /> </class> </hibernate-mapping> Post.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="User" table="user"> <id name="id" type="string" column="id"> <generator class="assigned"/> </id> <property name="name" column="name" type="string"/> <set name="posts" lazy="true" inverse="false" cascade="all" > <key column="user_id"/> <one-to-many class="Post"/> </set> </class> </hibernate-mapping> User.hbm.xml 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |