java數據源配置
不是,是java程序如果用到資料庫的時候一定要做資料庫連接操作
❷ 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這里看下,很詳細,不過是英文的哦
❸ SpringBoot 配置雙數據源MySQL、SQL Server
1、pom.xml引mysql和sql server依賴
2、application.yml配置mysql和sql server連接數據源的信息
3、創建DataSourceConfig.java工具類
4、創建mysql數據源配置工具類MySqlConfig.java
5、創建敏野sql server數據源配置工具類SqlServerConfig.java
如果您有什麼好的想法與方法,歡大畝迎在評論區留言滾拿森,我們一起討論~
❹ Java中如何與資料庫建立連接(java怎麼與資料庫連接)
導入java.sql包
一、載入要連接資料庫的驅動程序
//Jdbc-Odbc橋和MicrosoftAess資料庫
Class.forName("sun.jdbc.odbc.");
//SQLServer驅動程序:
Class.forName("com.microsoft.jdbc.sqlserver.");
註:Class.forName()方法將給定的類載入到JVM,如果系統中不存在給定的類,則會引發異常
二、通過驅動程序管理器得到連接實例
Connectionconn=null;
//1.
//1.1建立數據源
conn=.("jdbc:odbc:");//是數據源名稱
//1-2、不建立數鬧彎據源
conn=.("jdbc:odbc:;Driver=MicrosoftAessDriver(*.mdb);DBQ=C:VBTest.mdb");
//2.SQLServer
conn=.("jdbc:microsoft:sqlserver://127.0.0.1:1433;=mydb","sa","");
註:類跟蹤已注冊的驅動程序,通過(URL)方法,找到一塌喚個能夠連接至URL中指定的資料庫驅動程序
它接收三個參數,分別表示1數據源的名稱、類型2用戶名(可選)3密碼(可選)
三、基於連接對象建立處理器對象
Statementstmt=conn.();
四、准備sql命令
Stringsql="select*fromStudent";
五、執行命令返回結果集
ResultSetrs=stmt.(sql);
六、顯示結果集
while(rs.next())//只要後面有記錄
{
//對當前行的所有欄位遍歷
for(inti=1;i<=rs.getMetaData().();i)
{
System.out.print(rs.getMetaData().getColumnName(i)":");//顯示欄位名
System.out.println(rs.getString(i));//顯示欄位當前值
}
System.out.println();
}
七、關閉資源
rs.close();//關閉記團彎凱錄集
stmt.close();//關閉處理器對象
conn.close();//關閉連接對象
預處理器的應用:
//3.基於連接對象建立預處理器對象
PreparedStatementpstmt=conn.prepareStatement("insertintostudentvalues(?,?,?,?)");
//4.給預處理對象的參數賦值
pstmt.setString(1,"8888");
pstmt.setString(2,"nemo");
pstmt.setString(3,"ap");
pstmt.setString(4,"sanxianglu");
//5.執行預處理命令
inti=pstmt.executeUpdate();
System.out.println(i"條記錄已成功插入!");
❺ 求java程序,用JNDI連接Weblogic數據源(weblogicjndi數據源配置)
1。Java基本語法、類、繼承、方法、介面、Java面向對象程序設計、Java用戶界面(GUI)、Java-JDBC對資料庫進行訪問了解面向對象、封裝、抽象、繼承,掌握Java語法、GUI編程、JDBC,GUI訪問資料庫60課時
2。JavaWEB應用實戰WEB伺服器安裝、配置、SQLServer資料庫使用,JDBC、JavaScript、Servlet、JSP技術,JSP-Servlet-JavaBean三層架構70課時
3。JAVA與資料庫實戰(Oracle、DB2、SQLServer)WebLogic伺服器安裝配置,Oracle、DB2、SQLServer資料庫管理,連接池、數據源、JNDI技術,Java和各種資料庫交互實例50課時
4。JBuilder-WebLogic-EJB-Oracle企業級應用WebLogic、Jbuilder、Oracle集成配置,Java分布式平台技術,連接池、數據源配置,RMI與JNDI技術,中間件概念,會話Bean、實體Bean,開發《購物車》實例全面了解J2EE架構、掌握WebLogic伺服器、Jbuilder開發工具,EJB組件以及JDBC、JNDI分布式平台技術50課時
5。Struts技術揭密及WEB開發實例Struts框架安裝配置,M-V-C模型,Struts控制器模型組件、視圖組件,標記庫原理,數據源配置Struts開發實例50課時
6Linux-Apache-Tomcat-MYSQL集成環境高級應用Linux操作系統安裝,Linux各種命令用法、各種服務配置,Linux系統下WEB伺服器配置;MySQL資料庫安裝及管理;Java和MySQL進行交互40課時
7。UML-Rose建模實戰統一建模語言(UML)概述、概述、健壯性分析,用例和用例圖、用例和角色、識別和角色、邊界、力度、類圖。40課時
8。J2EE框架技術實戰(表示層:Struts,業務層:Spring,持久層:hibernate)表示層:Struts技術業務層:Spring技術數據持久層:hibernate技術、ibatis(sqlmap)技術。60課時
9日語與Java編程經過兩個月日語強化培訓,掌握生活常用的日語,特別是Java編程中經常使用的計算機日語,具有一定日語表達能力。
1、先學學JSP,用純JSP做個日記本簡單的小系統,純粹從語言層面上了解一些基礎知識,把tomcat玩熟了,就用記事本編就行,主要是熟悉,能夠理解jsp運行機制。然後學學java,看本基礎的書,都是那種講講語法的,變數怎麼定義,流程式控制制語句怎麼寫,怎麼編寫函數,怎麼處理表單元素,處理字元串,連接資料庫,會一種就行。這些都是浮在語言表面,你編寫的程序還是結構化的,跟你以前用asp編的程序沒慶拆什麼區別,但是這很重要。你可以直接選擇目前公司里都在使用的Eclips來開發,但是你要區分IDE和Java的區別,不要被IDE邦死了。這些都熟了之後看《thinkinginjava》,看完之後,看corejava兩卷,深入了解到java本身。看這些書的時候你可能就懵懂的進入oo世界了,估計還不太明白。可以配合一些oo的理論方面的書,oo不過就是那幾個特點,封裝分配,多態性,繼承,第一個要理解的當然是對象。看完這些後就可以學習UML建模了,主要會畫三種圖,用例圖,類圖,序列圖,三種圖就足夠了。不要期望自己一下就學會UML,就會建模,得跟java學習聯系起來,編個幾萬行代碼,慢慢就會設計對象了。然後看GOF《謹神設計模式》,對你的面向對象思想一個巨大的提升,這時譽晌棗你一定會去重讀繼承,介面,抽象類的相關的細節了,並且你會發現你的理解能力上了一個台階。然後看看三層結構的知識,這時候編程考慮使用jspservletjavabean,分出表示層,業務層和數據訪問層,這是基礎。
2、以上都是J2SE,然後看thinkinginenterprisejava,學習j2ee基礎知識,你慢慢就會明白持久層的一些機制了,後面的什麼各種新鮮的東西,CMP的東西本質是什麼,你都很好理解了。當然你要不斷編碼,把書里的概念都變成實踐,只有自己動手做,才能理解,看會不等於學會,學會不等於學精,學好技術不等於會設計,層次會越來越高。實踐是認識的唯一來源!!!一定要實踐。
3、編碼時你可以考慮看看《重構》這本書,覺得很好,同時還可以看看,會使你的代碼越來越漂亮。
4、現在你的代碼已經很專業了,而且可以分出不同的層次,因為你知道了最基本的原則,那就是要高內聚,低耦合,要不斷地解耦,但是怎麼更好的解耦,什麼是最佳實踐,你可能並不知道,雖然你看了下面這本書,你會發現你有些做法已經是最佳實踐了,但是依然會存在這種情況,有些你並不確定,那就看看corejavapattern吧,都是14年以上開發經驗的架構師和眾多java大師的經驗總結,書中序言所寫,看完這本書,你將成為Java架構師。
5、這些知道之後,你已經對分層的本質很理解了,你可以知道Struts不過是框架而已,只是運用了頁面助手,前端控制器,應用控制器等這些表示層或者表示層和業務層(Tier)中間連接層(Layer)的模式,對於標簽的理解你也是深刻的。而到集成層,採取不同的策略和模式,數據持久化的理論和經驗,框架不過是把大家都用得著的東西做好了給你用,沒有框架的話很多事需要你自己做,僅此而已,跟那些偉大的思想相比,它們太簡單了。至於到具體的容器,DAO策略還是CMP,BMP,在具體使用怎樣的ORM工具,都是更簡單的事情了。但是看spring,struts這些框架時你會重新閱讀前面的java教程的,因為spring用到了java的反射機制等。
6、到此為止,你會發現你OOP時,想到的就會是性能,到底用數組還是ArryList,還是用HashMap,OOD時,你會考慮並發性,擴展性,復用性,現有框架,池,事務等方面,你會發現每一個問題,你都有好幾種選擇方案,你會不斷重構你的代碼,改良你的設計。
7、下一步是OOA,那就看一本《分析模式》吧,會教你很多分析的現成方法。
此時,你已經是OO方面的專家了,構架一個大型系統應該沒有問題了,而且你的能力可以很輕易的學會WebService,AJAX等這些時髦的東西,你編程的時候可能最常翻的書是JDKAPI,但是你會遇到新的問題,就是讓你設計一套股票系統,可是你對股票一無所知,現學,這是必須的,但是這時你會發現你基礎好差,所以在學技術的同時,多看看各個領域的書吧,其實都是有模式的,比如ERP選型,CRM的幾種樣子,電子商務的幾種模式,看多了你也就會了,所以要學會域建模,因為你是要為商務,政務服務的,是為人服務的。
我覺得這在技術方面就算到頭了,如果你想學管理,當然前提是技術,要不你不知道完成一個項目到底要多久花多少錢。你必須了解開發方法,迭代開發,XP等,當你有了技術,再看這些很容易,因為你會明白為什麼要測試先行,在技術上怎麼實現技術先行;你也會知道結對編碼的意義。學習了這些你會是項目經理。
但是你可能還需要多看看經濟領域的書和法律書,還包括中國政府的報告等等,要政治敏感,這樣你才能成為比爾蓋茨。這離主題有點遠了。
總的原則是:
1、先從語言層面掌握Java(很多說Java容易的人都是只掌握了語言層面的人,當你面對如何解耦,怎樣利用線程,如何更好復用,面向對象時,你就會覺得它好復雜好難)然後再到深入理解Java,先學J2SE再學J2EE。
2、理論和實踐相結合,先看操作,理解本質和原理,然後做,然後翻過來看理論,你會覺得這件事做起來就是順理成章的了,因為當初理論就是這么被推出來的。
3、高處著眼,有了基礎後,你可以從本質上去跟上時髦的東西,比如ORM,更細點說就是Hibernate等,比如各層框架,Spring,Struts等,都很簡單。
4、學好理論,你用到多線程時可能會覺得自己對於線程機制不慎了解,對對象在內存中的生命周期不清楚,對於JUnit斷言的不理解,對調試程序的原理不明白,去看計算機組成原理吧;可能搞不清楚數組的本質,去看數據結構,這時你會發現自己線性代數太差;去討論Java自帶的排序演算法和你自己編寫的演算法,可能覺得自己對一個簡單的函數都看不懂,設計復雜的函數就更不會了,去看計算方法吧,這時你可能會感到你的高等數學太差了;不理解HTTP的接收應答機制,不知道AJAX原理,那麼多語言都有request,response,到底原理是什麼,XML的作用是什麼,SOAP協議,怎麼在網路上傳輸這些數據,看看基礎知識,這些都很簡單。掌握基礎,只有到這時你才會覺得它重要,那就等你知道了再去看吧,也不會太晚,而且你會學的更好。不要羨慕那些碩士博士,他們沒編過程序,照樣不如你,有些都是真的是你不做就永遠不理解,不做底層,理解不了上層。
5、學好外語,因為你會發現很多資料很多問題的答案很多調試錯誤的解釋都是外文的,這時google是最好的工具,但是你的英文要起碼可以讀懂人家說什麼;還有研究Webservice,SOA之類的東西,往往都是英文的。
學好我說的這些,大約需要3年,但是學好JAVA,達到語言層面,只需要1周,達到內部,需要半年,達到會設計,需要做3個以前項目,達到架構師,估計得2到3年,同時那些基礎中的基礎,你更需要好好學,那些是最慢的。
學到語言層面只需要兩樣東西:玩會IDE拿一本包含我所說的那些基本語法的書。玩會IDE你要做到會簡單配置,能運行出東西,會調試(不會調試就沒法編程),然後拿本JDKAPI,打開google和網路,有了錯誤就去搜索,這樣學習Java真的很簡單。
Linux也是要先會玩,要能上網,會下載東西,安裝軟體,寫文檔,然後就是能聽歌看電影,就夠了。接下來在編程,關鍵要會shell那些命令。看看多用戶操作系統的書,建立一個理論高度,就OK了
最後說一句,中國大多數程序都停留在語言層面,很多人都是在懵懂中編程,可能調不通程序,突然改了個東西就通了,但是深層原因並不知道,很多都是東試西試試驗出來的,都是黑箱編程,總感覺隔著霧看程序,我身邊很多人寫了一萬行代碼,還不理解equals和==的區別呢,還不知道Classobject=newClass()等號左右兩邊各代表什麼呢。但是他們一樣能編程,一樣能開發出系統,很多人都以為這樣就算Java高手了,什麼都能編並不等於編的好,當然什麼都能編是個前提。所以要學,就學深入,起碼一種語言要學深,在web開發方面,我推薦java學深,或者說沿著java路學深,這樣去研究C#,.Net平台就很容易,再看ASP和PHP就覺得大家都一樣了,上升到高度不過也就是設計模式的問題了,殊途同歸。
❻ 如何配置JAVA的ODBC數據源。
package com.bin.struts.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConn2000 {
public static Connection getConn(){
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=//資料庫名字";
String user = "sa";
String password = "123";
try {
Class.forName(driver);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public static Connection close(){
return null;
}
}
這是2000的連接方法
這是2005的連接串
jdbc:sqlserver://localhost:1433;databasename=//資料庫
com.microsoft.sqlserver.jdbc.SQLServerDriver
2000資料庫需要打SP4補丁.
並且兩個都需要專門的JDBC驅動的
❼ 怎麼配置java EE和tomcat
1)首先配置tomcat的環境變數。
2)將項目下的webroot放置在tomcat 的webapp目錄下(也可以在tomcat的config目錄裡面配置尋找路徑,具體的為可新建一個.xml文件去讀資料庫數據)
3)啟動tomcat即可。
僅供參考。
❽ Spring怎樣高效的配置多套數據源
1、首先配置多個datasource
<!-- 主資料庫的數據據源 -->
<bean id="masterDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.10.11:1521:trew" />
<property name="username" value="poi" />
<property name="password" value="poi" />
</bean>
<!-- 備份庫的數據據源 -->
<bean id="slaveDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.10.12:1521:trew" />
<property name="username" value="poi2" />
<property name="password" value="poi2" />
</bean>
2、寫一個DynamicDataSource類繼承AbstractRoutingDataSource,並實現determineCurrentLookupKey方法
?
public class DynamicDataSource extends AbstractRoutingDataSource {
@SuppressWarnings("unused")
private Log logger = LogFactory.getLog(getClass());
@Override
protected Object determineCurrentLookupKey() {
return DbContextHolder.getDbType();
}
}
public class DbContextHolder {
@SuppressWarnings("rawtypes")
private static final ThreadLocal contextHolder = new ThreadLocal();
@SuppressWarnings("unchecked")
public static void setDbType(String dbType) {
contextHolder.set(dbType);
}
public static String getDbType() {
return (String) contextHolder.get();
}
public static void clearDbType() {
contextHolder.remove();
}
}
3. 配置動態數據源
<!--將DynamicDataSource Bean加入到Spring的上下文xml配置文件中去,同時配置DynamicDataSource的targetDataSources(多數據源目標)屬性的Map映射。-->
<bean id="dataSource" class="cn.com.core.datasource.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="masterDataSource" value-ref="masterDataSource" />
<entry key="slaveDataSource" value-ref="slaveDataSource" />
</map>
</property>
<property name="defaultTargetDataSource" ref="masterDataSource"/>
</bean>
4.使用動態數據源(hibernate)
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="lobHandler" ref="lobHandler"/>
<property name="eventListeners">
<map>
<entry key="post-insert">
<ref bean="logListener"/>
</entry>
<entry key="post-update">
<ref bean="logListener"/>
</entry>
<entry key="post-delete">
<ref bean="logListener"/>
</entry>
</map>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle10gDialect
<!-- org.hibernate.dialect.OracleDerbyDialect -->
</prop>
<prop key="hibernate.show_sql">true</prop>
<!-- <prop key="hibernate.generate_statistics">true</prop> -->
<prop key="hibernate.connection.release_mode">
auto
</prop>
<prop key="hibernate.autoReconnect">true</prop>
<!--
<prop key="hibernate.hbm2ddl.auto">update</prop>
-->
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
</props>
</property>
</bean>
使用Hibernate時的事務管理配置示例:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
< property name="sessionFactory" ref="sessionFactory" />
bean>