s2sh整合<三>

quguiliang 13年前發布 | 3K 次閱讀

Person.hbm.xml

<DIV class=dp-highlighter>

<DIV class=bar>

<DIV class=tools>Xml代碼 </DIV></DIV>

<OL class=dp-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">  
  •   
  • <hibernate-mapping>  
  •     <class name="test.s2sh.bean.Person" table="person">  
  •         <id name="id" type="java.lang.Integer" column="id">  
  •             <generator class="increment"></generator>  
  •         </id>  
  •         <property name="name" type="string" column="name"  
  •          length="20"></property>  
  •          <property name="age" type="java.lang.Integer" column="age"></property>  
  •     </class>  
  • </hibernate-mapping>  
  • </OL></DIV>

    (3)在spring配置文件applicationContext.xml配置hibernate的連接數據庫信息及sessionFactory創建方式

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans  
    3.     xmlns="http://www.springframework.org/schema/beans"  
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
    6. <!-- apache.dbcp連接池的配置 -->  
    7. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
    8.     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
    9.     <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property>  
    10.     <property name="username" value="root"></property>  
    11.     <property name="password" value=""></property>  
    12.     <!-- 最大活動連接數 -->  
    13.     <property name="maxActive" value="100"></property>  
    14.     <!-- 最大可空閑連接數 -->  
    15.     <property name="maxIdle" value="30"></property>  
    16.     <!-- 最大可等待連接數 -->  
    17.     <property name="maxWait" value="500"></property>  
    18.     <!-- 默認的提交方式(如果不需要事務可以設置成true,在實際應用中一般設置為false,默認為false) -->  
    19.     <property name="defaultAutoCommit" value="true"></property>  
    20. </bean>  
    21. <!-- 這里直接使用spring對hibernate3支持的sessionFactory -->  
    22. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
    23.     <property name="dataSource" ref="dataSource"></property>  
    24.     <!-- hibernate方言等相關配置 -->  
    25.     <property name="hibernateProperties">  
    26.         <props>  
    27.             <prop key="connection.useUnicode">true</prop>  
    28.             <prop key="connection.characterEncoding">utf-8</prop>  
    29.             <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
    30.             <prop key="hibernate.show_sql">true</prop>  
    31.         </props>  
    32.     </property>  
    33.     <!-- hbm.xml的映射文件 -->  
    34.     <property name="mappingResources">  
    35.         <list>  
    36.             <value>test/s2sh/bean/Person.hbm.xml</value>  
    37.         </list>  
    38.     </property>  
    39. </bean>  
    40.   
    41. </beans>  
    42. </OL>

      如果出現亂碼問題,可以考慮如下解決方案

      或者將url后面加入編碼串,如下

      <OL class=dp-xml>

    43. <property name="url" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8"></property>  
    44. </OL>


      注意 : 這里我的數據庫編碼是utf-8
      具體那種方案好用大家可以嘗試一下,我基本上直接將兩種方式都加上了。

      (4)下面我們開始寫DAO層,首先創建test.s2sh.dao包放置Dao類的接口,創建test.s2sh.dao.impl包放置Dao類的實現。
      PersonDAO.java

      <OL class=dp-j>

    45. package test.s2sh.dao;   
    46.   
    47. import java.util.List;   
    48.   
    49. import test.s2sh.bean.Person;   
    50.   
    51. public interface PersonDAO {   
    52.     void savePerson(Person p);   
    53.     void removePerson(Person p);   
    54.     Person findPersonById(Integer id);   
    55.     List<Person> findAllPersons();   
    56.     void updatePerson(Person p);   
    57. }  
    58. </OL>

      由于使用了spring,所以DAO的實現類我們可以繼承HibernateDaoSupport進行實現
      PersonDAOImpl.java

      1. package test.s2sh.dao.impl;   
      2.   
      3. import java.util.List;   
      4.   
      5. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
      6.   
      7. import test.s2sh.bean.Person;   
      8. import test.s2sh.dao.PersonDAO;   
      9.   
      10. public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO {   
      11.   
      12.     public List<Person> findAllPersons() {   
      13.         String hql = "from Person p order by p.id desc";   
      14.         return (List<Person>)this.getHibernateTemplate().find(hql);   
      15.     }   
      16.   
      17.     public Person findPersonById(Integer id) {   
      18.         Person p = (Person) this.getHibernateTemplate().get(Person.class, id);   
      19.         return p;   
      20.     }   
      21.   
      22.     public void removePerson(Person p) {   
      23.         this.getHibernateTemplate().delete(p);   
      24.     }   
      25.   
      26.     public void savePerson(Person p) {   
      27.         this.getHibernateTemplate().save(p);   
      28.     }   
      29.   
      30.     public void updatePerson(Person p) {   
      31.         this.getHibernateTemplate().update(p);   
      32.     }   
      33.   
      34. }  
      35. </OL>

        (5)下面我們開始進行service層的設計,這里的service層僅是簡單調用DAO層的的方法。
        同樣是創建接口包(test.s2sh.service),實現包和接口類(test.s2sh.service.impl),實現類
        PersonService.java

        <OL class=dp-j>

      36. package test.s2sh.service;   
      37.   
      38. import java.util.List;   
      39.   
      40. import test.s2sh.bean.Person;   
      41.   
      42. public interface PersonService {   
      43.     List<Person> findAll();   
      44.     void save(Person p);   
      45.     void delete(Person p);   
      46.     Person findById(Integer id);   
      47.     void update(Person p);   
      48. }  
      49. </OL>

         

        </SPAN></SPAN></SPAN></SPAN>

     本文由用戶 quguiliang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!