网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.走向J2EE,漫长的道路.
.在Eclipse中使用Hibernate一(组图.
.构建N840手机应用开发环境.
.用DatabaseProPerTyex()检查过程.
.sup 方法.
.Java动画编程基础.
.使用JDOM操作XML系列文章二 从数.
.上班的学习之一:工厂模式.
.J2ME 进度条与线程化模型实例解析.
.基于UML柔性开发模型之Java设计.
..NET 和智能传输服务API编写自动.
.一个MIDP俄罗斯方块游戏的设计和.
.Java操作Oracle数据库(建表,插.
.JAVA入门教程:数据类型.
.Java开发工具与开发环境问答.
.无线JAVA的移动游戏解决方案.
.获取运行中的JVM系统属性.
.两种最流行的开源CORBA实现.
.RMI规范--第九章.
.Java多线程及其同步实现原理.

实例讲解如何利用Hibernate开发Blog

发表日期:2008-3-24


首先我们需要建立项目(开发工具采用MYECLIPS3.6),导入STRUTS+HIBERNATE包,然后配置SRC跟目录下的Hibernate.cfg.xml。本文中的示例使用的是MySQL数据库,详细的配置如下:

  <hibernate-configuration>
  <session-factory>
  <!-- properties -->
  <property name="connection.username">
  root
  </property>
  <property name="connection.url">
  jdbc:mysql://localhost:3306/tonnyblog
  </property>
  <property name="dialect">
  net.sf.hibernate.dialect.MySQLDialect
  </property>
  <property name="connection.password"></property>
  <property name="connection.driver_class">
  org.gjt.mm.mysql.Driver
  </property>
  <!-- mapping files -->
  <mapping resource="com/tonny/blog/bean/User.hbm.xml"/>
  <mapping resource="com/tonny/blog/bean/Item.hbm.xml"/>
  <mapping resource="com/tonny/blog/bean/Review.hbm.xml"/>
  </session-factory></hibernate-configuration>
  
  mapping为JAVABEAN所对应的映射。
  
  下面我们继续HIBERNATE程序的下步编写:
  
  import net.sf.hibernate.HibernateException;
  import net.sf.hibernate.Session;
  import net.sf.hibernate.SessionFactory;
  import net.sf.hibernate.cfg.Configuration;
  /** * Description of the Class * *
  @author  tonny * @created
  2004年2月6日
  */public class HibernateUtil
  {
  private final static SessionFactory sessionFactory;
  static
  {
  try
  {
  sessionFactory =
  new Configuration().configure().buildSessionFactory();
  }
  catch (HibernateException ex)
  {
  throw new RuntimeException(
  "Exception building SessionFactory:
  " + ex.getMessage(),ex);
  }
  }
  private HibernateUtil(){  }
  /**   * Description of the Field
  */
  private final static ThreadLocal
  session = new ThreadLocal();
  /**   * Description of the Method
  *   * @return
  Description of the Return Value   *
  @exception HibernateException
  Description of the Exception   */
  public static Session currentSession()
  throws HibernateException
  {
  Session s = (Session) session.get();
  if (s == null)
  {
  s = sessionFactory.openSession();
  session.set(s);
  }    return s;
  }
  /**   * Description of the Method
  *   * @exception HibernateException
  Description of the Exception   */
  public static void closeSession()
  throws HibernateException {
  Session s = (Session) session.get();
  session.set(null);
  if (s != null)
  {
  s.close();
  }
  }
  public static void init()
  {
  }
  }
  
  创建sessionFactory
  
  import net.sf.hibernate.HibernateException;
  import net.sf.hibernate.SessionFactory;
  import net.sf.hibernate.cfg.Configuration;
  import org.apache.struts.action.ActionServlet;
  import org.apache.struts.action.PlugIn;
  import org.apache.struts.config.ModuleConfig;
  import com.tonny.blog.dao.hibernate.HibernateUtil;
  public class HibernatePlugin
  implements org.apache.struts.action.PlugIn
  {
  public void init(ActionServlet servlet,
  ModuleConfig config)
  {
  HibernateUtil.init();
  }
  public void destroy()
  {
  try
  {
  HibernateUtil.closeSession();
  }
  catch(HibernateException hex)
  {
  hex.printStackTrace();
  }
  }
  }
  
  以上为HIBERNATE基本配置,对数据库操作采用DAO模式,增加配置如下:
  
  import com.tonny.blog.dao.hibernate.*;
  public class DAOFactory
  {
  private static DAOFactory instance;
  public synchronized static DAOFactory getInstance()
  {
  if
  (instance == null)
  {
  instance = new DAOFactory();
  }
  return instance;
  }
  private DAOFactory()
  {
  }
  public ItemDAO getItemDAO()
  {
  return new ItemDAOHibernate();
  }
  public ReviewDAO getReviewDAO()
  {
  return new ReviewDAOHibernate();
  }
  public UserDAO getUserDAO()
  {
  return new UserDAOHibernate();
  }
  }
  
  struts.xml增加配置:
  
  <controller contentType="text/html"
  debug="3" locale="true"
  nocache="true"
  processorClass=
  "com.tonny.blog.struts.controller.IndexRequestProcessor"/>
  <message-resources parameter="com.tonny.resource"/>
  <plug-in className=
  "com.tonny.blog.struts.plugin.HibernatePlugin"/>
  <plug-in className="org.apache.struts.tiles.TilesPlugin">
  <set-property property="moduleAware" value="true"/>
  <set-property property="definitions-debug" value="0"/>
  <set-property property="definitions-parser-details"
  value="0"/>
  <set-property property="definitions-parser-validate"
  value="false"/>
  <set-property property="definitions-config"
  value="/WEB-INF/title-def.xml"/>
  </plug-in>
  
  下面我们定义服务层:
  
  public class ServiceFactory
  {
  private static ServiceFactory instance;
  public synchronized static ServiceFactory getInstance()
  {
  if (instance == null)
  {
  instance = new ServiceFactory();
  }
  return instance;
  }
  private ServiceFactory()
  {
  }
  public
  IService getService()
  {
  return new ServiceImp();
  }
  }
  
  import com.tonny.blog.struts.form.*;
  import com.tonny.blog.view.*;
  import com.tonny.blog.bean.*;
  import java.util.*;
  import javax.servlet.http.*;
  public interface IService
  {
  public UserContainer login(UserForm userForm);
  public boolean logout(UserContainer userContainer);
  public boolean addBlog(BlogForm blogForm,String filePath);
  public boolean removeBlog(Long id);
  public boolean addReview(Long topicId,ReviewForm reviewForm);
  public boolean updateBlog(Long id,String conten,String topic);
  public boolean removeReview(Long id);
  public List getItems();
  public ItemView getItem(Long id);
  public ItemView getEditItem(Long id);
  public List search(SearchForm searchForm);
  /**   * @param id   * @param userForm   */
  public boolean addUser(UserForm userForm);
  }
  
  import com.tonny.blog.struts.form.*;
  import com.tonny.blog.view.*;
  import com.tonny.blog.dao.*;
  import com.tonny.blog.bean.*;
  import java.util.*;import javax.servlet.http.*;
  import com.tonny.blog.struts.util.FileUpload;
  public class ServiceImp implements IService
  {
  public UserContainer login(UserForm userForm)
  {
  UserDAO userDAO=DAOFactory.getInstance().getUserDAO();
  User user=userDAO.loadUser(userForm.getName());
  if(user==null)return new UserContainer("",false);
  if(!user.getPassword().equals(userForm.getPassword()))
  return new UserContainer("",false);
  return new UserContainer(userForm.getName(),true);
  }
  public boolean logout(UserContainer userContainer)
  {
  userContainer.setLogin(false);
  userContainer.setName("");
  return true;
  }
  public boolean addBlog(BlogForm blogForm,String path)
  {
  ItemDAO itemDAO=DAOFactory.getInstance().getItemDAO();
  Item item=new Item(blogForm.getTopic(),
  blogForm.getContent(),
  FileUpload.upload(blogForm.getFile(),path),new Date());
  itemDAO.addItem(item);
  return true;
  }
  public boolean removeBlog(Long id)
  {
  ReviewDAO reviewDAO=DAOFactory.getInstance(
上一篇:在Struts中使用PlugIn扩展Hibernate 人气:801
下一篇:JAVA基础知识:JAVA变量类型之间的相互转换 人气:607
浏览全部Hibernate的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