Spring和hibernate整合开发及内容解释

来源:互联网 发布:源码免杀时间长吗 编辑:程序博客网 时间:2024/06/03 21:21

Spring+hibernate整合配置

1.创建数据库连接

参考SVN中:https://193.158.174.37/svn/BRCB/trunk/北农商项目组/8.培训材料/朝阳/【第9次】Hibernate搭建及使用(张佳伟-20170830)/Hibernate入门搭建.docx

2.新建Web工程,并配置Spring

1)切换Perspective至MyEclipse Java Enterprise,新建Web工程SHStudyByXML

2)右键点击该工程,在对话框中选择“MyEclipse->AddSpring Capabilities...”,添加Spring,并进行相关配置,如图1和图2所示,采用默认配置即可。

图 1

            

                                   图2

3.配置Hibernate

1)右键点击该工程,在对话框中选择“MyEclipse->Add HibernateCapabilities...”,添加Hibernate,并进行相关配置,如图1、图2、图3、图4、图5所示。

     

图 1

选择Spring的配置文件applicationContext.xml进行配置。

 

图 2

选择已有的Spring配置文件,并使用Spring配置Hibernate中的SessionFactory,SessionFactory的bean id为sessionFactory。

图 3

配置数据源DataSource的bean id为dataSource,且其配置信息采用数据库连接xlink。

图 4

不另写SessionFactory类,而采用Spring为Hibernate已设计的SessionFactory类。

图 5

4.数据库逆向工程

参考SVN中:https://193.158.174.37/svn/BRCB/trunk/北农商项目组/8.培训材料/朝阳/【第9次】Hibernate搭建及使用(张佳伟-20170830)/Hibernate入门搭建.docx

5.分析和测试

按上述步骤配置后就可以在工程中实现Spring和Hibernate的整合,以及CardInfo表的关系对象映射,工程目录如图6所示,其中src目录下的applicationContext.xml是Spring和Hibernate的核心配置文件,pojo包中的三个文件是与user表对应的数据对象类CardInfo.java、数据访问对象类CardInfoDAO.java、关系对象映射文件CardInfo.hbm.xml。

 

图 6

applicationContext.xml内容如下所示:

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.     xmlns:p="http://www.springframework.org/schema/p" 

6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

7.  

8.  

9.     <bean id="dataSource" 

10.        class="org.apache.commons.dbcp.BasicDataSource"> 

11.        <property name="driverClassName" 

12.            value="com.mysql.jdbc.Driver"> 

13.        </property> 

14.        <property name="url" value="jdbc:mysql://localhost:3306/web"></property> 

15.        <property name="username" value="root"></property> 

16.        <property name="password" value="root"></property> 

17.    </bean> 

18.    <bean id="sessionFactory" 

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

20.        <property name="dataSource"> 

21.            <ref bean="dataSource" /> 

22.        </property> 

23.        <property name="hibernateProperties"> 

24.            <props> 

25.                <prop key="hibernate.dialect"> 

26.                    org.hibernate.dialect.MySQLDialect 

27.                </prop> 

28.            </props> 

29.        </property> 

30.        <property name="mappingResources"> 

31.            <list> 

32.                <value>pojo/User.hbm.xml</value></list> 

33.        </property></bean> 

34.    <bean id="CardInfoDAO" class="com.lss.entity.CardInfoDAO"> 

35.        <property name="sessionFactory"> 

36.            <ref bean="sessionFactory" /> 

37.        </property> 

38.    </bean>

39.</beans> 

其中,bean dataSource实现数据库连接配置,bean sessionFactory实现Hibernate的SessionFactory,并使用bean dataSource的连接配置,bean CardInfoDAO实现CardInfo数据对象访问,并使用bean sessionFactory创建会话。

CardInfoDAO.java代码部分如下所示:

