java与数据库连接的小项目

在Java中,连接数据库的最常见方式是使用JDBC(Java Database Connectivity)API。以下是一个简单的Java项目,使用JDBC连接MySQL数据库并执行查询:

1. 首先,确保已经安装了MySQL数据库和JDBC驱动,可以在项目中添加mysql-connector-java依赖。如果你使用Maven,可以在pom.xml文件中添加:

“`xml
mysqlmysql-connector-java8.0.22
“`

2. 创建一个数据库连接类,比如DBConnection.java:

“`java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
private static final String DB_URL = “jdbc:mysql://localhost:3306/myDatabase”;
private static final String USER = “root”;
private static final String PASS = “password”;

public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println(“Connected to the database”);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
}
“`

3. 在主程序中,使用连接进行查询:

“`java
public class Main {
public static void main(String[] args) {
try {
DBConnection dbConnection = new DBConnection();
Connection conn = dbConnection.getConnection();

String sql = “SELECT * FROM myTable”;
Statement stmt = conn.createstatement();
ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {
System.out.println(rs.getString(“column1”) + “, ” + rs.getString(“column2”));
}

rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
“`

这个项目连接到本地的MySQL数据库,选择名为`myDatabase`的数据库,从`myTable`表中选择所有列,并打印出来。请根据实际数据库名、表名和列名替换相应的值。

注意:在实际项目中,为了安全性和可维护性,推荐使用Spring框架的数据访问层,如JdbcTemplate或JPA,而不是直接使用JDBC。

技术栈评分:技术栈使用的目前较为主流的开发技术,后端技术像SpringBoot、JPA、JWT认证技术等等,前端技术Layui等没有用目前企业中流行的Vue框架开发,稍微欠缺。综合打分60,技术栈评分达到及格线。

Gitee源码Star数2.3k,Fork数1.1k,还是比较高的,Gitee指数综合得分是57,代码最近一次更新是28天前,从数据上看社区活跃程度还是比较高的。

java与数据库连接的小项目

项目的文档Readme写得非常清晰,包括使用说明,项目介绍,演示地址,安装介绍等等,对于新手入门非常简单,项目还有一个专门的官网,充分说明活跃度还是比较高的。

后端技术:SpringBoot + Spring Data Jpa + Thymeleaf + Shiro + Jwt + EhCache

基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf + Shiro 开发的后台管理系统国家基金支持农村创业项目,采用分模块的方式便于开发和维护,支持前后台模块分别部署,目前支持的功能有:权限管理、部门管理、字典管理、日志记录、文件上传、代码生成等,为快速开发后台系统而生的脚手架!

今天开始做第一期的开源项目分享,首先带来的第一款是TIMO管理系统,基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf 的后台脚手架。

所以总结下来JVM性能优化的本质就是:通过年轻代&老年代内存合理的分配,尽量让对象都在年轻代时被回收,尽量减少对象或者没有对象进入老年代,尽量做到长时间或者零Full GC。

本周代码实验室详细介绍了目前最主流使用的两款数据库连接池HikariCP和Druid,Hikari为何如此快?Druid为监控而生的连接池。

HikariCP:HikariCP是由日本程序员开源的一个数据库连接池组件,代码非常轻量,并且速度非常的快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也是推荐使用HikariCP。

通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter,就是通过Druid的SQL Parser分析语义实现的。

支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。

Druid:Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL Parser。

BoneCP:是一个快速、开源的数据库连接池。帮用户管理数据连接,让应用程序能更快速地访问数据库。比C3P0/DBCP连接池速度快25倍。

MiniConnectionPoolManager:是一个轻量级JDBC数据库连接池。它只需要Java1.5(或更高)并且没有依赖第三方包。

SmartPool:是一个连接池组件,它模仿应用服务器对象池的特性。SmartPool能够解决一些临界问题如连接泄漏(connection leaks)、连接阻塞、打开的JDBC对象(如Statements、PreparedStatements)等。SmartPool的特性包括:

Primrose:是一个Java开发的数据库连接池。当前支持的容器包括Tomcat4&5、Resin3与JBoss3。它同样也有一个独立的版本,可以在应用程序中使用而不必运行在容器中。Primrose通过一个WEB接口来控制SQL处理的追踪、配置,以及动态池管理。在重负荷的情况下可进行连接请求队列处理。

DBPool:是一个高效、易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池,使用户能够开发一个满足自己需求的数据库连接池。

Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。

C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate [2] 一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

本周是2021年的第15周,看看本周代码实验室都做了哪些实验,本周工作比较忙,分享的干货不是特别多,主要讲了两个好用的数据库连接池、PS+PO的JVM调优实战入门,还有带来一个后端开发脚手架的项目分享,马上去片~

多学习才能多赚钱之:java怎么与数据库连接

数据根据自己需求自行写入几个就行,以上就是java连接mysql数据库的实例代码,eclipse也大同小异,就导入jar包的方式不同。

System.out.println(“状态为正常的列车数量为:” + resultSet.getInt(1));

