zoukankan      html  css  js  c++  java
  • ssh(sturts2_spring_hibernate) 框架搭建之hibernate2

    一、今天要进行解答的是对上次hibernate1进行进一步的完善,这次第一是进一步使用spring注入一个SessionFactory实例,避免了自己new实例;第二是应用数据库池(c3p0)。

    二、环境搭建:

       ⒈在之前的基础(struts2的jar包,spring的jar包,和hibernate的jar包,如果不懂请看:http://www.cnblogs.com/demoMeng/):

        现在需要使用到c3p0的jar,找到下载的hibernate压缩包,解压,解压的根目录--》lib--》optional--》c3p0中的jar复制到你的项目的lib中即可:

          

        ⒉去掉hibernate.cfg.xml配置文件,取而代之的是spring中注入的SessionFactory(在hibernate.cfg.xml中进行配置的也是sessionFactory)

         之前的项目:                                                  

         

           之前的hibernate.cfg.xml配置文件: 

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    
    <hibernate-configuration>
    	<session-factory>
    	<!-- 配置相关的数据库基本信息  -->
    			<!-- 数据库驱动 -->
    			<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    			<!-- 数据库访问路径 -->
    			<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName = webLastExam_20160727</property>
    			<!-- 登录用户名 -->
    			<property name="connection.username">sa</property>
    			<!-- 登录密码 -->
    			<property name="connection.password">123456</property>
    		
    	<!-- 配置hibernate的基本信息 -->
    		
    		<!-- 配置hibernate使用的数据库方言  -->	
    		<property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
    						
    		<!-- 设置数据库连接池的大小 -->
    		<property name="connection.pool_size">5</property>
    		 
    		<!-- 执行操作时候是否在控制台打印sql语句  -->
    		<property name="show_sql">true</property>	
    		
    		<!-- 是否进行格式化sql语句,指的是在控制台中输出的sql语句是否换行 -->
    		<property name="format_sql">true</property>
    		
    		<!--生成数据表的策略-->
    		<property name="hbm2ddl.auto">update</property>
    		
    		 <!-- 设置hibernate的映射文件 -->
    		<mapping resource="entity/BookCard.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration>
    

      

          现在的项目:  

           现在的applicationContext.xml配置文件(使用的数据库是SQL-server2008):

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"    
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
            xmlns:p="http://www.springframework.org/schema/p"  
            xmlns:aop="http://www.springframework.org/schema/aop"   
            xmlns:context="http://www.springframework.org/schema/context"  
            xmlns:jee="http://www.springframework.org/schema/jee"  
            xmlns:tx="http://www.springframework.org/schema/tx"  
            xsi:schemaLocation="    
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
                http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd  
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
                    
                   <!-- 导入外部的文件,把数据库的相关信息设置为一个变量,这样有益于技术人员的安装项目以及后期的部署。(对应项目外的 jdbcSql.properties 文件) -->
                   <context:property-placeholder location="classpath:jdbcSql.properties" ignore-unresolvable="true"/>
                
                <bean id="myActionService" class="action.ActionService" scope="prototype"></bean>
           <bean id="myActionService" class="action.ActionService" scope="prototype"> <property name="ms" ref="myServiceImp"></property> </bean> <bean id="myServiceImp" class="services.MyServiceImp" scope="prototype"> <property name="md" ref="myDaoImp"></property> </bean> <bean id="myDaoImp" class="dao.MyDaoImp" scope="prototype"> <!-- 给daoImp的实现类中设置的sessionFactory成员属性注入一个sessionFactory实例 --> <property name="sessionFactorySql" ref="mySessionFactorySql"></property> </bean> <!-- 定义一个sessionFactory的bean,使用spring来给sessionFactory来注入实例 --> <bean id="mySessionFactorySql" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 数据源包括:数据库用户名,密码,这里引用了下面的bean,为了看起来方便,我用了同一种字体颜色 --> <property name="dataSource" ref="myDataSourceSql"></property> <!-- 定义hibernate属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.connection.autocommit">false</prop>   <!-- 自动生成表(根据实体类),如果这里设置的是create的话,每次电脑开机后都会删除这个表然后新创建一个表,所以这个时候之前的数据都会清空。-->
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                  </props>
                </property>

                <!-- 设置映射文件,这个映射问价指的是hbm.xml文件 -->
                <property name="mappingResources">
                     <list>
                       <value>entity/BookCard.hbm.xml</value>
                    </list>
                </property>

            </bean>

    <!-- 设置数据源(使用c3p0来设置数据库源),需要使用spring来创建实例 --> <bean id="myDataSourceSql" class="com.mchange.v2.c3p0.ComboPooledDataSource">
             <!--这里使用了变量来,目的是用来技术人员用于后面的安装项目,选择不同的数据库需要数据库的基本信息的修改。-->  <property name="driverClass" value="${jdbc.diver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> <!--每300秒检查所有连接池中的空闲连接 --> <property name="idleConnectionTestPeriod" value="300"></property> <!-- 最大空闲时间,900秒内未使用则连接被丢弃。若为0则永不丢弃 --> <property name="maxIdleTime" value="900"></property> <!--最大连接数 --> <property name="maxPoolSize" value="2"></property> </bean>
    </beans>

            现在的实体类的hbm.xml文件:(本例为:BookCard.hbm.xml),和之前的没有差别:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping>
    
        <class name="entity_name" table="tabel_name">
    
            <id name="entity_prop_name" type="integer" >
                <column name="column_name"></column>
                <generator class="native" />
            </id>
    <property name="entity_prop_name" type="string">         <column name="column_name"></column>     </property> </class> </hibernate-mapping>

               

              新添加的一个数据库信息的文件:(jdbcSql.properties),定义了数据库的基本信息,但你的项目需要通过技术人员来部署的,可能因为具体情况不同需要修改数据库信息,就可以直接在这里修改即可。

     


          到这里,ssh基本框架就建立好了,可以把这个框架加入你的项目进行具体的实战,谢谢浏览!

     

      

     

      

        

  • 相关阅读:
    pku2992 Divisors
    pku3090 Visible Lattice Points
    pku3615 Cow Hurdles
    禁止 verifier.dll 监控程序
    运行ogreSDK的samples
    #pragma pack(n) 啥时候可以不再忘记?
    游戏开发流程图。
    希望可以尽快的写篇自己的成果。
    windows与OS X下的std::string
    VS2008鼠标右键不灵敏,TFS的Local Path无法打开对应文件夹
  • 原文地址:https://www.cnblogs.com/demoMeng/p/5852008.html
Copyright © 2011-2022 走看看