1. public class CardInfoDAO extends HibernateDaoSupport {  

2.     private static final Log log = LogFactory.getLog(UserDAO.class);  

3.  

4.     protected void initDao() {  

5.         // do nothing 

6.     }  

7.     

8.     ...

9. 

该类继承了Spring的HibernateDaoSupport类,调用对象实例本身的getHibernateTemplate获取HibernateTemplate对象,进而调用其save、delete等方法实现数据的增加、删改等操作。

CardInfo.hbm.xml内容如下所示:

1. <?xml version="1.0" encoding="utf-8"?> 

2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 

3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

4. <!--   

5.     Mapping file autogenerated by MyEclipse Persistence Tools 

6. --> 

7. <hibernate-mapping> 

    <classname="com.lss.entity.CardInfo"table="CARD_INFO"schema="XLINK">

        <idname="cardbin"type="java.lang.String">

            <columnname="CARDBIN"length="10"/>

            <generatorclass="assigned"/>

        </id>

        <propertyname="bnkcode"type="java.lang.String">

            <columnname="BNKCODE"length="10"/>

        </property>

        <propertyname="cardflag"type="java.math.BigDecimal">

            <columnname="CARDFLAG"precision="22"scale="0"/>

        </property>

        <propertyname="icflag"type="java.math.BigDecimal">

            <columnname="ICFLAG"precision="22"scale="0"/>

        </property>

        <propertyname="cardbinstatus"type="java.math.BigDecimal">

            <columnname="CARDBINSTATUS"precision="22"scale="0"/>

        </property>

        <propertyname="updateTimestamp"type="java.lang.String">

            <columnname="UPDATE_TIMESTAMP"length="14"/>

        </property>

        <propertyname="updateUser"type="java.lang.String">

            <columnname="UPDATE_USER"length="50"/>

        </property>

8.     </class>

9. </hibernate-mapping> 

其中定义了Card_Info表和CardInfo类的关系对象映射。

在CardInfoDAO中编写一个主函数实现向CardInfo表中写入数据,如下所示:

   public static void main(String[]args) {

            //src/applicationContext.xml装载BeanFactory

           FileSystemResourceres =new FileSystemResource("src/applicationContext.xml");      

            BeanFactory factory = newXmlBeanFactory(res); 

            //BeanFactory获取CardInfoDAO

            CardInfoDAO cardInfoDAO= (CardInfoDAO)factory.getBean("CardInfoDAO"); 

            List<CardInfo> list=cardInfoDAO.findAll();

            System.out.println(list.get(0).getCardbin());

   }

执行后,查看card_Info表,在console显示622142,说明配置成功。

Spring+hibernate整合开发

1.    添加login.jsp页面,里面主要的内容是:

   <formaction="login.do?action=login"method="post">

       <inputtype="submit"value="提交"/>

</form>

2.将application.xml文件放到WEB-INF下,在WEB-INF路径下添加spring-servlet.xml文件,里面内容如下:

<!--1. 选择跳转到哪个bean -->

    <beanid="simpleUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

      <propertyname="mappings">

           <props>

              <propkey="*/login.do">loginAction</prop>

              </props>

      </property>

    </bean>

 

<!--2. 根据beanid来映射到具体的类 -->

    <beanid="loginAction"class="com.lss.controller.Login">

      <propertyname="methodNameResolver">

           <reflocal="methodNameResolver"/>

       </property>

<!—Login类中引用了service层的类对象,,ocs代表接口对象,operateCardInfoService代表实现类bean的id -->

       <propertyname="ocs"ref="operateCardInfoService"/>

       </bean>

      

 

    <!--3. action=方法名用来指定具体类中的方法 -->

    <beanid="methodNameResolver"class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

        <propertyname="paramName">

            <value>action</value>

        </property>       

    </bean>

   

<!—service层的实现类对象引用了dao层的接口对象,,ocd代表接口对象,operateCardInfoDao代表实现类bean的id -->

    <beanid="operateCardInfoService"class="com.lss.service.impl.OperateCardInfoServiceImpl">

       <propertyname="ocd"ref="operateCardInfoDao"/>

       </bean>

3.web.xml文件中配置如下:

<servlet>

    <servlet-name>spring</servlet-name>           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

        <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/spring-servlet.xml,/WEB-INF/applicationCont  ext.xml</param-value>

        </init-param>

        <!-- 代表优先级 数值越小优先级越大,数值相同时tomcat自己选择加载顺序-->

        <load-on-startup>4</load-on-startup>

    </servlet> 

    <!—限制了url中只有.do结尾的才可以进行跳转-->

    <servlet-mapping>

      <servlet-name>spring</servlet-name>

      <url-pattern>*.do</url-pattern>

</servlet-mapping>

 

4.controller层,必须继承MultiActionController类

public voidlogin(HttpServletRequest request,HttpServletResponse response){

      System.out.println(“success”);

   }

6.tomcat部署

找到tomcat所在目录,如D:\TOMCAT\apache-tomcat-6.0.38\conf\Catalina\localhost在brcb.xml中添加:

<?xmlversion='1.0' encoding='utf-8'?>

<ContextdocBase="E:\Workspaces\SHTest\WebRoot\"reloadable="true">

</Context>

6.运行tomcat

点击确认,在console中打印success

原创粉丝点击