日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Spring整合Hibernate圖文步驟

 鷹皇軟件 2015-01-07

工具:myeclipse9.0

Spring版本:2.5.6

Hibernate版本:3



昨天花了一下午時間把Spring和Hibernate整合到了一起,今天做一個筆記。  

首先建立java Project工程


點擊Finish完成


添加Hibernate和Spring所需要的jar包還有Mysql連接的jar包




創(chuàng)建Dao層,Dao層實現(xiàn),Model層,Service層



DAO層代碼:IUserDao

  1. package org.zhy.demo.dao;  
  2.   
  3. import java.sql.SQLException;  
  4.   
  5. import org.zhy.demo.dao.model.UserInfo;  
  6. /** 
  7.  * DAO層簡單的增刪改查方法 
  8.  * @author Administrator 
  9.  * 
  10.  */  
  11. public interface IUserDao {  
  12.   
  13.     public void saveUser(UserInfo user) throws SQLException;  
  14.   
  15.     public void delUser(UserInfo user) throws SQLException;  
  16.   
  17.     public void editUsre(UserInfo user) throws SQLException;  
  18.   
  19.     public UserInfo getUserById(int id) throws SQLException;  
  20.   
  21. }  


IUuserDao層實現(xiàn)(暫時空實現(xiàn))


  1. package org.zhy.demo.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4.   
  5. import org.zhy.demo.dao.IUserDao;  
  6. import org.zhy.demo.dao.model.UserInfo;  
  7.   
  8. /**  
  9.  * IUserDao實現(xiàn),配置完Spring及Hibernate文件后實現(xiàn)此類  
  10.  * @author Administrator  
  11.  *  
  12.  */  
  13. public class IUserDaoImpl implements IUserDao {  
  14.   
  15.     @Override  
  16.     public void saveUser(UserInfo user) throws SQLException {  
  17.   
  18.     }  
  19.   
  20.     @Override  
  21.     public void delUser(UserInfo user) throws SQLException {  
  22.   
  23.     }  
  24.   
  25.     @Override  
  26.     public void editUsre(UserInfo user) throws SQLException {  
  27.   
  28.     }  
  29.   
  30.     @Override  
  31.     public UserInfo getUserById(int id) throws SQLException {  
  32.         return null;  
  33.     }  
  34.   
  35. }  


Model代碼

  1. package org.zhy.demo.dao.model;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.Id;  
  6.   
  7. @Entity  
  8. public class UserInfo {  
  9.   
  10.       
  11.     private int id;  
  12.     private String name;  
  13.     private String title;  
  14.   
  15.     @Id  
  16.     @GeneratedValue  
  17.     public int getId() {  
  18.         return id;  
  19.     }  
  20.   
  21.     public void setId(int id) {  
  22.         this.id = id;  
  23.     }  
  24.   
  25.     public String getName() {  
  26.         return name;  
  27.     }  
  28.   
  29.     public void setName(String name) {  
  30.         this.name = name;  
  31.     }  
  32.   
  33.     public String getTitle() {  
  34.         return title;  
  35.     }  
  36.   
  37.     public void setTitle(String title) {  
  38.         this.title = title;  
  39.     }  
  40.   
  41. }  



下面添加Spring配置文件

