JAVA web 与数据库的连接到底是怎样连的啊?

JAVA web 与数据库的连接到底是怎样连的啊?,第1张

JAVA Web开发中与数据库的连接 *** 作,配置:

1、新建数据库。

新建登录角色,在新建数据库的时候把数据库的所有权交给你新建的角色。用用户和密码控制数据库。保证数据库的安全。

2、编写context.xml文件 Xml文件的目的是封装用户和密码,也是封装的一种,方便 *** 作。

以下为context.xml文件样例:

<?xml version="1.0" encoding="utf-8"?>

<Context reloadable = "true">

<Resource

name="jdbc/sampleHS"

type="javax.sql.DataSource"

maxActive="14"

maxIdle="10"

username="hstaoshu"

maxWait="5000"

driverClassName="org.postgresql.Driver"

password="hstaoshu"

url="jdbc:postgresql://localhost:5432/hstaoshu"/>

</Context>

详细说明:

name="jdbc/sampleHS"里面的ssampHS是可改名称,建议根据需要自己命名;

username="hstaoshu"

password="hstaoshu"此两项为你新建的数据库登录角色用户名和密码信息,只有匹配 了才能访问。这里简单为了表示,把用户名和密码弄成了跟数据库名字一样。其实这是很不安全的。

url="jdbc:postgresql://localhost:5432/hstaoshu"/>

这是连接数据库的URl,就像访问网站的地址一样。没有这个是无法访问数据库的。localhost:5432表示本地端口。一般不需要改动,如果你在配置数据库的时候改动过端口,那么你需要把它改回来。/hstaoshu是你的数据库名称。

其他选项请勿擅自改动。

3、编写DAO类。

DAO类的作用是与数据连接后,对数据库的一些 *** 作的封装。封装的作用。为了更好的数据管理。

DAO是真正如何使用数据库的关键步骤,前两步只是部署和配置。

private static InitialContext context = null

private DataSource dataSource = null

//一般把跟数据库的连接放在DAO类的构造函数里,只要被实例化,就能和数据库连接

public BookDAO() {

try {

if (context == null) {

context = new InitialContext()

}

dataSource = (DataSource) context.lookup("java:comp/env/jdbc/sampleHS")

// 连接数据库,前面在context.xml文件配置里的URl

} catch (NamingException e2) {

e2.printStackTrace()

}

}

public Connection getConnection() {

Connection conn = null

try {

conn = dataSource.getConnection()// 获得数据源的连接对象

} catch (SQLException e) {

e.printStackTrace()

}

return conn

}

做完上面的三步 *** 作,开发环境已经完全和数据库连接OK,可以开始数据库的 *** 作了。一般来说,对数据库的 *** 作语句都是提前封装好的。这样修改起来会对下面的代码影响降到最小。

如下:

// ------------------数据库 *** 作语句代码封装------------------

/* 查看所有图书 */

private static final String SELECT_ALL_SQL = "SELECT * FROM book"

那么在使用的时候只要直接调用:

pstmt = conn.prepareStatement(SELECT_ALL_SQL)

什么是连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。

为什么要使用连接池

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次 *** 作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

建立一个web项目

把数据库驱动复制到lib目录下。数据库驱动有:mysql,sqlserver,oracle等 是什么样类型的数据导入相应驱动。

编写一个连接数据库的工具类,获取一个连接。下面以mysql数据库为例。

核心代码:

public class DataUtils {

/**

* 从数据中获取一个连接

* @return

*/

public static Connection getConn(){

Connection conn = null

try {

Class.forName("com.mysql.jdbc.Driver").newInstance()

//表为test,用户名root,密码admin。

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "admin")

} catch (Exception e) {

e.printStackTrace()

}

return conn

}

}

4.获取到与相应数据库的连接后,就可以做增删改查 *** 作了。记得做完 *** 作后,关闭连接,释放资源。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9556254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存