内存数据库 HSQLDB

简介: <p>应用</p> <p>    在JUnit单元测试中,由于,很多时候没有真实数据库环境,所以,我们很自然的会借助内存数据库HSQLDB。内存数据库非常轻量级,当内存数据库关闭后,内存中的数据也随之消失。代码虽然简单,但还是贴出来,呵呵,供以后复制粘贴方便。</p> <p><br></p> <p>jdbcDriver in pom.xml of Maven:<br></p> <p

应用

    在JUnit单元测试中,由于,很多时候没有真实数据库环境,所以,我们很自然的会借助内存数据库HSQLDB。内存数据库非常轻量级,当内存数据库关闭后,内存中的数据也随之消失。代码虽然简单,但还是贴出来,呵呵,供以后复制粘贴方便。


jdbcDriver in pom.xml of Maven:

		<dependency>
			<groupId>org.hsqldb</groupId>
			<artifactId>hsqldb</artifactId>
			<version>2.3.2</version>
		</dependency>


package shuai.study.memorydb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MemoryDB {
	private static Connection connection = null;
	private static Statement statement = null;
	private static PreparedStatement preparedStatement = null;
	private static ResultSet resultSet = null;

	// Load jdbcDriver
	static {
		try {
			Class.forName("org.hsqldb.jdbcDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	// Get DB connection
	public static Connection getConnection() {
		if (connection == null) {
			try {
				connection = DriverManager.getConnection("jdbc:hsqldb:mem:mdb", "shuai", "123");
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return connection;
	}

	// Get DB statement
	public static Statement getStatement() {
		if (connection == null) {
			getConnection();
		}

		if (statement == null) {
			try {
				statement = connection.createStatement();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return statement;
	}

	// Execute SQL
	public static void executeSQL(String sql) {
		if (statement == null) {
			getStatement();
		}

		try {
			statement.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// Get resultSet
	public static ResultSet executeQuerySQL(String sql) {
		if (connection == null) {
			getConnection();
		}

		try {
			preparedStatement = connection.prepareStatement(sql);
			resultSet = preparedStatement.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return resultSet;
	}

	// Print resultSet
	public static void resultPrint(ResultSet resultSet) {
		try {
			int columnCount = resultSet.getMetaData().getColumnCount();
			String columnValue = null;

			while (resultSet.next()) {
				for (int n = 1; n <= columnCount; n++) {
					columnValue = resultSet.getString(n);

					if (n == columnCount) {
						System.out.println(columnValue);
					} else {
						System.out.print(columnValue + "\t");
					}

				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// Close DB
	public static void closeDB() {
		try {
			if (resultSet != null) {
				resultSet.close();
			}

			if (preparedStatement != null) {
				preparedStatement.close();
			}

			if (statement != null) {
				statement.close();
			}

			if (connection != null) {
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		MemoryDB.executeSQL("CREATE TABLE EMPLOYEE(ID INTEGER, NAME VARCHAR(20), SEX VARCHAR(10), TEAM VARCHAR(20))");

		MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(1,'shuai', 'male', 'FMC')");
		MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(2,'hellen', 'female', 'MUS')");
		MemoryDB.executeSQL("INSERT INTO EMPLOYEE VALUES(3,'mery', 'female', 'SDM')");

		MemoryDB.executeSQL("COMMIT");

		ResultSet resultSet = MemoryDB.executeQuerySQL("SELECT * FROM EMPLOYEE");
		MemoryDB.resultPrint(resultSet);

		MemoryDB.closeDB();
	}
}


相关文章
|
存储 缓存 负载均衡
Tair分布式缓存
Redis很好用,相比memcached多了很多数据结构,支持持久化。但是在很长一段时间里,原生是不支持分布式的。后来就出现了很多redis集群类产品,Tair是其中胜出的优秀作品之一。 所以Tair的特性都是一些集群的特性,比如:容错、解决单点故障、跨机房管理、多集群管理、支持副本等。总而言之,是redis的高可用版本。
1612 1
Tair分布式缓存
|
存储 缓存 负载均衡
《深入分布式缓存》之“关于Tair哪些事儿”
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
2255 0
|
存储 消息中间件 NoSQL
深入了解Redis:高性能的内存数据库
深入了解Redis:高性能的内存数据库
|
7月前
|
存储 缓存 NoSQL
GuavaCache、EVCache、Tair、Aerospike 缓存框架比较
**摘要:** Guava Cache、EVCache、Tair 和 Aerospike 是不同的缓存解决方案。Guava Cache 是轻量级的本地缓存,适用于Java应用,提供丰富的配置选项和自动加载功能。EVCache 基于 Memcached,适合分布式场景,高并发访问。Tair,阿里巴巴的分布式缓存,支持多种数据结构,适用于大规模系统。Aerospike 是高性能NoSQL数据库,结合缓存和持久化,适用于低延迟和大数据量的场景。选择时要考虑应用场景、性能需求和数据规模。
106 0
GuavaCache、EVCache、Tair、Aerospike 缓存框架比较
|
8月前
|
存储 缓存 NoSQL
Redis是一种高性能的内存数据库,常用于高并发环境下的缓存解决方案
【6月更文挑战第18天】**Redis摘要:** 高性能内存数据库,擅长高并发缓存。数据存内存,访问迅速;支持字符串、列表等多元数据类型;具备持久化防止数据丢失;丰富命令集便于操作;通过节点集群实现数据分片与负载均衡,增强可用性和扩展性。理想的缓存解决方案。
103 1
|
8月前
|
存储 消息中间件 缓存
Redis:内存数据存储与缓存系统的技术探索
**Redis 概述与最佳实践** Redis,全称Remote Dictionary Server,是流行的内存数据结构存储系统,常用于数据库、缓存和消息中介。它支持字符串、哈希、列表等数据结构,并具备持久化、主从复制、集群部署及发布/订阅功能。Redis适用于缓存系统、计数器、消息队列、分布式锁和实时系统等场景。最佳实践包括选择合适的数据结构、优化缓存策略、监控调优、主从复制与集群部署以及确保安全配置。
160 3
|
存储 消息中间件 缓存
Redis:高性能、多功能的内存数据库
Redis是一种开源、高性能的内存数据库,广泛应用于缓存、会话存储、实时数据处理等场景。本文将介绍Redis的特点、优势和主要功能,探讨它在不同应用领域中的应用场景,以及如何充分利用Redis提升应用性能和可靠性。无论是小型应用还是大规模的分布式系统,Redis都是一个值得关注的强大工具。
172 0
|
9月前
|
存储 分布式计算 NoSQL
基于内存的分布式NoSQL数据库Redis(五)数据存储与RDB设计
基于内存的分布式NoSQL数据库Redis(五)数据存储与RDB设计
217 0
|
9月前
|
NoSQL 安全 Java
基于内存的分布式NoSQL数据库Redis(六)AOF设计
基于内存的分布式NoSQL数据库Redis(六)AOF设计
209 0
|
9月前
|
存储 NoSQL 关系型数据库
基于内存的分布式NoSQL数据库Redis(一)介绍与安装
基于内存的分布式NoSQL数据库Redis(一)介绍与安装
218 0