zoukankan      html  css  js  c++  java
  • Spring整合Hibernate图文步骤

    首先建立java Project工程


    点击Finish完成


    添加Hibernate和Spring所需要的jar包还有Mysql连接的jar包




    创建Dao层,Dao层实现,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层实现(暂时空实现)


    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实现,配置完Spring及Hibernate文件后实现此类  
    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.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xmlns:aop="http://www.springframework.org/schema/aop"  
    5.     xmlns:tx="http://www.springframework.org/schema/tx"  
    6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    7.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
    8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
    9.            http://www.springframework.org/schema/tx http://www.springframework.org/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.         <!-- 数据库连接池保持的最小连接数 -->  
    21.         <property name="minIdle" value="5" />  
    22.         <!-- 数据库连接池保持的最大连接数 -->   
    23.         <property name="maxIdle" value="30" />  
    24.         <!--  
    25.             当数据库连接因为某种原因断掉之后,再重新从连接池中拿另外一个连接时实际上这个连接可能  
    26.             已经无效,所以为了确保所拿到的连接全都有效需要在获取连接,返回连接以及连接空闲时进行  
    27.             有效性验证 下面3个设置为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.                 <!-- 设置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,则关闭默认的外连接抓取。建议值为0-3 -->  
    58.                 <prop key="hibernate.max_fetch_depth">1</prop>  
    59.                 <!-- 用于生成有助于调试的注释信息,默认为关闭 -->  
    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切面声明事务管理 -->  
    74.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
    75.         <tx:attributes>  
    76.             <tx:method name="save*" propagation="REQUIRED" /> <!-- 支持当前事务,如果执行到save开头的任何方法时没有事务则开启一个事务 这是最常见的方式-->  
    77.             <tx:method name="update*" propagation="REQUIRED" /><!-- 支持当前事务,如果执行到save开头的任何方法时没有事务则开启一个事务 这是最常见的方式-->  
    78.             <tx:method name="add*" propagation="REQUIRED" /><!-- 支持当前事务,如果执行到save开头的任何方法时没有事务则开启一个事务 这是最常见的方式-->  
    79.             <tx:method name="delete*" propagation="REQUIRED" /><!-- 支持当前事务,如果执行到save开头的任何方法时没有事务则开启一个事务 这是最常见的方式-->  
    80.             <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> <!-- 支持当前事务,如果当前没有事务,就以非事务方式执行。只读 -->  
    81.             <tx:method name="get*" propagation="SUPPORTS" read-only="true"/><!-- 支持当前事务,如果当前没有事务,就以非事务方式执行。只读 -->  
    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实现类


    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实现 
    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

    源码中的注释及代码是比较全的

    出自:http://blog.csdn.net/qq7342272/article/details/7928814

  • 相关阅读:
    【NYOJ】[168]房间安排
    【NYOJ】[168]房间安排
    【POJ】[3253]Fence Repair
    【POJ】[3253]Fence Repair
    【杭电】[2111]Saving HDU
    【杭电】[2111]Saving HDU
    【杭电】[3635]Dragon Balls
    【杭电】[3635]Dragon Balls
    [leetcode]159. Longest Substring with At Most Two Distinct Characters至多包含两种字符的最长子串
    [leetcode]3. Longest Substring Without Repeating Characters无重复字母的最长子串
  • 原文地址:https://www.cnblogs.com/onlymate/p/4359736.html
Copyright © 2011-2022 走看看