Hibernate学习(3)----JDBC编程

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();

            }

}

 

你可能感兴趣的:(sql,编程,mysql,Hibernate,jdbc)