Java 如何使用Hibernate连接到Oracle 12c PDB
我已经使用中的说明创建了一个示例Oracle 12c PDB(可插拔数据库)。如何使用Hibernate应用程序连接到此可插拔数据库?我正在使用来自的示例Hibernate应用程序 我将hibernate.cfg.xml文件更改如下:Java 如何使用Hibernate连接到Oracle 12c PDB,java,hibernate,hibernate.cfg.xml,Java,Hibernate,Hibernate.cfg.xml,我已经使用中的说明创建了一个示例Oracle 12c PDB(可插拔数据库)。如何使用Hibernate应用程序连接到此可插拔数据库?我正在使用来自的示例Hibernate应用程序 我将hibernate.cfg.xml文件更改如下: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration D
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:sys</property>
<property name="connection.username">sys as sysdba</property>
<property name="connection.password">helloWORLD12</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="dialect">org.hibernate.dialect.Oracle12cDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<mapping class="net.codejava.hibernate.Book" />
</session-factory>
</hibernate-configuration>
请告诉我哪里出了问题。在Hibernate中使用Oracle 12c PDB几乎没有在线资源
更新1:我的配置文件中有一行额外的XML代码,这导致了XML解析错误。现在-如何将CDB/PDB与特定用户帐户关联,因为不建议通过SYS user使用PDB
我有一个名为“pdb1”的PDB,它与sys用户帐户关联。它存储在以下位置: D:\app\myusername\virtual\oradata\orcl\pdb1 我创建了一个新用户“c##test”,然后在登录到用户“c##test”时使用以下命令创建了一个pdb:
create pluggable database pdb3 admin user pdb_admin3 identified by helloWORLD12
file_name_convert=('D:\app\myusername\virtual\oradata\orcl\pdbseed\',
'D:\app\myusername\virtual\oradata\test\pdb3\');
“pdb3”已成功创建,但未与用户“c##test”关联
我现在得到的错误跟踪如下:问题在于您使用的语法。您使用的是:SID而不是/SERVICE\u NAME,因此请确保将此行更改为:
<property name="connection.url">jdbc:oracle:thin:@localhost:1521/sys</property>
3-将依赖项添加到Pom.xml
<!-- ORACLE database driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
com.oracle
ojdbc8
12.2.0.1
该错误是XML解析错误,而不是Oracle错误。您需要检查XML文件的格式。另外:您真的有名为sys
的PDB吗?为什么要使用应用程序中的SYS帐户?这是一个非常非常糟糕的主意。您应该创建一个普通用户,并从应用程序中使用它。不要对应用程序表使用SYS(或SYSTEM)。我有一个名为“pdb1”的PDB,它与SYS用户帐户关联。它存储在以下位置:D:\app\myusername\virtual\oradata\orcl\pdb1。我创建了一个新用户“c####test”,然后在登录到用户“c###test”时使用以下命令创建了一个pdb:创建可插拔数据库pdb3管理员用户pdb#admin3,由helloWORLD12文件名标识(D:\app\myusername\virtual\oradata\orcl\pdbseed\,'D:\app\myusername\virtual\oradata\test\pdb3\);'pdb3已成功创建,但未与用户“c##test”关联。为什么会这样?这是一个完全不同的问题,与Hibernate配置的解析错误无关file@a_horse_with_no_nameXML解析不再是问题所在。实际上,我有一行额外的XML代码,这导致了解析错误。您能否告诉我如何创建与特定用户关联的pdb。然后您应该更新您的问题并包含您收到的真实错误消息。如果您使用带有服务名称的URL,则应使用@//localhost:1521
,而不是@localhost
(这是旧的不推荐使用的URL格式)-但这不是问题的根本原因。驱动程序从未建立连接,因为Hibernate无法解析XML文件。@Mohammaddrezaalagheband,我无法将cdb/pdb与用户帐户关联。我该怎么做?我已经更新了我的问题。@pikaraider我更新了我的答案,请告诉我它是否有效,因为您可能需要使用其他版本的ojdbc@pikaraider没问题,我会更新我的答案以手动安装它。请再检查一下
<!-- ORACLE database driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>