Wenn Sie versuchen, eine Anwendung zu erstellen, die eine Verbindung zu einer Datenbank herstellt, ist dies im Hinblick auf die Erstellung der Umgebung häufig problematisch. Selbst wenn Sie den O / R-Mapper eine Weile ausprobieren, können Sie den DB-Server lokal installieren, eine Tabelle erstellen und Daten eingeben. In letzter Zeit scheint es möglich zu sein, eine Umgebung mithilfe von Containertechnologie wie Docker einfach zu erstellen. Wenn Sie jedoch Beispielanwendungen für Bildungszwecke usw. verteilen möchten, erstellen Sie die Umgebung so einfach wie möglich und führen Sie sie so schnell wie möglich aus. Die Schwelle wird etwas höher sein.
Wenn möglich, möchte ich eine Umgebung, die einfach in einer kleinen Kapazität zu verteilen ist und sofort ausgeführt werden kann ... ** Apache Derby ** scheint ein solches Problem zu lösen.
Apache Derby ist eine leichte RDB, die vollständig aus Java besteht. Es kann problemlos nur mit Dateizugriff oder Speicherzugriff ausgeführt werden und eignet sich sehr gut für Schulungen und die Verteilung von Beispielanwendungen.
Es ist ein Tool zur Unterstützung der RDB-Entwicklung und hat die folgenden zwei Funktionen.
Dieser Artikel befasst sich hauptsächlich mit dem zweiten Tool zur Unterstützung der DB-Verwaltung. Auf diese Weise können Sie eine Tabelle erstellen und Daten in einem Stapel eingeben. Außerdem werde ich einen kleinen Beispielcode als O / R-Mapper schreiben.
DBFlute hat verschiedene Funktionen und es gibt eine spezielle Engine, um sie auszuführen. Wenn Sie DBFlute zum ersten Mal verwenden, müssen Sie daher die Engine herunterladen und die Umgebung festlegen. Es ist jedoch ein Tool, mit dem Sie eine solche Umgebung einfach vorbereiten können. Es wird in einem ausführbaren JAR-Format verteilt und kann sofort in jeder Java-Umgebung ausgeführt werden (https://github.com/dbflute/dbflute-intro/releases).
Versuchen Sie nach der Vorbereitung der DB-Zugriffsumgebung, die folgenden drei Arten von O / R-Mappern als Testversion zu verwenden.
Dieser Artikel verwendet die folgenden Versionen.
Von hier Sie können es herunterladen. Es kann sofort ausgeführt werden, indem es in Eclipse usw. importiert wird, wobei eine DB-Verbindung möglich ist.
Da es eine große Sache ist, werde ich zunächst die Codierungsumgebung und die Ausführungsumgebung vorbereiten. Es muss nicht Eclipse sein, aber um Ihnen Ärger zu ersparen, werde ich mich hier auf Pleiades All in One verlassen. Laden Sie die Java Full Edition mit jkd für Windows oder Mac von http://mergedoc.osdn.jp/ herunter.
Holen Sie sich Dateien der Serie 10.14 aus dem Maven Repository.
Erstellen Sie ein Spring Boot-Projekt unter https://start.spring.io/. Fügen Sie zu diesem Zeitpunkt der Spring Boot-Abhängigkeit Folgendes hinzu.
Entpacken Sie die heruntergeladene Datei an einen geeigneten Ort (z. B. unter dem Arbeitsbereich, wenn Sie Eclipse verwenden). sample-dbaccess ├─ .gitignore ├─ HELP.md ├─ mvnw ├─ mvnw.cmd ├─ pom.xml ├─.mvn └─src
Holen Sie sich die JAR-Datei von Github. https://github.com/dbflute/dbflute-intro/releases
Platzieren Sie die heruntergeladene Datei direkt unter dem Spring-Projekt, das Sie zuvor entpackt haben. sample-dbaccess ├─ .gitignore ├─ dbflute-intro.jar ├─ HELP.md ├─ mvnw ├─ mvnw.cmd ├─ pom.xml ├─.mvn └─src
Führen Sie die Datei dbflute-intro.jar aus. Wenn der Java-Pfad später nicht übergeben wird, übergeben Sie ihn.
set PATH=%PATH%;C:\path\to\eclipse_java\11\bin
java -jar dbflute-intro.jar
Bei der Ausführung wird ein lokaler Server intern gestartet und im Browser geöffnet.
Geben Sie die erforderlichen Informationen ein und führen Sie die Ersteinrichtung durch.
Klicken Sie nach Abschluss der Eingabe auf dem Bildschirm auf die Schaltfläche "Erstellen", um sie auszuführen.
Die folgenden Punkte sollten bei der Eingabe beachtet werden.
Da DBFlute als Beispiel für einen O / R-Mapper verwendet wird, klicken Sie auf der rechten Seite des Bildschirms auf "O / R-Mapper-Einstellungen", um die Eingabe vorzubereiten, und geben Sie Folgendes ein.
Wenn Sie auf die Schaltfläche "Erstellen" klicken und die Ausführung erfolgreich ist, wird der folgende Bildschirm angezeigt. setupdone_dbflute_intro.png
Das Projekt enthält weitere Dateien. sample-dbaccess ├─ .gitignore ├─ dbflute-intro.jar ├─ dbflute_sample_dbaccess ├─ mydbflute ├─ HELP.md ├─ mvnw ├─ mvnw.cmd ├─ pom.xml ├─.mvn └─src
--mydbflute: DBFlute-Engine. Grundsätzlich bearbeiten Sie hier nicht. --dbflute _ * xxx *: Dieser Ordner enthält DBFlute-Einstellungen für jedes Projekt. "Xxx" ist der "Projektname", der bei der Ersteinrichtung eingegeben wurde.
Geben Sie die DDL wie die Anweisung create create in replace-schema.sql in den zuvor erstellten projektspezifischen DBFlute-Ordner "dbflute_ * xxx *" ein.
dbflute_sample_dbaccess/playsql/replace-schema.sql
create table DEPARTMENT (
DEPARTMENT_ID int not null,
DEPARTMENT_NAME varchar(100) not null,
constraint PK_DEPARTMENT primary key(DEPARTMENT_ID),
constraint FK_DEPARTMENT_1 FOREIGN KEY (DEPARTMENT_ID) references DEPARTMENT(DEPARTMENT_ID)
);
create table EMPLOYEE (
EMPLOYEE_ID int not null,
EMPLOYEE_NAME varchar(100) not null,
DEPARTMENT_ID int not null,
constraint PK_EMPLOYEE primary key(EMPLOYEE_ID),
constraint FK_EMPLOYEE_1 FOREIGN KEY (DEPARTMENT_ID) references DEPARTMENT(DEPARTMENT_ID)
);
Dieses Mal erstellen wir Registrierungsdaten im tsv-Format (Datenformat mit Tabulatoren als Trennzeichen). Bei der Registrierung von Daten gelten besondere Regeln, und Verzeichnis- und Dateinamen sollten besonders berücksichtigt werden. Weitere Informationen finden Sie unter "Datenregistrierung (TSV)".
dbflute_sample_dbaccess/playsql/data/ut/tsv/UTF-8/01-department.tsv
DEPARTMENT_ID DEPARTMENT_NAME
1 Abteilung 1
2 Abteilung 2
3 Abteilung 3
dbflute_sample_dbaccess/playsql/data/ut/tsv/UTF-8/02-employee.tsv
EMPLOYEE_ID EMPLOYEE_NAME DEPARTMENT_ID
11 Mitarbeiter 11 1
12 Mitarbeiter 12 1
13 Mitarbeiter 13 1
21 Mitarbeiter 21 2
22 Mitarbeiter 22 2
23 Mitarbeiter 23 2
31 Mitarbeiter 31 3
32 Mitarbeiter 32 3
33 Mitarbeiter 33 3
Wählen Sie im Bildschirm DBFlute Intro das erstellte Projekt aus und klicken Sie auf die Schaltfläche Schema ersetzen, um die Schemaerstellung und Dateneingabe auszuführen.
Alternativ können Sie die Datei manage.bat ausführen. Beachten Sie, dass der Java-Pfad vorhanden ist.
cd dbflute_sample_dbaccess
manage.bat 0
Die Anzahl der Datendateien für Derby hat direkt im Rahmen des Projekts zugenommen. Der hier erstellte Verzeichnisname wird durch die Verbindungs-URL angegeben, die bei der Ersteinrichtung von DBFlute Intro eingegeben wurde. sample-dbaccess ├─ .gitignore ├─ _derbydata ├─ dbflute-intro.jar ├─ dbflute_sample_dbaccess ├─ mydbflute ├─ HELP.md ├─ mvnw ├─ mvnw.cmd ├─ pom.xml ├─.mvn └─src
Die automatische Quellcodegenerierung für DBFlute konnte nicht über den DBFlute-Intro-Bildschirm ausgeführt werden. Führen Sie sie daher über die Befehlszeile aus. Führen Sie manage.bat mit dem Argument "2: regenerate" aus (oder führen Sie es ohne Argumente aus und geben Sie es später ein). Weitere Informationen finden Sie unter Aufgaben verwalten.
cd dbflute_sample_dbaccess
manage.bat 2
Bei Erfolg wird der automatisch generierte Code unter dem in 5. DBFlute Engine Initial Setup eingegebenen Paket ausgegeben.
Fügen Sie Einstellungen hinzu, um den O / R-Mapper für Spring zu verwenden.
Bearbeiten Sie zuerst die Datei pom.xml. Passen Sie die Java-Version an, um DBFlute-Abhängigkeiten hinzuzufügen.
pom.xml
<properties>
<java.version>1.11</java.version>
</properties>
<!--Unterlassung-->
<dependencies>
<!--Zu verschiedenen vorhandenen Abhängigkeiten hinzufügen-->
<dependency>
<groupId>org.dbflute</groupId>
<artifactId>dbflute-runtime</artifactId>
<version>1.1.9</version>
</dependency>
</dependencies>
src/main/resources/application.yml
#Allgemeine DB-Verbindungsinformationen
spring:
datasource:
url: jdbc:derby:_derbydata
username: APP
driverClassName: org.apache.derby.jdbc.EmbeddedDriver
#Einstellungen für My Batis. lower_Ordnen Sie den Namen der Fallspalte der Eigenschaft camelCase zu
mybatis:
configuration:
mapUnderscoreToCamelCase: true
Die Verbindungszeichenfolge für Derby lautet "jdbc: Dateipfad". Geben Sie hier für den Dateipfad den relativen Pfad aus dem Basisverzeichnis an, wenn Sie Java ausführen (wenn Sie aus Eclipse direkt unter dem Projekt ausführen) oder den absoluten Pfad.
Wählen Sie ein Projekt aus und versuchen Sie "Maven> Projekt aktualisieren".
Fügen Sie die folgende Datei hinzu und starten Sie Spring einfach über die Befehlszeile.
SampleDbaccessDBFluteApplication.java
@SpringBootApplication
public class SampleDbaccessDBFluteApplication {
@Autowired
EmployeeBhv employeeBhv;
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(SampleDbaccessDBFluteApplication.class, args)) {
SampleDbaccessDBFluteApplication app = ctx.getBean(SampleDbaccessDBFluteApplication.class);
app.run(args);
}
}
private void run(String... args) {
System.out.println("Starten Sie die Verarbeitung");
employeeBhv.selectList(cb -> {
cb.setupSelect_Department();
cb.query().setDepartmentId_Equal(2);
}).forEach(employee -> {
System.out.println(
String.format(
"employeeName: %s, departmentName: %s",
employee.getEmployeeName(),
employee.getDepartment().get().getDepartmentName()));
});
//App-Verarbeitung
System.out.println("Verarbeitung beenden");
}
}
SampleDbaccessMyBatisApplication.java
@SpringBootApplication
public class SampleDbaccessMyBatisApplication {
@Autowired
EmployeeMapper employeeMapper;
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(SampleDbaccessMyBatisApplication.class, args)) {
SampleDbaccessMyBatisApplication app = ctx.getBean(SampleDbaccessMyBatisApplication.class);
app.run(args);
}
}
private void run(String... args) {
System.out.println("Starten Sie die Verarbeitung");
employeeMapper.findEmployeeList(2).forEach(employee -> {
if (employee != null) {
System.out.println(
String.format(
"employeeName: %s, departmentName: %s",
employee.getEmployeeName(),
employee.getDepartmentName()));
} else {
System.out.println("employee is null");
}
});
//App-Verarbeitung
System.out.println("Verarbeitung beenden");
}
}
EmployeeMapper.java
@Mapper
public interface EmployeeMapper {
@Select({ "select emp.EMPLOYEE_NAME as EMPLOYEENAME, dept.DEPARTMENT_NAME",
"from EMPLOYEE emp",
"inner join DEPARTMENT dept on dept.DEPARTMENT_ID = emp.DEPARTMENT_ID",
"where emp.DEPARTMENT_ID = #{departmentId}", })
List<Employee> findEmployeeList(int departmentId);
}
Employee.java
public class Employee {
private String employeeName;
private String departmentName;
// getter, setter
}
SampleDbaccessJDBCApplication.java
@SpringBootApplication
public class SampleDbaccessJDBCApplication {
@Autowired
JdbcTemplate jdbcTemplate;
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(SampleDbaccessJDBCApplication.class, args)) {
SampleDbaccessJDBCApplication app = ctx.getBean(SampleDbaccessJDBCApplication.class);
app.run(args);
}
}
private void run(String... args) {
System.out.println("Starten Sie die Verarbeitung");
findEmployeeList(2).forEach(map -> {
System.out.println(
String.format(
"employeeName: %s, departmentName: %s",
map.get("EMPLOYEE_NAME"),
map.get("DEPARTMENT_NAME")));
});
System.out.println("Verarbeitung beenden");
}
private List<Map<String, Object>> findEmployeeList(int departmentId) {
return jdbcTemplate.queryForList(String.join("", new String[] {
"select emp.EMPLOYEE_NAME, dept.DEPARTMENT_NAME",
" from EMPLOYEE emp",
" inner join DEPARTMENT dept on dept.DEPARTMENT_ID = emp.DEPARTMENT_ID",
" where emp.DEPARTMENT_ID = ?"
}), departmentId);
}
}
Wenn eine Änderung der Tabellenerweiterung vorgenommen wird, ändern Sie die Datei replace-schema.sql und die Registrierungsdaten, führen Sie manage.bat aus, die vorhandene Tabelle wird gelöscht und neu generiert, und eine Migration in der Entwicklungsumgebung ist möglich. DBFlute bietet auch hervorragende Funktionen als Migrationstool, z. B. als Tool zum Vergleichen von Schemadifferenzen (Referenz: "20160521 Hinter der vollständigen Erneuerung des umfangreichen Videoverteilungsdienstes mit Java 8 .net / SuguruAkiho / 20160521-jjug-cccunext) ". Auch wenn Sie es nicht als O / R-Mapper einführen können, sollten Sie es als DB-Management-Support-Tool einführen.
Durch den Import in Eclipse usw. wird es in einer Form verteilt, die sofort ausgeführt werden kann. Die Gesamtmenge der Quellcode + Derby-Datenbank beträgt nur 287 KB (nach Komprimierung). Bitte probieren Sie das O / R-Mapper-Beispiel sofort aus und erleben Sie es.