chunchun的gravatar头像
chunchun 2015-03-11 09:56:32

SSH框架中使用Oracle数据源转换为SQLServer的相关配置和注意事项

  这些天在做项目中,老师突然说要把原来使用的大型数据库Oracle数据库改为MC的SQL数据库,就一腔热血的跑去改了。由于没有注意很多细节,结果戏剧性的报了很多错,原本只需十几二十分钟的时间,我中招的改了两个小时,所以就分享一下,免得像我这种菜鸟级别的朋友们再走弯路了。若有不对的,或者不完整的请大神们补充和修改,这也是我这小小菜鸟晋级的好时机,所以的一切经验就靠一次次的积累,相信总有一天自己会上升到下一个级别,努力敲代码,努力总结,努力积累,努力的做一枚码农。第一次分享,心情挺激动的。。。

下面开始分享:

一,注意事项,和不同之处

SQL2008  和Oracle 数据库在SSH中开发hibernate.cfg.xml配置区别(前者为SQL,后者为Oracle):

1.驱动:

        com.microsoft.sqlserver.jdbc.SQLServerDriver

         oracle.jdbc.driver.OracleDriver

2.URL:

      jdbc:sqlserver://localhost:1433;DatabaseName=LS        <!--LS为SQL数据库名称-->

      jdbc:oracle:thin:@localhost:1521:orcl

 

3.user,password:(根据自己的数据库有不同的用户和密码)

    “sa”“sa”

      "scott"  "tiger"

4.方言:

       org.hibernate.dialect.SQLServerDialec

       org.hibernate.dialect.Oracle10gDialect

5.包:

 sqljdbc4.jar   

 ojdbc14.jar

6.实体注解中: 

    //注解int自动增长是SQL特有的,用IDENTITY

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int upno; 

    //int 可以用序列SEQUENCE

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    private int upno;

 //UUID都可以用的:

   @Id
    @GeneratedValue(generator="pk")
    @GenericGenerator(name="pk",strategy="uuid.hex")
    private String orderID;

 

我遇到的就是这些不同,要改的,欢迎大家补充

 

二、代码分享

hibernate.cfg.xml配置代码:

SQL:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:tx="http://www.springframework.org/schema/tx"
	   xmlns:context="http://www.springframework.org/schema/context" 
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	   xsi:schemaLocation="http://www.springframework.org/schema/beans 
	   http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	   http://www.springframework.org/schema/aop 
	   http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
	   http://www.springframework.org/schema/tx 
	   http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	   http://www.springframework.org/schema/context 
	   http://www.springframework.org/schema/context/spring-context-3.2.xsd
	   ">
	   
	   <!-- 开启注解 -->
	   <context:annotation-config />
	   <!-- 自动扫描 -->
	   <context:component-scan base-package="com"/>
	   
	   <!-- 开启自动代理 -->
	   <aop:aspectj-autoproxy/>
	  
	  <!-- 开启事务  -->
	   <tx:annotation-driven transaction-manager="transactionManager"/>
	
	  
	   <!-- 创建数据源(c3p0) -->
		 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
			<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
			<property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;DatabaseName=LS"/>
			 <property name="user" value="sa" />
			<property name="password" value="sa"/>
		</bean>
		
		
		<!-- 得到会话工厂 -->
		<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置hibernate参数 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<!-- 加载映射文件 -->
		<property name="packagesToScan">
			<list>
				<value>com/ls/entity</value>
			</list>
		</property>
		</bean>
   		
	  	
	  	<!-- 创建声明式事务管理 -->
		<!-- 声明一个事务 -->
		<bean id="transactionManager"
			class="org.springframework.orm.hibernate4.HibernateTransactionManager">
			<property name="sessionFactory" ref="sessionFactory"/>
		</bean>
		
		
	
		
</beans>

 

Oracle数据库:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:tx="http://www.springframework.org/schema/tx"
	   xmlns:context="http://www.springframework.org/schema/context" 
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	   xsi:schemaLocation="http://www.springframework.org/schema/beans 
	   http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	   http://www.springframework.org/schema/aop 
	   http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
	   http://www.springframework.org/schema/tx 
	   http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
	   http://www.springframework.org/schema/context 
	   http://www.springframework.org/schema/context/spring-context-3.2.xsd
	   ">
	   
	   <!-- 开启注解 -->
	   <context:annotation-config />
	   <!-- 自动扫描 -->
	   <context:component-scan base-package="com"/>
	   
	   <!-- 开启自动代理 -->
	   <aop:aspectj-autoproxy/>
	  
	  <!-- 开启事务  -->
	   <tx:annotation-driven transaction-manager="transactionManager"/>
	
	  
	   <!-- 创建数据源(c3p0) -->
		 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
			<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
			<property name="jdbcUrl"
			 value="jdbc:oracle:thin:@localhost:1521:orcl" />
			<property name="user" value="scott" />
			<property name="password" value="tiger"/>
		</bean>
		
		
		<!-- 得到会话工厂 -->
		<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置hibernate参数 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<!-- 加载映射文件 -->
		<property name="packagesToScan">
			<list>
				<value>com/ls/entity</value>
			</list>
		</property>
		</bean>
   		
	  	
	  	<!-- 创建声明式事务管理 -->
		<!-- 声明一个事务 -->
		<bean id="transactionManager"
			class="org.springframework.orm.hibernate4.HibernateTransactionManager">
			<property name="sessionFactory" ref="sessionFactory"/>
		</bean>
		
		
	
		
</beans>

附录:

配置hibernatge方言(Hibernate  Dialect ) 

参考hibernate官网上的配置,可以看到数据库以及其相应的方言

Database Dialect Property
DB2 org.hibernate.dialect.DB2Dialect
HSQLDB org.hibernate.dialect.HSQLDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Informix org.hibernate.dialect.InformixDialect
Ingres org.hibernate.dialect.IngresDialect
Interbase org.hibernate.dialect.InterbaseDialect
Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect
Microsoft SQL Server 2005 org.hibernate.dialect.SQLServer2005Dialect
Microsoft SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 11g org.hibernate.dialect.Oracle10gDialect
Oracle 10g org.hibernate.dialect.Oracle10gDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
Progress org.hibernate.dialect.ProgressDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
 

最后链接:

1.  http://msdn.microsoft.com/en-us/library/aa342325.aspx

2.  http://www.tutorialspoint.com/hibernate/hibernate_configuration.htm

 

就这样了,希望能够帮到很多初学者,也算自己的一点积累。

欢迎大家补充和修改。。。。。。。。。。。。。。。。。。


打赏

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友