Java高级编程10-姜国海 数据库编程

javax是扩展包,对之前功能的扩展

java.sql

访问数据库
不同的数据库访问的方式不同通讯协议、编译方式不同。
不同的数据库的sql、加锁机制不同。
ODBC:微软指定的开放数据库连接标准
ODBC驱动程序:负责将标准函数转换成数据库的接口

JDBC:java连接数据库的标准
JDBC driver:第三方提供
①JDBC-ODBC bridge:java先访问ODBC,再访问数据库,好处不用安装驱动程序,jdk自带的
②OCI方式:java直接访问本地的数据库的函数,提高了访问效率
③middle server:访问一个进程,数据库服务器
④JDBC直连:用java直接访问数据库,最快的,不经过其他的过程

JDBC直连

Collection 接口:

setAutoCommit(boolean autoCommit)
Sets this connection's auto-commit mode to the given state.
自动提交

异常的时候调用rollback

Driver
connect(String url, Properties info)
Attempts to make a database connection to the given URL.

DriverManger
getConnection() 建立连接


class.forname("com.mysql.jdbc.Driver");
运行时,动态加载一个类,编译的时候不需要这个类,动态的创建对象,执行该类的静态初始化代码
会抛出class not found Exception 异常

初始化代码,
class Student{
    {
        初始化代码,可以用static修饰,在类加载的时
        候访问类的静态变量执行,优先于main函数执行
        只执行一次
    }

}


Eg:
class Driver implement java.sql.Driver{
    static {
    Driver d = new Driver();
    DriverManger.registerDriver(d);
    }

}


Beans

Object o = Beans.instantiate(ClassLoader,"com.abc.beans.Student");

ClassLoader 类加载器

java可以反编译
java 代码混淆器


jdbc协议:

这里写代码片

协议组成

协议名称+主机+主机上的文件

面向抽象的编程


class abstract EProduct{

}

class abstract EProduct{

}

class AProduct extends EProduct{

}

class BProduct extends EProduct{

}

class ProductFactory {
    public static EProduct  getEProduct(){
        Properties p = new Properties();
        p.load(new FileInputStream("app.properties"));
        return (EProduct) Beans.instantiate(getClass().getClassLoader("default"));
    }
    public static EProduct  getEProduct(String type){
        Properties p = new Properties();
        p.load(new FileInputStream("app.properties"));
        return (EProduct) Beans.instantiate(getClass().getClassLoader(type));
    }

}

class App {
    main(){
        EProduct e1 = ProductFactory.getEProduct();
        String s;
        EProduct e2 = ProductFactory.getEProduct(s);

    }
}


app.properties 中定义类

default=AProduct
other=BProduct


这样的好处就是,在App的类中都是抽象的编程,只需要修改app.properties 这个配置文件就可以对工程进行维护

猜你喜欢

转载自blog.csdn.net/l1558198727/article/details/81025384