176142998

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks
          一:
          myeclipse 傻瓜式的完成spring和hibernate的載入;
          注意需要把lib里面的asm-XXcommons-collections-XX 低版本的刪除掉,因為載入spring和hibernate的時候會裝在2個不一樣的版本,包沖突.
          記得把dwr的包放進去
          數據庫用mysql.
          CREATE TABLE `book` (
            `id` int(11) NOT NULL auto_increment,
            `name` varchar(11) default NULL,
            `isbm` varchar(11) default NULL,
            `author` varchar(11) default NULL,
            PRIMARY KEY  (`id`)
          ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk;
          id為自動增長
          二:
          完成上步后用hibernate的反向機制,完成數據庫表的映射
          如下:
          AbstractBook.java

          package com;

          /**
           * AbstractBook generated by MyEclipse Persistence Tools
           */

          public abstract class AbstractBook implements java.io.Serializable {

           // Fields

           private Integer id;
           private String name;
           private String isbm;
           private String author;

           // Constructors

           /** default constructor */
           public AbstractBook() {
           }

           /** full constructor */
           public AbstractBook(String name, String isbm, String author) {
            this.name = name;
            this.isbm = isbm;
            this.author = author;
           }

           // Property accessors

           public Integer getId() {
            return this.id;
           }

           public void setId(Integer id) {
            this.id = id;
           }

           public String getName() {
            return this.name;
           }

           public void setName(String name) {
            this.name = name;
           }

           public String getIsbm() {
            return this.isbm;
           }

           public void setIsbm(String isbm) {
            this.isbm = isbm;
           }

           public String getAuthor() {
            return this.author;
           }

           public void setAuthor(String author) {
            this.author = author;
           }

          }


          Book.java

          package com;

          // Generated by MyEclipse Persistence Tools

          /**
           * Book generated by MyEclipse Persistence Tools
           */
          public class Book extends AbstractBook implements java.io.Serializable {

           // Constructors

           /** default constructor */
           public Book() {
           }

           /** full constructor */
           public Book(String name, String isbm, String author) {
            super(name, isbm, author);
           }

          }


          BookDAO.java

          package com;

          import java.util.List;
          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.hibernate.LockMode;
          import org.springframework.context.ApplicationContext;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

          /**
           * Data access object (DAO) for domain model class Book.
           *
           * @see com.Book
           * @author MyEclipse Persistence Tools
           */

          public class BookDAO extends HibernateDaoSupport {
           private static final Log log = LogFactory.getLog(BookDAO.class);

           protected void initDao() {
            // do nothing
           }

           public void save(Book transientInstance) {
            log.debug("saving Book instance");
            try {
             getHibernateTemplate().save(transientInstance);
             log.debug("save successful");
            } catch (RuntimeException re) {
             log.error("save failed", re);
             throw re;
            }
           }

           public void delete(Book persistentInstance) {
            log.debug("deleting Book instance");
            try {
             getHibernateTemplate().delete(persistentInstance);
             log.debug("delete successful");
            } catch (RuntimeException re) {
             log.error("delete failed", re);
             throw re;
            }
           }

           public Book findById(java.lang.Integer id) {
            log.debug("getting Book instance with id: " + id);
            try {
             Book instance = (Book) getHibernateTemplate().get("com.Book", id);
             return instance;
            } catch (RuntimeException re) {
             log.error("get failed", re);
             throw re;
            }
           }

           public List findByExample(Book instance) {
            log.debug("finding Book instance by example");
            try {
             List results = getHibernateTemplate().findByExample(instance);
             log.debug("find by example successful, result size: "
               + results.size());
             return results;
            } catch (RuntimeException re) {
             log.error("find by example failed", re);
             throw re;
            }
           }

           public List findByProperty(String propertyName, Object value) {
            log.debug("finding Book instance with property: " + propertyName
              + ", value: " + value);
            try {
             String queryString = "from Book as model where model."
               + propertyName + "= ?";
             return getHibernateTemplate().find(queryString, value);
            } catch (RuntimeException re) {
             log.error("find by property name failed", re);
             throw re;
            }
           }

           public List findAll() {
            log.debug("finding all Book instances");
            try {
             String queryString = "from Book";
             return getHibernateTemplate().find(queryString);
            } catch (RuntimeException re) {
             log.error("find all failed", re);
             throw re;
            }
           }

           public Book merge(Book detachedInstance) {
            log.debug("merging Book instance");
            try {
             Book result = (Book) getHibernateTemplate().merge(detachedInstance);
             log.debug("merge successful");
             return result;
            } catch (RuntimeException re) {
             log.error("merge failed", re);
             throw re;
            }
           }

           public void attachDirty(Book instance) {
            log.debug("attaching dirty Book instance");
            try {
             getHibernateTemplate().saveOrUpdate(instance);
             log.debug("attach successful");
            } catch (RuntimeException re) {
             log.error("attach failed", re);
             throw re;
            }
           }

           public void attachClean(Book instance) {
            log.debug("attaching clean Book instance");
            try {
             getHibernateTemplate().lock(instance, LockMode.NONE);
             log.debug("attach successful");
            } catch (RuntimeException re) {
             log.error("attach failed", re);
             throw re;
            }
           }

           public static BookDAO getFromApplicationContext(ApplicationContext ctx) {
            return (BookDAO) ctx.getBean("BookDAO");
           }
          }


          web.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
           http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
           <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
           </context-param>
           <listener>
            <listener-class>
             org.springframework.web.context.ContextLoaderListener
            </listener-class>
           </listener>
           <servlet>
            <servlet-name>dwr-invoker</servlet-name>
            <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
            <init-param>
             <param-name>debug</param-name>
             <param-value>true</param-value>
            </init-param>
           </servlet>

           <servlet-mapping>
            <servlet-name>dwr-invoker</servlet-name>
            <url-pattern>/dwr/*</url-pattern>
           </servlet-mapping>
           <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
           </welcome-file-list>
          </web-app>

           



          Book.hbm.xml

          <?xml version="1.0" encoding="utf-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
          <!--
              Mapping file autogenerated by MyEclipse Persistence Tools
          -->
          <hibernate-mapping>
              <class name="com.Book" table="book" catalog="test">
                  <id name="id" type="java.lang.Integer">
                      <column name="id" />
                      <generator class="native" />
                  </id>
                  <property name="name" type="java.lang.String">
                      <column name="name" length="11" />
                  </property>
                  <property name="isbm" type="java.lang.String">
                      <column name="isbm" length="11" />
                  </property>
                  <property name="author" type="java.lang.String">
                      <column name="author" length="11" />
                  </property>
              </class>
          </hibernate-mapping>

          BookManageService.java 暴露給dwr使用的接口

          package com;

          import java.util.List;

          public interface BookManageService {

           public List<Book> getAllBooks();

           public List<Book> getBookByName(String name);

           public void updateBook(Book book);

           public void addBook(Book book);

           public void deleteBook(Integer id);
          }


          BookManageServiceImpl.java 接口的實現類

          package com;

          import java.util.List;

          public class BookManageServiceImpl implements BookManageService {

           private BookDAO bookDAO;

           public BookDAO getBookDAO() {
            return bookDAO;
           }

           public void setBookDAO(BookDAO bookDAO) {
            this.bookDAO = bookDAO;
           }
           public void addBook(Book book) {
            System.out.println("impl:"+book);
            bookDAO.save(book);
           }

           public void deleteBook(Integer id) {
            Book book = bookDAO.findById(id);
            bookDAO.delete(book);
           }


           @SuppressWarnings("unchecked")
           public List<Book> getAllBooks() {

            return bookDAO.findAll();
           }


           @SuppressWarnings("unchecked")
           public List<Book> getBookByName(String name) {

            return bookDAO.findByProperty(name, name);
           }

           public void updateBook(Book book) {
            bookDAO.attachDirty(book);
           }


          }



          applicationContext.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
           <bean id="dataSource"
            class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName"
             value="com.mysql.jdbc.Driver">
            </property>
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"></property>
            <property name="username" value="root"></property>
            <property name="password" value="root"></property>
           </bean>
           <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource">
             <ref bean="dataSource" />
            </property>
            <property name="hibernateProperties">
             <props>
              <prop key="hibernate.dialect">
               org.hibernate.dialect.MySQLDialect
              </prop>
              <prop key="hibernate.show_sql">true</prop>
             </props>
            </property>
            <property name="mappingResources">
             <list>
              <value>com/Book.hbm.xml</value>
             </list>
            </property>
           </bean>
          <bean id="BookDAO" class="com.BookDAO">
            <property name="sessionFactory">
             <ref bean="sessionFactory" />
            </property>
           </bean>
          <bean id="bookManageServiceTarget"
            class="com.BookManageServiceImpl">
            <property name="bookDAO">
             <ref bean="BookDAO" />
            </property>
           </bean>
           <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory">
             <ref bean="sessionFactory" />
            </property>
           </bean>
           <bean id="bookManageService"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager" ref="transactionManager" />
            <property name="target" ref="bookManageServiceTarget" />
            <property name="transactionAttributes">
             <props>
              <prop key="add*">PROPAGATION_REQUIRED</prop>
              <prop key="delete*">PROPAGATION_REQUIRED</prop>
              <prop key="update*">PROPAGATION_REQUIRED</prop>
              <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
             </props>
            </property>
           </bean>
          </beans>

          dwr.xml

          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">
          <dwr>
           <allow>
            <convert converter="bean" match="com.Book" />
            <create creator="spring" javascript="BookManageService">
             <param name="beanName" value="bookManageService" />
             <include method="getAllBooks" />
             <include method="getBookByName" />
             <include method="updateBook" />
             <include method="addBook" />
             <include method="deleteBook" />
            </create>
           </allow>
          </dwr>

          index.jsp


          <html>
           <head>
            <title>DWR test</title>
            <script type='text/javascript' src='/shdwr/dwr/interface/BookManageService.js'></script>
            <script type='text/javascript' src='/shdwr/dwr/engine.js'></script>
            <script type='text/javascript' src='/shdwr/dwr/util.js'></script>

            <script type="text/javascript">
                  var bookCache ={};
                  var currentBook = null;
                 
                  function loadAllBooks(){
                      BookManageService.getAllBooks(handleGetAllBooks,handleGetAllBooksError);
                  }
                  function handleGetAllBooks(books){
                      dwr.util.removeAllRows("booksBody",{ filter:function(tr){
                 return (tr.id != "pattern");
                 }});
           
                      var book,id;
                      for(var i = 0; i < books.length; i++){
                          book = books[i];
                        
                          id = book.id;
                    
                          dwr.util.cloneNode("pattern", { idSuffix:id });
                          dwr.util.setValue("t_name" + id, book.name);
                          dwr.util.setValue("t_isbm" + id, book.isbm);
                          dwr.util.setValue("t_author" + id,book.author);
                         $("pattern" + id).style.display = "block";
                         bookCache[id] = book;
                      }
                  }
                  function handleGetAllBooksError(msg){
                      alert("Error: " + msg);
                  }
                 
                  function addBook(){
                      var book ={name:null,isbm:null,author:null};
                      dwr.util.getValues(book);
                      dwr.engine.beginBatch();
                           BookManageService.addBook(book);
                           loadAllBooks();
                        dwr.engine.endBatch();
                  }
                 
                  function editBook(btId){
                      currentBook = bookCache[btId.substring(4)];
                      dwr.util.setValues(currentBook);
                  }
                 
                  function updateBook(){
                      var book = {id:null,name:null,isbm:null,author:null};
                      dwr.util.getValues(book);
                      book.id = currentBook.id;
                      BookManageService.updateBook(book,handleUpdateBook,handleUpdateBookError);
                  }
                 
                  function handleUpdateBook(){
                      alert("Update book successfully!");
                      loadAllBooks();
                  }
                 
                  function handleUpdateBookError(msg){
                      alert("Error: " + msg);
                  }
                 
                  function deleteBook(btId){
                      var i = confirm("Are you sure to delete the book?");
                      if(i == true)
                          BookManageService.deleteBook(btId.substring(6),handleDeleteBook,handleDeleteBookError);
                  }
                 
                  function handleDeleteBook(){
                    alert("The book has been delete successfully!");
                    loadAllBooks();
                  }
                 
                  function handleDeleteBookError(msg){
                    alert("Error: " + msg);
                  }
                  function reset(){
                     dwr.util.setValue("name", "");
                     dwr.util.setValue("isbm", "");
                     dwr.util.setValue("author", "");
                  }
              </script>
           </head>


           <body onload="loadAllBooks()">
            <div>
             <h2>
              Add book
             </h2>
             <table>
              <tr>
               <td>
                Name:
               </td>
               <td>
                <input type="text" id="name">
               </td>
              </tr>
              <tr>
               <td>
                ISBN:
               </td>
               <td>
                <input type="text" id="isbm">
               </td>
              </tr>

              <tr>
               <td>
                Author:
               </td>
               <td>
                <input type="text" id="author">
               </td>
              </tr>
              <tr>
               <td colspan="2">
                <input type="button" id="add" value="Add" onclick="addBook()">
                <input type="reset"  id="reset" value="reset" onclick="reset()">
                <input type="button" id="update" value="Update"
                 onclick="updateBook()">
               </td>
              </tr>
             </table>
            </div>
            <hr>
            <div id="list">
             <table border="1">
              <thead>
               <tr>
                <th>
                 Name
                </th>
                <th>
                 ISBN
                </th>
                <th>
                 Author
                </th>
                <th>
                 Action
                </th>
               </tr>
              </thead>
              <tbody id="booksBody">
               <tr id="pattern" style="display: none;">
                <td>
                 <span id="t_name"></span>
                </td>
                <td>
                 <span id="t_isbm"></span>
                </td>
                <td>
                 <span id="t_author"></span>
                </td>
                <td>
                 <span id="action"> <input id="edit" type="button"
                   value="Edit" onclick="editBook(this.id)" /> <input id="delete"
                   type="button" value="Delete" onclick="deleteBook(this.id)" />
                 </span>
                </td>
               </tr>
              </tbody>
             </table>
            </div>
           </body>


          posted on 2008-08-13 19:55 飛飛 閱讀(658) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 肥东县| 临泽县| 武城县| 长乐市| 扬州市| 蒙城县| 八宿县| 攀枝花市| 乃东县| 合阳县| 涪陵区| 海宁市| 广西| 塔城市| 南丹县| 晋城| 香格里拉县| 册亨县| 芮城县| 绥德县| 盱眙县| 临武县| 河津市| 都昌县| 柞水县| 无锡市| 新丰县| 深泽县| 嘉荫县| 来安县| 武汉市| 民乐县| 都安| 广平县| 平安县| 广汉市| 漯河市| 全南县| 高雄县| 合阳县| 遂平县|