在Src目錄下添加SpringContext.xml


  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www./schema/beans"  
  3.     xmlns:xsi="http://www./2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www./schema/aop"  
  5.     xmlns:tx="http://www./schema/tx"  
  6.     xsi:schemaLocation="http://www./schema/beans  
  7.            http://www./schema/beans/spring-beans-2.5.xsd  
  8.            http://www./schema/aop http://www./schema/aop/spring-aop-2.5.xsd  
  9.            http://www./schema/tx http://www./schema/tx/spring-tx-2.5.xsd  
  10.            ">  
  11.     <aop:config></aop:config>  
  12.   
  13.     <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />  
  14.   
  15.     <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  16.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  17.         <property name="url" value="jdbc:mysql://localhost/student"></property>  
  18.         <property name="username" value="root" />   
  19.         <property name="password" value="root" />   
  20.         <!-- 數(shù)據(jù)庫連接池保持的最小連接數(shù) -->  
  21.         <property name="minIdle" value="5" />  
  22.         <!-- 數(shù)據(jù)庫連接池保持的最大連接數(shù) -->   
  23.         <property name="maxIdle" value="30" />  
  24.         <!--  
  25.             當數(shù)據(jù)庫連接因為某種原因斷掉之后,再重新從連接池中拿另外一個連接時實際上這個連接可能  
  26.             已經(jīng)無效,所以為了確保所拿到的連接全都有效需要在獲取連接,返回連接以及連接空閑時進行  
  27.             有效性驗證 下面3個設(shè)置為ture時進行驗證,默認為false  
  28.          -->  
  29.         <!-- 取得連接時是否進行有效性驗證 -->  
  30.         <property name="testOnBorrow" value="true" />  
  31.         <!-- 返回連接時是否進行有效性驗證 -->  
  32.         <property name="testOnReturn" value="true" />  
  33.         <!-- 連接空閑時是否進行有效性驗證 -->  
  34.         <property name="testWhileIdle" value="true" />  
  35.           
  36.     </bean>  
  37.       
  38.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  39.         <property name="dataSource" ref="datasource" />  
  40.         <!-- 注意:我用的是Annotation的方式配置的Hibernate,這里的property的name是annotatedClasses -->  
  41.         <property name="annotatedClasses">  
  42.             <list>  
  43.                 <value>org.zhy.demo.dao.model.UserInfo</value>  
  44.             </list>  
  45.         </property>  
  46.         <property name="hibernateProperties">  
  47.             <props>  
  48.                 <!-- 設(shè)置Hibernate方言 -->  
  49.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
  50.                 <!-- 是否打印sql -->  
  51.                 <prop key="hibernate.show_sql">true</prop>  
  52.                 <!-- 格式化sql -->  
  53.                 <prop key="hibernate.format_sql">true</prop>  
  54.                 <!-- 是否自動更新表 -->  
  55.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  56.                 <prop key="hibernate.current_session_context_class">thread</prop>  
  57.                 <!-- 最大抓取深度,如果為0,則關(guān)閉默認的外連接抓取。建議值為0-3 -->  
  58.                 <prop key="hibernate.max_fetch_depth">1</prop>  
  59.                 <!-- 用于生成有助于調(diào)試的注釋信息,默認為關(guān)閉 -->  
  60.                 <prop key="hibernate.use_sql_comments">true</prop>  
  61.             </props>  
  62.         </property>  
  63.     </bean>  
  64.       
  65.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >  
  66.         <property name="sessionFactory" ref="sessionFactory"></property>  
  67.     </bean>  
  68.       
  69.     <aop:config>  
  70.         <aop:pointcut id="txMethod" expression="execution(* org.zhy.demo.dao.impl.*DaoImpl.*(..))" />  
  71.         <aop:advisor advice-ref="txAdvice" pointcut-ref="txMethod"/>  
  72.     </aop:config>  
  73.     <!-- AOP切面聲明事務(wù)管理 -->  
  74.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  75.         <tx:attributes>  
  76.             <tx:method name="save*" propagation="REQUIRED" /> <!-- 支持當前事務(wù),如果執(zhí)行到save開頭的任何方法時沒有事務(wù)則開啟一個事務(wù) 這是最常見的方式-->  
  77.             <tx:method name="update*" propagation="REQUIRED" /><!-- 支持當前事務(wù),如果執(zhí)行到save開頭的任何方法時沒有事務(wù)則開啟一個事務(wù) 這是最常見的方式-->  
  78.             <tx:method name="add*" propagation="REQUIRED" /><!-- 支持當前事務(wù),如果執(zhí)行到save開頭的任何方法時沒有事務(wù)則開啟一個事務(wù) 這是最常見的方式-->  
  79.             <tx:method name="delete*" propagation="REQUIRED" /><!-- 支持當前事務(wù),如果執(zhí)行到save開頭的任何方法時沒有事務(wù)則開啟一個事務(wù) 這是最常見的方式-->  
  80.             <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> <!-- 支持當前事務(wù),如果當前沒有事務(wù),就以非事務(wù)方式執(zhí)行。只讀 -->  
  81.             <tx:method name="get*" propagation="SUPPORTS" read-only="true"/><!-- 支持當前事務(wù),如果當前沒有事務(wù),就以非事務(wù)方式執(zhí)行。只讀 -->  
  82.             <tx:method name="*" />  
  83.         </tx:attributes>  
  84.     </tx:advice>  
  85.       
  86.       
  87.     <bean name="userDao" class="org.zhy.demo.dao.impl.IUserDaoImpl" >  
  88.         <property name="sessionFactory" ref="sessionFactory"></property>  
  89.     </bean>  
  90.     <bean name="userService" class="org.zhy.demo.service.UserService" />  
  91.   
  92. </beans>  



修改DAO實現(xiàn)類


  1. package org.zhy.demo.dao.impl;  
  2.   
  3. import java.sql.SQLException;  
  4.   
  5. import org.hibernate.SessionFactory;  
  6. import org.springframework.orm.hibernate3.HibernateTemplate;  
  7. import org.zhy.demo.dao.IUserDao;  
  8. import org.zhy.demo.dao.model.UserInfo;  
  9.   
  10. /** 
  11.  * IUserDao實現(xiàn) 
  12.  *  
  13.  * @author Administrator 
  14.  *  
  15.  */  
  16. public class IUserDaoImpl implements IUserDao {  
  17.   
  18.     private HibernateTemplate hibernateTemplate;  
  19.   
  20.     public void setSessionFactory(SessionFactory sessionFactory) {  
  21.         this.hibernateTemplate = new HibernateTemplate(sessionFactory);  
  22.     }  
  23.   
  24.     @Override  
  25.     public void saveUser(UserInfo user) throws SQLException {  
  26.         hibernateTemplate.save(user);  
  27.     }  
  28.   
  29.     @Override  
  30.     public void delUser(UserInfo user) throws SQLException {  
  31.         hibernateTemplate.delete(user);  
  32.     }  
  33.   
  34.     @Override  
  35.     public void editUsre(UserInfo user) throws SQLException {  
  36.         hibernateTemplate.update(user);  
  37.     }  
  38.   
  39.     @Override  
  40.     public UserInfo getUserById(int id) throws SQLException {  
  41.         UserInfo user = (UserInfo) hibernateTemplate.get(UserInfo.class, id);  
  42.         return user;  
  43.     }  
  44.   
  45. }  


junit測試


  1. @Test  
  2. public void saveUserTest() throws SQLException{  
  3.     ApplicationContext context= new ClassPathXmlApplicationContext("/SpringContext.xml");  
  4.     UserService service =(UserService) context.getBean("userService");  
  5.       
  6.     UserInfo user = new UserInfo();  
  7.     user.setName("T`");  
  8.     user.setTitle("CSDN BLOG");  
  9.     service.addUserInfo(user);  
  10. }  



項目源碼地址:http://download.csdn.net/detail/qq7342272/4539552

源碼中的注釋及代碼是比較全的


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多