Topquan's Blog

          分享價值----成就你我----我的博客----你的家

          利用Hibernate開發Blog實例分析

          開發工具采用 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  topquan
             
          * @created
          2006 5 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()
                  //...
                 }

          posted on 2006-05-08 15:39 topquan 閱讀(292) 評論(0)  編輯  收藏 所屬分類: Hibernate

          主站蜘蛛池模板: 津南区| 东丰县| 新田县| 株洲市| 田东县| 平顶山市| 沂源县| 滨海县| 会泽县| 隆化县| 望城县| 潮州市| 麦盖提县| 含山县| 宜章县| 天水市| 巨鹿县| 穆棱市| 泰来县| 恩施市| 天门市| 莲花县| 辽阳县| 桓仁| 宝鸡市| 香格里拉县| 榆社县| 类乌齐县| 泸定县| 徐闻县| 焦作市| 绥芬河市| 时尚| 仙桃市| 邮箱| 泸州市| 开化县| 织金县| 舟曲县| 三江| 芮城县|