ResultSet resultSet = statement.executeQuery(sql);

public static void main(String[] args) throws SQLException {

然后写下主函数Main.java,这里主函数的函数体可以在最后再写,需要什么功能就把注释打开就好,快捷注释的方法,选中这句话,按ctrl加/,就能全注释了。

return DriverManager.getConnection(url, user, password);

然后创建连接的配置类DbConfig.java,localhost是本机的ip地址,如果有服务器就填服务器的ip地址,message是数据库的名字,这里一张图说下有很多新手误解的名字

`terminal` varchar(30) NOT NULL COMMENT ‘终到地’,

`origin` varchar(30) NOT NULL COMMENT ‘始发地’,

JavaSE的金牌榜小项目启蒙+提高重点:Tomcat 8.5 +mysql 5.7+jdk1.8

conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mofa”, “root”, “123456”);

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

项目案例:Java多线程批量拆分List导入数据库

上面是通过应用ExecutorService 建立了固定的线程数,然后根据线程数目进行分组,批量依次导入。一方面可以缓解数据库的压力,另一个面线程数目多了,一定程度会提高程序运行的时间。缺点就是要看服务器的配置,如果配置好的话就可以开多点线程,配置差的话就开小点。

studentSave.saveStudent(EnrollStudentEntityImputList,studentEntityImportList,allusersEntityImportList);

final List allusersEntityImportList = allusersEntityList.subList(size / nThreads * i, size / nThreads * (i + 1));

使用 Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。

Database Mesh,一个搭乘 Service Mesh 浪潮衍生出来的新兴词汇。顾名思义,Database Mesh 使用一个啮合层,将散落在系统各个角落中的数据库统一治理起来。通过啮合层集中在一起的应用与数据库之间的交互网络,就像蜘蛛网一样复杂而有序。它的首要目标并非啮合存储于数据库中的数据,而是啮合应用与数据库间的交互。

未来的中间件,一定是和spring生态圈和servich mesh一样,大道至简农村小伙父亲反对创业小说,越来越薄,升级中间件不再是需要用户强行升级maven依赖解决依赖冲突,而是通过mesh的方式极致到升级让业务方无感知。所以那些热部署、潘多拉boot、容器隔离等解决依赖冲突的妥协方式也将可能大概率被置换掉。

如果这么说,druid准确的说是生活在第一代和第二代连接池的面向过程的年代。druid可能忘了松耦合这个概念,把监控和数据库连接池做在一个项目里,本身就是紧耦合。既然微服务提倡业务隔离性,那么这种难道不应该隔离么?让组件工具一次只做一件事不好么?监控的事情在service mesh的将来毕竟是有别的其天然的监控手法的而不是硬编码在一个小小的连接池里。综上所述,放在现在或是未来的趋势去拼,大概率比不过拥抱springboot 2.0以及大道至简精简到极致的HikariCP。

一个有赞的朋友告诉我,在有赞核心应用,用HikariCP替换durid后,RT出现断崖式下滑(1.5ms ~ 1.2ms) 并且持续稳定毛刺少。性能测试与压测之后,一核心系统与druid相比,性能提高一倍左右。

也就是说中间件最后的趋势一定是弱化到无感知,这才是最终的一个大道至简的方向。那些maven依赖问题,把二方库写在pom里,监控等代码的硬编码进应用里都将逐渐弱化到不复存在,取而代之的那些java agent(如pinpoint、skywalking之类),抑或是service mesh这种side car模式都是可以做中间件(包括连接池)的监控的。

我们先来看看未来的趋势:单机的操作系统将会被抛弃,取而代之的是容器调度加编排的云操作系统。裸机或者虚拟机的运行时也将会被容器取代。通信方面将会使用Service Mesh。

HikariCP使用threadlocal缓存连接及大量使用CAS的机制,最大限度的避免lock。单可能带来cpu使用率的上升。

Druid:Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能,是一个可用于大数据实时查询和分析的高容错、高性能的开源分布式系统,尤其是当发生代码部署、机器故障以及其他产品系统遇到宕机等情况时,Druid仍能够保持100%正常运行。主要特色:为分析监控设计;快速的交互式查询;高可用;可扩展;Druid是一个开源项目,源码托管在github上。

BoneCP:官方说法BoneCP是一个高效、免费、开源的Java数据库连接池实现库。设计初衷就是为了提高数据库连接池性能,根据某些测试数据显示,BoneCP的速度是最快的,要比当时第二快速的连接池快25倍左右,完美集成到一些持久化产品如Hibernate和DataNucleus中。BoneCP特色:高度可扩展,快速;连接状态切换的回调机制;允许直接访问连接;自动化重置能力;JMX支持;懒加载能力;支持XML和属性文件配置方式;较好的Java代码组织,100%单元测试分支代码覆盖率;代码40KB左右。

C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate、Spring等。单线程,性能较差,适用于小型系统,代码600KB左右。

专题:
2农村创业  
农村待创业  
农村式创业  

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享