package com.daqing.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 单例模式会有一个实例;会new一次
* 单例模式不使用静态的
* A0102JdbcUtilsSingletonRetard
* 意思:jdbc工具类,单例,延迟加载就是用到的时候再new
* @author Administrator
*
*/
public final class A0103JdbcUtilsSingletonRetard {
private String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
private String user = "root";
private String password = "root";
/**
* 预初始化
*/
private static A0103JdbcUtilsSingletonRetard instance = null;
private A0103JdbcUtilsSingletonRetard(){
}
/**
* 加锁模式,双重检查,防止重复的new
* @return
*/
public static A0103JdbcUtilsSingletonRetard getInstacce(){
if(instance==null){
synchronized (A0103JdbcUtilsSingletonRetard.class) {
if(instance==null){
instance = new A0103JdbcUtilsSingletonRetard();
}
}
}
return instance;
}
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
}
public Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
}
public void free(ResultSet rs, PreparedStatement ps, Connection conn){
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
System.out.println("ResultSet关闭发生异常...");
} finally {
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
System.out.println("PreparedStatement关闭发生异常...");
} finally {
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
System.out.println("Connection关闭发生异常...");
}
}
}
}
}
}
}
分享到:
相关推荐
综上所述,"Oracle jdbc 单例 工具类"主要涉及Oracle数据库的JDBC连接管理,通过单例模式实现连接的高效复用,以及在Java环境中与Oracle数据库交互的基础知识。理解这些概念对于任何使用Java进行数据库开发的程序员...
在本项目中,“jdbc连接工具类 单例连接模式,进度1”指的是创建了一个使用单例设计模式的JDBC连接工具类,以优化数据库连接的管理和复用,提高程序性能。下面我们将深入探讨这两个关键概念。 首先,让我们了解一下...
其中,DCL和静态内部类是最推荐的,因为它们既实现了线程安全,又保证了单例的唯一性,并且延迟加载。 1. **懒汉式**:在类的内部创建一个实例,但在获取实例时才进行初始化。这种实现方式在多线程环境下不安全,...
还有一种双重检查锁定(DCL)的实现方式,既保证了线程安全,又实现了延迟加载,是较为理想的单例模式实现。 以HikariCP为例,它被誉为“最快的JDBC连接池”。HikariCP使用了单例模式,提供了线程安全的初始化和...
在使用JDBC访问数据库时,首先需要创建数据库连接,这一过程可以通过连接池来优化。连接池技术的核心在于DBConnectionManager和DBConnectionPool两个类。DBConnectionManager负责管理多个连接池对象,装载和注册JDBC...
在这个特定的场景中,我们关注的是一个基于DBCP(Database Connection Pool)的数据库工具类,它利用了Google工程师Bob Lee提出的懒汉单例模式来构建连接工厂,并将数据库连接与当前线程绑定,以优化资源管理和防止...
这种模式在资源管理、缓存、日志记录等场景中广泛应用,例如在 JDBC 连接数据库时,通常会采用单例模式来管理数据库连接。 单例模式有两种常见的实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: - 饿汉模式的...
3. **延迟加载**: - 在需要使用工具类的功能时才创建其实例。 - 使用同步代码块解决多线程下的实例化问题。 #### 五、JDBC增删改查操作 - **增(Insert)**:使用`PreparedStatement`执行插入操作。 - **删...
2. **设计模式**:模仿Hibernate,我们需要理解其背后的设计模式,如工厂模式(用于创建数据库连接)、单例模式(控制数据库连接的数量)、代理模式(处理延迟加载)等。 3. **JDBC基础**:尽管我们要模仿Hibernate...
3. **双重检查锁定**:结合了懒汉式的延迟加载和同步机制,只在必要的时候初始化实例,并且只对必要的检查进行同步,提高了效率和线程安全性。 4. **静态内部类**:利用Java的类加载机制来保证初始化实例时只有一个...
总结:这个文档主要涵盖了Java Web开发中的关键知识点,包括JSP的内置对象、单例模式的实现以及使用JDBC操作Oracle数据库的基本步骤。这些知识点在进行Web应用开发和数据库交互时至关重要,理解它们对于编写高效的...
在Java中,如果需要管理与MySQL数据库的连接,可以使用单例模式来创建一个`DBManager`类,该类负责初始化和管理数据库连接。以下是一个简单的示例: ```java public class DBManager { private String user; ...
这种模式在 ASP.NET 编程中同样适用,尤其是在需要频繁创建和销毁对象时,如与数据库交互的 JDBC 连接管理。 单例模式分为两种主要实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: 饿汉模式在类加载时就完成了...
- **Web层的延迟加载**:在Web应用中,只有当真正需要数据时,Hibernate才会执行数据库查询,提高性能。例如,只加载实体的一部分属性,其他属性在需要时再加载。 总结来说,Hibernate通过提供这些接口和机制,极大...
- `load`方法是基于对象标识符(OID)来获取对象,它返回的是一个代理对象,实际的对象数据会在第一次访问属性时从数据库加载,实现了延迟加载。如果对象不存在,会抛出`EntityNotFoundException`。 - `get`方法...
7. **懒加载(Lazy Loading)**: Hibernate提供了一种优化策略,即延迟加载,只有在真正需要时才加载关联的对象,减少内存消耗。 8. **级联操作(Cascading)**: 可以配置实体间的级联关系,如`@OneToMany` 和 `@...
延迟加载(Lazy Loading)是Hibernate的重要特性,允许在真正需要数据时才加载关联对象,避免了“懒汉式”加载带来的性能开销。而立即加载(Eager Loading)则是在查询时就加载所有关联对象,适用于关联数据经常一起...
在控制台应用中,这通常通过JDBC(Java Database Connectivity)实现,包括加载驱动、建立连接、执行SQL语句以及处理结果集等步骤。需要注意的是,为了遵循分层架构的原则,数据访问层应尽量不包含任何业务逻辑,仅...
- 性能高效,因为它是轻量级框架,提供了延迟加载等优化策略。 5. Hibernate中类间关系的实现: Hibernate通过配置文件中的映射注解(如@ManyToOne、@OneToMany、@ManyToMany等)来定义类与类之间的关系,对应于...
Hibernate中get和load的区别:get是立即加载,load是延迟加载。 Hibernate、Ibatis、Jdbc三者的区别:Hibernate和Ibatis都是JDBC的封装框架,但Hibernate是全自动的ORM映射,而Ibatis是半自动的。 Hibernate的运行...