打印本文 打印本文 关闭窗口 关闭窗口
利用开源项目Hibernate开发Blog系统
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1881  更新时间:2009/4/22 23:29:43  文章录入:mintao  责任编辑:mintao

  开发工具采用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) {
      &

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口