Oracle转PostgreSQL
前言
从2019年开始,就有一个很火热的话题:“去O化”。O就是oracle,也就是将oracle替换成别的数据库。
原因:
- oracle是收费的,为了进一步降低成本;
- 以美国为首的西方国家对华科技种种遏制行为,最近越闹越厉害,最近docker的付费服务就禁止中国企业使用;
- 甲骨文公司中国区大幅度裁员,或将放弃中国市场也说不定;
- 2020年12月31起,甲骨文公司将不再对oracle11.2版本提供技术支持,即出现bug也不会维护了。
迁移点
1、jar包/maven依赖的更换:
驱动包要换成postgresql-xxx.jrex.jar
,x
表示版本。如果是maven项目,则添加如下依赖:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>版本</version>
</dependency>
2、driverClassName等信息的更换:
datasource.driverClassName=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
3、字段类型问题:
- 主外键字段类型问题:A表的主键在B表做外键时,这个字段在两张表的类型一定要一致,否则连接查询会报错。
- 实体类与数据表字段类型问题:实体类字段类型一定要与数据表字段类型对应,否则映射的时候就报错了。
- 查询条件的字段类型问题:假如数据表中id字段类型是int4,查询条件传String类型的1,是会报错的,要用Integer类型,而oracle不会报错,会自动进行类型转换。
4、postgre与java字段类型对照表:
以下是常用字段类型对照:
postgre | java |
---|---|
varchar | String |
char |