博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]怎样利用Hibernate开发Blog实例分析
阅读量:2446 次
发布时间:2019-05-10

本文共 5764 字,大约阅读时间需要 19 分钟。

怎样利用Hibernate开发Blog实例分析
开发工具采用MYECLIPS3.6,首先是建立项目,导入STRUTS+HIBERNATE包,然后配置SRC跟目录下的Hibernate.cfg.xml.我采用的是MYSQL数据库,所以配置如下:
  
  
  
  <!-- properties --&gt
  
  root
  
  
  jdbc:mysql://localhost:3306/tonnyblog
  
  
  net.sf.hibernate.dialect.MySQLDialect
  
  
  
  org.gjt.mm.mysql.Driver
  
  <!-- mapping files --&gt
  
  
  
  
  
  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增加配置:
  
    debug="3" locale="true"
  nocache="true"
  processorClass=
  "com.tonny.blog.struts.controller.IndexRequestProcessor"/>
  
    "com.tonny.blog.struts.plugin.HibernatePlugin"/>
  
  
  
    value="0"/>
    value="false"/>
    value="/WEB-INF/title-def.xml"/>
  
  
  下面我们定义服务层:
  
  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(

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-131308/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-131308/

你可能感兴趣的文章
电脑备份iphone_如何在Linux上备份iPhone?
查看>>
latex在编译公式_如何在Linux上编译Latex
查看>>
同步主目录
查看>>
hadoop单机映射_如何在命令行中设置Hadoop的映射器和缩减器的数量?
查看>>
svg转换为png_如何在Linux中将svg转换为png?
查看>>
virtualbox 缩放_如何相当VirtualBox缩放模式?
查看>>
node.js退出命令_如何在Node.js中退出程序?
查看>>
wordpress 域名_WordPress MU:更改域名
查看>>
更改linux mtu_更改MTU以使Linux上的WiFi更快
查看>>
ubuntu gui_Ubuntu的GUI响应非常慢
查看>>
opam 命令行_添加Jane Street Opam存储库
查看>>
centos7安装wine_如何在CentOS 7上安装Wine 32位
查看>>
cdn的清理cdn缓存_网络上是否有良好的免费CDN
查看>>
ocaml_管理OCaml软件包的好工具
查看>>
vnc链接不上服务器_Windows上的免费VNC服务器软件
查看>>
emacs c语言 空格_用Emacs中的空格替换选项卡
查看>>
ssh在远程主机上创建文件_通过SSH在远程主机上运行Firefox
查看>>
linux模拟键盘按键_Linux上的自动键盘按键
查看>>
如何在CentOS 7上安装gfortran?
查看>>
gnuplot 文件_如何使用gnuplot制作eps文件
查看>>