我创建了用于存储我的应用程序数据库数据的卷 - docker volume create dbvolume.
然后我使用 Oracle XE 11g 数据库映像和数据量启动了我的 docker 容器。
docker run --name=OracleXE --shm-size=1g -p 1521:1521 -p 8080:8080 -e ORACLE_PWD=weblogic1 -v dbvolume:/opt/oracle/oradata oracle/database:11.2.0.2-xe
在数据库中存储了一些条目。停止并删除容器,然后再次启动它,但数据库中没有数据持久化。
如何在对应用程序的后续请求中获取持久数据。
我在应用程序初始化时将数据加载到内存数据库中时遇到问题.我已经创建schema.sql文件和data.sql含有表结构和初始数据文件.
schema.sql:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(64) NOT NULL,
password VARCHAR(64)
);
Run Code Online (Sandbox Code Playgroud)
和data.sql:
INSERT INTO users (id, username, password) VALUES
(1, 'usr1', 'bigSecret'),
(2, 'usr2', 'topSecret');
Run Code Online (Sandbox Code Playgroud)
我正在使用JpaRepository数据层:
public interface UserRepository extends JpaRepository<User, Long> {
}
Run Code Online (Sandbox Code Playgroud)
我还配置了application.properties
spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
Run Code Online (Sandbox Code Playgroud)
但是当我打电话时
List<User> users = userRepository.findAll();
Run Code Online (Sandbox Code Playgroud)
用户实体
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
private String …Run Code Online (Sandbox Code Playgroud)