Java綠地(~ming~)

          Java 草地

          常用鏈接

          統計

          最新評論

          Spring整合Hibernate配置

          SpringHibernate的整合:


          a.properties
          文件裝配:<bean id="propertyConfiguer"

          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

              <property name="locations">  <list>

          <value>classpath:mypack/jdbc.properties</value>

          <value>classpath:mypack/hibernate.properties</value></list></property> </bean>

            b.數據源的裝配:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

                <property name="driverClassName" value="${db.driver}"></property>

                <property name="url" value="${db.url}"></property>

                <property name="username" value="${db.user}"></property>

                <property name="password" value="${db.password}"></property>   </bean>

           

           c. <bean id="sessionFactory"   //接管HibernatesessionFactory

          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean   >

               <property name="dataSource" ref="dataSource"></property>

               <property name="mappingDirectoryLocations">  //加載映射文件

                 <list> <value>classpath:mypack</value> </list> </property> //采取文件目錄形式

               <property name="hibernateProperties">  <props>  //加載Hibernate屬性配制

                   <prop key="hibernate.dialect">${hibernate.dialect}</prop>   <prop key="hibernate.transaction.factory_class">${hibernate.transaction.factory_class}

          </prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>        

          <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}

          </prop>      </props>     </property>   </bean>

            

          d.sessionFactory注入手動編寫的DAO    // HibernateDaoSupport需要這個屬性

          <bean id="userDao" class="mypack.UserDaoHibernate">

               <property name="sessionFactory" ref="sessionFactory"></property>   </bean>

           

          e.Spring DAO模式:專用APIß-DAO模板(Templete)ß-DAO支持類(Support)ß--手動編寫DAO

            f.Model: public class User {private Integer id;   private String name;

                             private Date birthday;...getter/setter; }

            g.Dao接口: public interface UserDao {

              public void addUser(User user);  public void addUsers(List<User> users);

              public void updateUser(User user);  public void delete(Integer id);

              public User getUser(Integer userId);  public List getUsers();

          public int getUserCounts();   public User getUserById(Integer id);  }

           

           h. public class UserDaoHibernate extends HibernateDaoSupport implements UserDao {

              //HibernateDaoSupport 中存在getHibernateTemplate方法進行數據庫操作

          public void addUser(User user) { getHibernateTemplate().saveOrUpdate(user);  }

          saveOrUpdate:Spring自動判斷id,存在就update()如游離狀態,不存在就save()比如自由狀態

           

          public void addUsers(List<User> users) { getHibernateTemplate().saveOrUpdateAll(users);}//Spring自動遍歷集合的方法

              public void delete(Integer id) {//User user=new User();user.setId(id);

          //getHibernateTemplate().delete(user);刪除單條紀錄且不采用預處理方式

          String hql="delete from User where id=?"; getHibernateTemplate().bulkUpdate(hql,id);}//進行批處理且采用預處理方式

           

              public User getUser(Integer userId) {  

                  return (User) getHibernateTemplate().load(User.class, userId);

                  //return (User) getHibernateTemplate().get(User.class, userId); }

              Load返回實體代理類類型,此時類裝配必須是lazy=”false”,否則session會關閉

          Get返回實體類類型,lazy=”true”默認即可!

             

              public int getUserCounts() {    String hql="select count(*) from User";

          return (Integer) getHibernateTemplate().find(hql).get(0); }//從集合中得第一條

           

              public List getUsers() {

             //String hql="from User"; return getHibernateTemplate().find(hql);

                  String sql="from User u where u.id=? and u.name=?";

                  Object[] params={1,"nihao"};   //返回多個屬性得到數組

                  return getHibernateTemplate().find(sql,params);  }

            

              public void updateUser(User user) { 

                  getHibernateTemplate().update(user);    }

              public User getUserById(Integer id){//預處理得到單條紀錄

                  String hql="from User u where u.id=?";

                  return (User) getHibernateTemplate().find(hql,id);  } }

           

          i.Hibernate映射文件:<hibernate-mapping package="mypack">

             <class name="User" table="t_user" lazy="false">

                <id name="id" column="id" type="integer">

                    <generator class="native"></generator>      </id>

                <property name="name" column="name" type="string"></property>

                <property name="birthday" column="birthday" type="timestamp"></property>

             </class> </hibernate-mapping>

          posted on 2007-08-17 19:09 mrklmxy 閱讀(2894) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 汕尾市| 东丰县| 江西省| 松滋市| 津南区| 寿宁县| 桂林市| 昆明市| 抚松县| 锡林郭勒盟| 驻马店市| 夏河县| 马尔康县| 礼泉县| 商水县| 周口市| 海兴县| 嵩明县| 甘洛县| 高密市| 南开区| 青海省| 大庆市| 沾益县| 池州市| 昭平县| 翼城县| 安溪县| 天津市| 普兰店市| 安仁县| 伊宁市| 周宁县| 宣恩县| 田阳县| 吴川市| 五莲县| 柘城县| 奉化市| 如东县| 英超|