[英]Unable to connect to database when oracle driver is added to Maven repository
我正在嘗試編寫一個簡單的Web服務,該服務可以將信息讀取/寫入數據庫。 我ojdbc6
無法將Oracle驅動程序ojdbc6
作為依賴項添加到pom.xml中,因此我使用以下mvn install命令添加了它。
mvn install:install-file -Dfile=C:\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar
ojdbc6.jar
成功添加[ ojdbc6.jar
] [1]
我的DAO類嘗試從數據庫檢索產品信息:
package com.nt.dao;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import com.nt.dto.ProductDTO;
public class ProductServiceDAO {
public ProductDTO getProductInfo(long productId) {
System.out.println("session---------1-");
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println("session---------2-");
Session session = sessionFactory.openSession();
ProductDTO productDTO = new ProductDTO();
productDTO.setProductName("Apple");
Transaction transaction = session.beginTransaction();
System.out.println("session---------3-");
productDTO = (ProductDTO) session.get(ProductDTO.class, productId);
session.close();
return productDTO;
}
}
當我嘗試運行該程序時,收到以下異常。 請幫忙。
Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at com.nt.dao.ProductServiceDAO.getProductInfo(ProductServiceDAO.java:17)
at com.nt.bo.ProductServiceBO.getProductInfo(ProductServiceBO.java:10)
at com.nt.ws.impl.ProductServiceImpl.getProductInfo(ProductServiceImpl.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:181)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97)
... 40 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@localhost:1521:orcl
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 53 more
現在正在工作。 我在課堂上添加了以下代碼
Class.forName ("oracle.jdbc.OracleDriver");
但是我在這里面臨另一個問題。 我的“產品”表中有一條記錄,如下面的屏幕快照所示。 產品展示
當我嘗試在SOAPUI中檢索記錄時,未檢索到該記錄。 此外,記錄被刪除。 下面是SOAPUI屏幕截圖
我的ProducDTO課程:
package com.nt.dto;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlType(name="ProductDTO")
@XmlAccessorType(XmlAccessType.FIELD)
public class ProductDTO {
@XmlElement
private int productId;
@XmlElement
private String productName;
@XmlElement
private int productPrice;
public int getProductId() {
return productId;
}
public void setProductId(int productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public int getProductPrice() {
return productPrice;
}
public void setProductPrice(int productPrice) {
this.productPrice = productPrice;
}
}
My DAO class retrieving the record:
package com.nt.dao;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import com.nt.dto.ProductDTO;
public class ProductServiceDAO {
public ProductDTO getProductInfo(long productId) {
System.out.println("session---------1-");
try {
Class.forName ("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println("session---------2-");
Session session = sessionFactory.openSession();
ProductDTO productDTO = new ProductDTO();
Transaction transaction = session.beginTransaction();
System.out.println("session---------3-"+productId);
productDTO = (ProductDTO) session.get(ProductDTO.class, (int) productId);
if(productDTO!=null){
System.out.println("session---------4-"+productDTO.getProductId());
System.out.println("session---------5-"+productDTO.getProductName());
System.out.println("session---------6-"+productDTO.getProductPrice());
}else{
System.out.println("session---------7-");
}
session.close();
return productDTO;
}
}
我的日志文件:
Payload: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.nt.com/">
<soapenv:Header/>
<soapenv:Body>
<ws:getProductInfo>
<productId>159</productId>
</ws:getProductInfo>
</soapenv:Body>
</soapenv:Envelope>
--------------------------------------
session---------1-
session---------2-
session---------3-159
Hibernate:
/* load com.nt.dto.ProductDTO */ select
productdto0_.PRODUCT_ID as PRODUCT1_5_0_,
productdto0_.PRODUCT_NAME as PRODUCT2_5_0_,
productdto0_.PRODUCT_PRICE as PRODUCT3_5_0_
from
PRODUCTS productdto0_
where
productdto0_.PRODUCT_ID=?
session---------7-
Nov 19, 2017 7:58:18 PM org.apache.cxf.services.ProductServiceService.ProductServicePort.ProductService
INFO: Outbound Message
---------------------------
ID: 2
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getProductInfoResponse xmlns:ns2="http://ws.nt.com/"/></soap:Body></soap:Envelope>
--------------------------------------
我的DAO課程:
package com.nt.dao;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import com.nt.dto.ProductDTO;
public class ProductServiceDAO {
public ProductDTO getProductInfo(long productId) {
System.out.println("session---------1-");
try {
Class.forName ("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
System.out.println("session---------2-");
Session session = sessionFactory.openSession();
ProductDTO productDTO = new ProductDTO();
Transaction transaction = session.beginTransaction();
System.out.println("session---------3-"+productId);
productDTO = (ProductDTO) session.get(ProductDTO.class, (int) productId);
if(productDTO!=null){
System.out.println("session---------4-"+productDTO.getProductId());
System.out.println("session---------5-"+productDTO.getProductName());
System.out.println("session---------6-"+productDTO.getProductPrice());
}else{
System.out.println("session---------7-");
}
session.close();
return productDTO;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.