java配置數據源
1. java程序員在面試中被問到如何配置多數據源以及如何配置多數據源下的分布式事務,該怎麼回答看清再做答
你好,我來先回答你的第一個問題:
通常多數據源,在spring中配置如下,如果你想切換環境ENV 的值,在property中
<bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"></property>
<property name="" value="true"></property>
<property name="nullValue" value="NULL"></property>
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.spring..JDBCConfig">
<property name="driverClassName" value="${${Env}.jdbc.driverClassName}"></property>
<property name="url" value="${${Env}.jdbc.url}"></property>
<property name="username" value="${${Env}.jdbc.username1}"></property>
<property name="password" value="${${Env}.jdbc.password}"></property>
</bean>
jdbc.properties
*****************************
Env=PROD
jdbc.driverClassName=${${Env}.jdbc.driverClassName}
jdbc.url=${${Env}.jdbc.url}
jdbc.username=${${Env}.jdbc.username}
jdbc.password=${${Env}.jdbc.password}
######### JDBC Configuration for DEV Environment ###############
DEV.jdbc.driverClassName=com.mysql.jdbc.Driver
DEV.jdbc.url=jdbc:mysql://localhost:3306/devportal
DEV.jdbc.username=DEVuser
DEV.jdbc.password=DEVpwd
######### JDBC Configuration for UAT Environment ############
UAT.jdbc.driverClassName=com.mysql.jdbc.Driver
UAT.jdbc.url=jdbc:mysql://localhost:3306/UATportal
UAT.jdbc.username=UATuser
UAT.jdbc.password=UATpwd
########## JDBC Configuration for PROD Environment ############
PROD.jdbc.driverClassName=com.mysql.jdbc.Driver
PROD.jdbc.url=jdbc:mysql://localhost:3306/portal
PROD.jdbc.username=root
PROD.jdbc.password=admin,
我這里有三套環境,分別是DEV,UAT和PROD,這種方式可以靈活切換的。
我再回答你的第二個問題:
還請你去http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html這里看下,很詳細,不過是英文的哦
2. java數據源配置的問題
首先,你要明白,什麼是數據源,數據源跟數據連接池有什麼區別。
一般我們在程序裡面配置的,最多都是數據連接源,而不是數據連接池。
其次,在tomcate裡面配置有個什麼好處呢,』
如果一個伺服器,裡面有多個獨立的應用,
那麼,我們配置一個數據源,只需要在程序裡面配置一下JNDI,就可以了,每個程序都
指向這個數據源就好了。
可是有一天我們要換資料庫了,如果我們賠的數據源,那麼,我們就可以直接改數據源就好了。
如果是在資料庫裡面配置的,那麼我們就需要再每個工程裡面都改一遍。
3. java連接Oracle資料庫的時候,該怎樣設置數據源
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl為資料庫的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
4. java里設置數據源問題
真心服你,mdb你知道是什麼嗎?mdb(Microsoft Database)格式是Microsoft Access軟體使用的一種存儲格式,因其對數據操作的方便性,常用在一些中小型程序中。你想用Java連接資料庫,配置數據源,你肯定要有資料庫才行呀,你什麼都沒有配置數據源有什麼用呢
5. Java配置數據源的幾種方式
兩種:JDBC-ODBC橋連,純JDBC連接
6. JAVA連接資料庫為什麼要配置數據源,有
用jdbc,直接連接資料庫,不需要額外配置數據源了,那是odbc方式,現在不用了
7. 求助:Java數據源怎麼配置
一 首先要配置Tomcat的server.xml文件,在對應的web應用的<Context>中加入<Resource>元素,比如:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"
maxWait="5000"
url="jdbc:mysql://127.0.0.1/jspdev"
/>
</Context>
其中:
name:指定Resource的JNDI名字
type:指定Resource所屬的Java類名
driverClassName:指定連接資料庫的JDBC驅動程序
username:指定連接資料庫的用戶名
password:指定連接資料庫的口令
maxIdle:指定資料庫連接池中的最大空閑連接數目,0表示不受限制
maxActive:指定資料庫連接池中的最大活動連接數目,0表示不受限制
maxWait:指定連接池中連接處於空閑狀態的最長時間,超過會拋出異常,-1表示無限
url:指定連接資料庫的URL
二 在Web應用中使用數據源:
javax.naming.Context提供了查找JNDI Resource的介面,可以通過三個步驟來使用數據源對象:
A.獲得對數據源的引用:
Context ctx = new InitalContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/hello");
B.獲得資料庫連接對象:
Connection con = ds.getConnection();
C.返回資料庫連接到連接池:
con.close();
在連接池中使用close()方法和在非連接池中使用close()方法的區別是:前者僅僅是把資料庫連接對象返回到資料庫連接池中,是連接對象又恢復到空閑狀態,而非關閉資料庫連接,而後者將直接關閉和資料庫的連接。
三 如果通過數據源訪問資料庫,由於數據源由Servlet容器創建並維護,所以必須把JDBC驅動程序拷貝到Tomcat安裝目錄下的common/lib目錄下,確保Servlet容器能夠訪問驅動程序。
8. 數據源可以用Java代碼創建嗎
詳情如下:
以JNDI方式創建數據源首先要配置數據源的相關連接信息,也就是數據源連接池。該配置應該在Tomcat安裝目錄下的conf/context.xml 文件中配置,在Eclipse的J2EE架構下,也可以把context.xml文件創建在/META-INF目錄下。
正確的配置後,就可以在程序中以JNDI的方式創建數據源,得到資料庫連接並進行相應的操作。
9. 怎樣JAVA通過JDBC-ODBC橋訪問數據源,配置數據源
導入java.sql包
一、載入要連接資料庫的驅動程序
//Jdbc-Odbc橋 和 Microsoft Access 資料庫
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// SQL Server 驅動程序:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
註:Class.forName()方法將給定的類載入到JVM,如果系統中不存在給定的類,則會引發異常
二、通過驅動程序管理器得到連接實例
Connection conn=null;
//1.
//1.1建立數據源
conn=DriverManager.getConnection("jdbc:odbc:MyDataSource"); //MyDataSource是數據源名稱
//1-2、不建立數據源
conn=DriverManager.getConnection("jdbc:odbc:;Driver=Microsoft Access Driver (*.mdb);DBQ=C:\\VBTest.mdb");
//2.SQL Server
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=mydb","sa","");
註:DriverManager類跟蹤已注冊的驅動程序,通過getConnection(URL)方法, 找到一個能夠連接至URL中指定的資料庫驅動程序
它接收三個參數, 分別表示1 數據源的名稱、類型 2 用戶名(可選) 3 密碼(可選)
三、基於連接對象建立處理器對象
Statement stmt=conn.createStatement();
四、准備sql命令
String sql="select * from Student";
五、執行命令返回結果集
ResultSet rs=stmt.executeQuery(sql);
六、顯示結果集
while(rs.next())//只要後面有記錄
{
//對當前行的所有欄位遍歷
for(int i=1;i<=rs.getMetaData().getColumnCount();i++)
{
System.out.print(rs.getMetaData().getColumnName(i)+": ");//顯示欄位名
System.out.println(rs.getString(i));//顯示欄位當前值
}
System.out.println();
}
七、關閉資源
rs.close(); //關閉記錄集
stmt.close(); //關閉處理器對象
conn.close(); //關閉連接對象
預處理器的應用:
//3.基於連接對象建立預處理器對象
PreparedStatement pstmt=conn.prepareStatement("insert into student values(?,?,?,?)");
//4.給預處理對象的參數賦值
pstmt.setString(1,"8888");
pstmt.setString(2,"nemo");
pstmt.setString(3,"accp");
pstmt.setString(4,"sanxianglu");
//5.執行預處理命令
int i=pstmt.executeUpdate();
System.out.println(i+"條記錄已成功插入!");
10. java數據源問題
tomcat配數據源當然要jar包了 但是jar包是放在tomcat裡面的不是導在項目里的
jndi就是java的一個介面或服務吧
c3p0就是一個開源的數據源