Рубрики
Без рубрики

Примеры встроенных баз данных Spring

– Примеры встроенных баз данных Spring

В этом уроке мы покажем вам несколько примеров настройки встроенных движков баз данных, таких как HSQL, H2 и Derby в Spring framework.

Используемые технологии:

  1. Пружина 4.1.6. ВЫПУСК
  2. Юнит 4.1.2
  3. Мавен 3

Тестирование встроенных баз данных:

  1. HSQLDB 2.3.2
  2. Н2 1.4.187
  3. Дерби 10.11.1.1

Концепция встроенной базы данных очень полезна на этапе разработки, потому что они легкие, быстрые, быстро запускаются, улучшают тестируемость, простоту настройки, позволяют разработчику больше сосредоточиться на разработке, а не на том, как настроить источник данных для базы данных, или тратить время на запуск тяжелой базы данных, чтобы просто протестировать несколько строк кода.

P.S Эта встроенная функция базы данных доступна с весны 3.

1. Зависимость от проекта

Встроенные функции базы данных включены в spring-mvc . Например, чтобы запустить встроенную базу данных HSQL, вам необходимо включить как spring-mvc , так и hsqldb .

			
		4.1.6.RELEASE
		2.3.2
		1.4.187
		10.11.1.1
	

	

		
		
			org.springframework
			spring-jdbc
			${spring.version}
		
		
		
		
			org.hsqldb
			hsqldb
			${hsqldb.version}
		

		
		
			com.h2database
			h2
			${dbh2.version}
		

		
		
			org.apache.derby
			derby
			${derby.version}
		

	

2. Встроенная база данных в формате Spring XML

Пример создания встроенной базы данных с использованием Spring XML и инициализации некоторых сценариев для создания таблиц и вставки данных. Spring создаст имя базы данных, используя значение id тега, в приведенных ниже примерах имя базы данных будет “Источник данных”.

2.1 Пример HSQL.

	
		
		
	

2.2 Пример H2.

	
		
		
	

2.3 Пример дерби.

	
		
		
	

Будет создано следующее “Подключение драйвера JDBC”:

  1. HSQL – jdbc:hsqldb:mem:источник данных
  2. H2 – jdbc:h2:mem:источник данных
  3. ДЕРБИ – jdbc:дерби:память:источник данных

3. Встроенная База Данных В коде Spring

Примеры программного создания встроенной базы данных. Если имя базы данных не определено с помощью EmbeddedDatabaseBuilder.setName() , Spring назначит имя базы данных по умолчанию “testdb”.

import javax.sql.DataSource;

import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
//...

	@Bean
	public DataSource dataSource() {
		
		// no need shutdown, EmbeddedDatabaseFactoryBean will take care of this
		EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
		EmbeddedDatabase db = builder
			.setType(EmbeddedDatabaseType.HSQL) //.H2 or .DERBY
			.addScript("db/sql/create-db.sql")
			.addScript("db/sql/insert-data.sql")
			.build();
		return db;
	}
@ComponentScan({ "com.mkyong" })
@Configuration
public class SpringRootConfig {

	@Autowired
	DataSource dataSource;

	@Bean
	public JdbcTemplate getJdbcTemplate() {
		return new JdbcTemplate(dataSource);
	}

Будет создано следующее “Подключение драйвера JDBC”:

  1. HSQL – jdbc:hsqldb:mem:база данных тестов
  2. H2 – jdbc:h2:mem:база данных тестов
  3. ДЕРБИ – jdbc:дерби:память:база данных тестов

4. Модульный тест

Простой пример модульного теста для тестирования DAO со встроенной базой данных.

4.1 Сценарии SQL для создания таблицы и вставки данных.

CREATE TABLE users (
  id         INTEGER PRIMARY KEY,
  name VARCHAR(30),
  email  VARCHAR(50)
);
INSERT INTO users VALUES (1, 'mkyong', 'mkyong@gmail.com');
INSERT INTO users VALUES (2, 'alex', 'alex@yahoo.com');
INSERT INTO users VALUES (3, 'joel', 'joel@gmail.com');

4.2 Модульный тест a UserDao со встроенной базой данных H2.

 
package com.mkyong.dao;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;

import com.mkyong.model.User;

public class UserDaoTest {

    private EmbeddedDatabase db;
    UserDao userDao;
    
    @Before
    public void setUp() {
        //db = new EmbeddedDatabaseBuilder().addDefaultScripts().build();
    	db = new EmbeddedDatabaseBuilder()
    		.setType(EmbeddedDatabaseType.H2)
    		.addScript("db/sql/create-db.sql")
    		.addScript("db/sql/insert-data.sql")
    		.build();
    }

    @Test
    public void testFindByname() {
    	NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(db);
    	UserDaoImpl userDao = new UserDaoImpl();
    	userDao.setNamedParameterJdbcTemplate(template);
    	
    	User user = userDao.findByName("mkyong");
  
    	Assert.assertNotNull(user);
    	Assert.assertEquals(1, user.getId().intValue());
    	Assert.assertEquals("mkyong", user.getName());
    	Assert.assertEquals("mkyong@gmail.com", user.getEmail());

    }

    @After
    public void tearDown() {
        db.shutdown();
    }

}

Сделано.

5. Просматривать содержимое встроенной базы данных?

Чтобы получить доступ или просмотреть встроенную базу данных, конкретный “инструмент управления базами данных” должен начинаться с того же контейнера Spring или JVM, который запустил встроенную базу данных. Кроме того, “инструмент управления базами данных” должен запускаться после встроенного компонента базы данных, лучше всего решить эту проблему, просмотрев журнал Spring, чтобы определить последовательность загрузки компонентов.

“Менеджер баз данных HSQL” – хороший инструмент, просто запустите его в том же контейнере Spring.

@PostConstruct
public void startDBManager() {
		
	//hsqldb
	//DatabaseManagerSwing.main(new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--user", "sa", "--password", "" });

	//derby
	//DatabaseManagerSwing.main(new String[] { "--url", "jdbc:derby:memory:testdb", "--user", "", "--password", "" });

	//h2
	//DatabaseManagerSwing.main(new String[] { "--url", "jdbc:h2:mem:testdb", "--user", "sa", "--password", "" });

}

Или Весенний XML с Метод Вызова Компонента


	
	
	
		
			--url
			jdbc:derby:memory:dataSource
			--user
			sa
			--password
			
		
	

Рисунок: Инструмент управления базами данных HSQL, доступ к встроенной базе данных.

6. Пул соединений

Пример подключения пула соединений dbcp.

	
	
		
		
	
	
	
		
	
	
	
		
		
		
		
	

Скачать Исходный Код

Рекомендации

  1. Поддержка встроенной базы данных JDBC
  2. Пример метода Spring, вызывающего фактор
  3. Spring – Просмотр содержимого встроенной базы данных HSQLDB

Оригинал: “https://mkyong.com/spring/spring-embedded-database-examples/”