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就是一个开源的数据源