H2 — это реляционная база данных с открытым исходным кодом и чистой реализацией Java, предоставленная Томасом Мюллером.
предисловие
Эта статья поможет вам использоватьSpring Boot
,Spring Data JPA
интегрированныйH2
База данных памяти. больше оH2
Ссылка на данные:Woohoo. Также 2database.com/HTML/tutor i…
Подготовить
- JDK 1.8 или новее
- Maven 3 или выше
стек технологий
- Spring Data JPA
- Spring Boot
Структура каталогов
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jpa-example</artifactId>
<groupId>cn.merryyou</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>h2-webconsole</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
класс сущности
User
@Entity
@Table(name = "t_user")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String url;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", url='" + url + '\'' +
'}';
}
}
-
@Table
Декларируется, что этот объект сопоставляется с таблицей базы данных, через которую можно указать имя таблицы (talbe), каталог (Catalog) и схему для сущности. Эта аннотация не требуется, если система не использует значение по умолчанию (краткое имя класса объекта). -
@Id
Объявите это свойство как первичный ключ. Значение свойства может быть создано самим должен, но Hibernate рекомендует, чтобы оно было создано Hibernate -
@GeneratedValue
Задает стратегию генерации первичного ключа.- ТАБЛИЦА: используйте таблицу для сохранения значения идентификатора
- ИДЕНТИФИКАЦИЯ: identitycolumn
- ПОСЛЕДОВАТЕЛЬНОСТЬ :последовательность
- АВТО: Используйте три вышеуказанных параметра в зависимости от базы данных.
-
@Column
Объявите отношение сопоставления между этим свойством и полем базы данных.
AddressRepository
public interface UserRepository extends JpaRepository<User, Integer> {
}
Spring Data JPA
содержит некоторые встроенныеRepository
, который реализует некоторые часто используемые методы:findone
,findall
,save
Ждать.
application.yml
spring:
datasource:
url: jdbc:h2:mem:h2test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
platform: h2
username: sa
password:
driverClassName: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update
properties:
hibernate:
show_sql: true
use_sql_comments: true
format_sql: true
h2:
console:
enabled: true
path: /console
settings:
trace: false
web-allow-others: false
logging:
level: debug
Конфигурация подключения
существуетapplication.yml
Настроить подключение к базе данных в файле
-
spring.datasource.url=jdbc:h2:mem:h2test
, настроить адрес подключения базы данных h2 -
spring.datasource.driver-class-name=org.h2.Driver
, настроить драйвер JDBC -
spring.datasource.username=sa
, настроить имя пользователя базы данных -
spring.datasource.password=
, настроить пароль базы данных
После того, как вы выполните два шага настройки зависимости и соединения, вы можете использовать его в программеh2
. Spring сделает это за вас автоматическиDataSource
инъекция.
Конфигурация инициализации данных
Если вам нужно инициализировать базу данных при запуске программы, вapplication.properties
Конфигурация доступа к базе данных в файле
-
spring.datasource.schema=classpath:db/schema.sql
, после такой настройки при каждом запуске программы программа будет запускатьсяresources/db/schema.sql
файл для работы со структурой базы данных. -
spring.datasource.data=classpath:db/data.sql
, После такой настройки каждый раз при запуске программы программа будет запускатьсяresources/db/data.sql
файлы, операции с данными в базе данных.
Эта конфигурация очень подходит для среды разработки, я буду строить структуру базы данныхsql
ставитьresources/db/schema.sql
,данныеsql
ставитьresources/db/data.sql
середина. Таким образом, я могу получать новую базу данных каждый раз, когда запускаю программу. Это избавляет меня от необходимости каждый раз изменять содержимое данных в целях тестирования.
Конфигурация веб-консоли h2
h2 web consloe
это база данныхGUI
Управляйте приложениями просто иphpMyAdmin
похожий. Когда программа запустится, она запустится автоматическиh2 web consloe
. Конечно, вы также можете настроить следующим образом.
-
spring.h2.console.settings.web-allow-others=true
, после этой конфигурацииh2 web consloe
можно получить удаленный доступ. В противном случае доступ к нему возможен только локально. -
spring.h2.console.path=/h2-console
, с этой конфигурацией вы можете пройтиYOUR_URL/h2-console
доступh2 web consloe
.YOUR_URL
доступ вашей программыURl
. -
spring.h2.console.enabled=true
, сделайте эту конфигурацию, программа запустится при ее запускеh2 web consloe
. Конечно это по умолчанию, если вы не хотите запускать программу при запускеh2 web consloe
, затем установите для него значение false.
UserRepositoryTest
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
public void saveTest() throws Exception {
User user = new User();
user.setName("郑龙飞");
user.setUrl("http://merryyou.cn");
User result = userRepository.save(user);
log.info(result.toString());
Assert.assertNotNull(user.getId());
}
@Test
public void findOneTest() throws Exception{
User user = userRepository.findOne(1l);
log.info(user.toString());
Assert.assertNotNull(user);
Assert.assertTrue(1l==user.getId());
}
}
h2 web consloe
загрузка кода
Скачать с моего гитхаба,GitHub.com/Longfeizhen…
🙂 🙂 🙂 Подписывайтесь на апплет WeChatкурс архитектора JavaСкучно по дороге на работу и обратно? Вы все еще читаете романы и новости? Не знаете, как улучшить свои навыки? Да ладно, вот нужные вам статьи по архитектуре Java, инженеры Java читают 1.5w+, чего вы ждете?