栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果我使用单例类进行数据库连接,那么一个用户可以为所有人关闭该连接吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果我使用单例类进行数据库连接,那么一个用户可以为所有人关闭该连接吗?

只要您不在通话中返回 同一

Connection
实例,就不必
getConnection()
担心。然后,每个调用者都将获得自己的实例。到目前为止,您将在每个
getConnection()
调用上创建一个全新的连接,因此不会返回任何静态或实例变量。这样很安全。

但是,这种方法笨拙。不必是单身人士。辅助/实用程序类也很好。或者,如果您想要更多的抽象,可以使用抽象工厂返回的连接管理器。我只更改它即可在类初始化期间获取一次数据源,而不是每次都在中获取数据源

getConnection()
。无论如何,都是同一实例。保持便宜。这是一个基本的启动示例:

public class Database {    private static DataSource dataSource;    static {        try { dataSource = new InitialContext().lookup("jndifordbconc");        }        catch (NamingException e) {  throw new ExceptionInInitializerError("'jndifordbconc' not found in JNDI", e);        }    }    public static Connection getConnection() {        return dataSource.getConnection();    }}

根据常规的JDBC习惯用法如下。

public List<Entity> list() throws SQLException {    List<Entity> entities = new ArrayList<Entity>();    try (        Connection connection = Database.getConnection();        PreparedStatement statement = connection.prepareStatement("SELECt id, foo, bar FROM entity");        ResultSet resultSet = statement.executeQuery();    ) {        while (resultSet.next()) { Entity entity = new Entity(); entity.setId(resultSet.getLong("id")); entity.setFoo(resultSet.getString("foo")); entity.setBar(resultSet.getString("bar")); entities.add(entity);        }    }    return entities;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号