3.1 JDBC的编程
JDBC是JAVA数据库编程API,JDBC提供了JA VA应用程序访问数据库资源的编程接口,提供了对SQL语言的支持。JDBC的主要作用是连接数据库,维护数据源,实现SQL语言,以及发送SQL到数据库并返回和处理结果。下面的ComputerAccess程序演示了利用JDBC访问MYSQL数据库中的Computer数据表的过程。
package com.joy_cz.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* @author 蔡哲
*/
public class ComputerAccess{
public static void main(String[] args){
Connection conn = null;
try{
//加载MYSQL数据库驱动
Class.forName("org.gjt.mm.mysql.Driver");
//设置访问属性
Properties prop = new Properties();
prop.setProperty("user","root");
prop.setProperty("password","123456");
//打开数据库连接并连接到指定的URL
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hibernate",prop);
}catch(ClassNotFoundException e){
e.printStackTrace();}
catch(SQLException e){
e.printStackTrace();}}}
3.2 连接数据库 DriverManager
JDBC中的DriverManager是用来管理数据库驱动程序的。利用DriverManager可以建立数据库连接,管理多个数据库驱动,并识别不同的数据库URL所对应的数据库驱动。示例如下:
package com.joy_cz.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* @author 蔡哲
*/
public class DriverManagerTest
{ public static void main(String [] args)
{
Connection conn = null;
try {
//加载MYSQL数据库驱动
Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("org.postgresql.Driver");
//设置访问属性
Properties prop = new Properties();
prop.setProperty("user","root");
prop.setProperty("password","123456");
//将日志输出到控制台
DriverManager.setLogwriter(new PrintWriter(System.out));
//打开数据库连接并连接到指定的URL
String mysqlURL = "jdbc:mysql://localhost:3306/hibernate";
String postgresqlURL = "jdbc:postgresql://locahost:5432//hibernate";
con = DriverManager.getConnection(mysqlURL,prop);
// con = DriverManager.getConnection(postgresqlURL,prop);
}catch(ClassNotFoundException e){
e.printStackTrace();}
catch(SQLException e){
e.printStackTrace();}}}
3.3 数据源
DataSource对象代表JAVA的数据源。DataSource是数据库编程的一个工具,利用DataSource可以获得数据库连接。DataSource本身可以被注册到JNDI命名服务器上,通过JNDI,不同的JAVA应用程序可以共享DataSource,从而为数据库程序的开发提供很大的便利。示例如下:
package com.joy_cz.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
/**
* @author 蔡哲
*/
public class BasicDataSourceTest
{ public static void main(String [] args)
{
MysqlDataSource ds = new MysqlDataSource();
ds.setURL("jdbc:mysql://localhost:3306/hibernate");
ds.setUser("root");
ds.setPassword("123456");
Connection conn = ds.getConnection();
}
}
3.4 数据库连接池
(1) C3P0连接池
通过连接池可以提供ConnectionPoolDataSource类型的数据源。目前,连接池的开放源代码实现项目很多,而且有多种连接池实现工具可以被配置到Hibernate中使用,其中包括C3P0项目(http://sourceforge.net/projects/c3p0/)。下面的代码使用了C3P0提供的ComboPooledDataSource
package com.joy_cz.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* @author 蔡哲
*/
public class C3P0Test
{ public static void main(String [] args)
{
//创建C3P0提供的连接池数据源
ComboPooledDataSource cpds = new ComboPooledDataSource();
//设置数据库驱动
cpds.setDriverClass("org.gjt.mm.mysql.Driver");
//设置JDBC的URL
cpds.setURL("jdbc:mysql://localhost:3306/hibernate");
cpds.setUser("root");
cpds.setPassword("123456");
//从连接池数据源获取数据库连接
Connection conn = cpds.getConnection();
}
}
(2) PooledDataSource 与JNDI
利用连接池实现的DataSource是一个系统中需要反复调用的资源,通常被注册到JNDI,以便于被其他应用程序使用。使用JNDI服务的名称服务工具可从TOMCAT的软件包中得到( naming-common.jar),需要把naming-common.jar导入CLASSPATH。示例如下:
package com.joy_cz.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
* @author 蔡哲
*/
public class C3P0JNDITest
{ public static void main(String [] args)
{
Hashtable table = new Hashtable();
//设置JNDI的工厂类
table.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.naming.java.javaURLContextFactory");
//初始化JNDI上下文
InitialContext ctx = new InitialContext(table);
//创建C3P0提供的连接池数据源
ComboPooledDataSource cpds = new ComboPooledDataSource();
//设置数据库驱动
cpds.setDriverClass("org.gjt.mm.mysql.Driver");
//设置JDBC的URL
cpds.setURL("jdbc:mysql://localhost:3306/hibernate");
cpds.setUser("root");
cpds.setPassword("123456");
cpds.setInitialPoolSize(10);
//把数据源绑定到JNDI,名称是"hibernateDS"
ctx.bind("hibernateDS",cpds);
//从JNDI查找数据源
DataSource ds = (DataSource)ctx.lookup("hibernateDS");
//从连接池数据源获取数据库连接
Connection conn = ds.getConnection();
}
}
分享到:
相关推荐
通过深入学习Hibernate 4.1.4.Final的源码,我们可以更好地理解其设计思想,提升我们的编程技巧,同时也能为日常开发中遇到的问题提供解决方案。这是一份宝贵的资源,无论是对于初学者还是经验丰富的开发者,都值得...
这些文档是学习和理解Hibernate功能、配置以及最佳实践的重要资源。通过阅读这些文档,开发者可以了解到如何将Java对象映射到数据库表,以及如何使用Hibernate进行数据操作,如CRUD(创建、读取、更新和删除)操作。...
在实际应用中,开发人员通常会结合Spring框架来使用Hibernate,通过Spring的声明式事务管理、AOP(面向切面编程)等功能,进一步简化开发流程。 总之,`hibernate-distribution-3.6.6.Final.tar.gz`压缩包是...
**hibernate-distribution-3.6.0.Final-dist** 是一个包含Hibernate框架3.6.0最终版本的压缩包。...虽然现在有更新的Hibernate版本,但对于学习和理解ORM以及Hibernate的工作原理,3.6.0版本仍然是一个不错的选择。
Hibernate 是Java平台上的一款强大的ORM工具,它允许开发者以对象的方式来操作数据库,将数据库操作转化为对Java对象的操作,降低了数据库编程的复杂性。4.2.12.Final是Hibernate的一个稳定版本,包含了多项改进和...
总结,`hibernate-release-4.2.3.Final.zip`中的lib文件夹包含了运行Hibernate应用所需的全部库文件,包括Hibernate核心库、JDBC驱动、缓存提供商等。通过理解和熟练运用这些知识点,开发者可以构建出高效、可靠的...
Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。此版本“hibernate-release-4.2.21.Final”是Hibernate 4系列的一个稳定版本,...
3. `com.springsource.javassist-3.15.0.GA.jar`:Java编程辅助工具,用于运行时修改和创建类,Hibernate使用它来动态生成代理类。 4. `...
Hibernate 是一个开源的 ORM 解决方案,它允许开发者使用面向对象的编程方式来操作关系型数据库,避免了传统的 JDBC 编程带来的复杂性。通过提供一套API,Hibernate 可以自动处理对象的持久化,使得Java对象与数据库...
Hibernate是一个开源的ORM框架,它通过提供一种编程和设计模式,使Java开发者能够将数据库操作转化为对Java对象的操作,极大地简化了数据库编程。在Hibernate 4.3.8.Final版本中,它继续强化了对JPA(Java ...
Hibernate是Java领域中一款著名的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个“hibernate-5.2.15. 最新jar包”中,包含的是Hibernate 5.2.15.Final版本...
本资源“hibernate+junit+mysql-jdbc开发核心jar包三合一”显然是为了支持SSH框架中的Hibernate部分,并结合JUnit进行测试以及MySQL数据库连接。现在我们将详细探讨这三个组件及其在Java开发中的应用。 **Hibernate...
3. Hibernate 5.2.2.Final新特性: - 改进了查询API,支持JPA 2.2规范。 - 提供了更强大的HQL(Hibernate Query Language)和Criteria API,支持复杂查询。 - 性能优化,包括更快的初始化时间和更好的内存管理。 ...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在关系数据库上进行面向对象的编程。在Java开发中,Hibernate提供了一种方便、高效的方式来处理数据库操作,避免了直接编写SQL语句的繁琐。这个...
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate...
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate...
3. 支持多种数据库:Hibernate可以与多种数据库(如MySQL、Oracle、SQL Server等)无缝对接。 4. 二级缓存:提供了本地和分布式两种缓存策略,提高了数据读取效率。 5. 支持事务管理:通过编程或声明式方式控制事务...
3. hibernate-validator-6.1.6.Final.jar:实现了JSR 380(Bean Validation 2.0),用于校验实体属性。 4. 数据库驱动jar:根据所使用的数据库,如MySQL、Oracle等,需要添加对应的JDBC驱动。 5. 其他依赖:如...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库,极大地简化了数据库编程。此“hibernate-distribution-3.6.10.Final”基本包是Hibernate 3.6.10版本的最终发行版...