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
就这样了,希望能够帮到很多初学者,也算自己的一点积累。
欢迎大家补充和修改。。。。。。。。。。。。。。。。。。
猜你喜欢
- springboot+druid+多数据源配置
- spring cloud集成swagger2和配置数据源
- spring data jpa多数据源配置demo
- SpringBoot Hikari多数据源(Oracle、Mysql、Impala)简单实例
- spring多数据源配置事务回滚
- SSH学习之路-Spring整合Hibernate(两种配置其中一种完全抛弃Hibernate的核心配置文件直接定义在Spring核心配置文件中)
- ORACLE配置自动发送邮件的方法
- spring boot + mybatis(通用mapper) druid多数据源切换配置
- spring boot整合mybatis连接查询两个mysql数据源的配置实例
- Spring Boot学习(七)之Web应用使用jdbctemplate多数据源配置博客源码
- Spring Boot学习(七)之Web应用使用Spring-data-jpa多数据源配置 博客源码
- Spring整合Mybatis实现动态数据源切换教程配置