From c1fcfbb096916a0d78fbe6d1307ba81bc07bba31 Mon Sep 17 00:00:00 2001 From: Toshihiro Nakamura Date: Sun, 1 Sep 2024 08:55:19 +0900 Subject: [PATCH] Use Doma 3 --- build.gradle.kts | 6 +- gradle.properties | 2 +- .../java/boilerplate/java17/dao/AppDao.java | 3 +- java-8/.gitignore | 12 --- java-8/build.gradle.kts | 19 ----- .../main/java/boilerplate/java8/DbConfig.java | 48 ------------ .../src/main/java/boilerplate/java8/Main.java | 44 ----------- .../java/boilerplate/java8/dao/AppDao.java | 14 ---- .../boilerplate/java8/dao/EmployeeDao.java | 28 ------- .../boilerplate/java8/entity/Employee.java | 29 ------- .../java8/repository/EmployeeRepository.java | 43 ----------- .../java8/dao/AppDao/create.script | 11 --- .../boilerplate/java8/dao/AppDao/drop.script | 2 - .../java8/dao/EmployeeDao/selectAll.sql | 1 - .../java8/dao/EmployeeDao/selectById.sql | 6 -- java-8/src/main/resources/logback.xml | 14 ---- .../boilerplate/java8/TestEnvironment.java | 76 ------------------- .../java8/dao/EmployeeDaoTest.java | 67 ---------------- .../repository/EmployeeRepositoryTest.java | 67 ---------------- settings.gradle.kts | 1 - 20 files changed, 6 insertions(+), 487 deletions(-) delete mode 100644 java-8/.gitignore delete mode 100644 java-8/build.gradle.kts delete mode 100644 java-8/src/main/java/boilerplate/java8/DbConfig.java delete mode 100644 java-8/src/main/java/boilerplate/java8/Main.java delete mode 100644 java-8/src/main/java/boilerplate/java8/dao/AppDao.java delete mode 100644 java-8/src/main/java/boilerplate/java8/dao/EmployeeDao.java delete mode 100644 java-8/src/main/java/boilerplate/java8/entity/Employee.java delete mode 100644 java-8/src/main/java/boilerplate/java8/repository/EmployeeRepository.java delete mode 100644 java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/create.script delete mode 100644 java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/drop.script delete mode 100644 java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectAll.sql delete mode 100644 java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectById.sql delete mode 100644 java-8/src/main/resources/logback.xml delete mode 100644 java-8/src/test/java/boilerplate/java8/TestEnvironment.java delete mode 100644 java-8/src/test/java/boilerplate/java8/dao/EmployeeDaoTest.java delete mode 100644 java-8/src/test/java/boilerplate/java8/repository/EmployeeRepositoryTest.java diff --git a/build.gradle.kts b/build.gradle.kts index 302ea0d..8dbb67c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -39,8 +39,8 @@ subprojects { annotationProcessor("org.seasar.doma:doma-processor:${domaVersion}") implementation("org.seasar.doma:doma-core:${domaVersion}") implementation("org.seasar.doma:doma-slf4j:${domaVersion}") - runtimeOnly("ch.qos.logback:logback-classic:1.2.11") - runtimeOnly("com.h2database:h2:2.2.224") + runtimeOnly("ch.qos.logback:logback-classic:1.5.7") + runtimeOnly("com.h2database:h2:2.3.232") testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.0") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.0") } @@ -69,7 +69,7 @@ subprojects { spotless { java { - googleJavaFormat("1.19.2") + googleJavaFormat("1.23.0") } } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 44036c4..d48894a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -domaVersion=2.62.1 +domaVersion=3.0.0 diff --git a/java-17/src/main/java/boilerplate/java17/dao/AppDao.java b/java-17/src/main/java/boilerplate/java17/dao/AppDao.java index 3b4022b..5f989b2 100644 --- a/java-17/src/main/java/boilerplate/java17/dao/AppDao.java +++ b/java-17/src/main/java/boilerplate/java17/dao/AppDao.java @@ -24,7 +24,8 @@ name varchar(255) not null, @Script void create(); - @Sql(""" + @Sql( + """ drop sequence employee_seq; drop table employee; """) diff --git a/java-8/.gitignore b/java-8/.gitignore deleted file mode 100644 index 739b2ad..0000000 --- a/java-8/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -.classpath -.factorypath -.project -.settings -/.apt_generated -/bin -/build -.gradle -.idea -out -/.apt_generated_tests/ -.sdkmanrc diff --git a/java-8/build.gradle.kts b/java-8/build.gradle.kts deleted file mode 100644 index c2d18d2..0000000 --- a/java-8/build.gradle.kts +++ /dev/null @@ -1,19 +0,0 @@ -plugins { - application -} - -application { - mainClass.set("boilerplate.java8.Main") -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(8)) - } -} - -eclipse { - jdt { - javaRuntimeName = "JavaSE-1.8" - } -} diff --git a/java-8/src/main/java/boilerplate/java8/DbConfig.java b/java-8/src/main/java/boilerplate/java8/DbConfig.java deleted file mode 100644 index 46680b6..0000000 --- a/java-8/src/main/java/boilerplate/java8/DbConfig.java +++ /dev/null @@ -1,48 +0,0 @@ -package boilerplate.java8; - -import java.util.Objects; -import javax.sql.DataSource; -import org.seasar.doma.jdbc.Config; -import org.seasar.doma.jdbc.JdbcLogger; -import org.seasar.doma.jdbc.dialect.Dialect; -import org.seasar.doma.jdbc.tx.LocalTransactionDataSource; -import org.seasar.doma.jdbc.tx.TransactionManager; - -public class DbConfig implements Config { - - private final Dialect dialect; - private final LocalTransactionDataSource dataSource; - private final JdbcLogger jdbcLogger; - private final TransactionManager transactionManager; - - public DbConfig( - Dialect dialect, - LocalTransactionDataSource dataSource, - JdbcLogger jdbcLogger, - TransactionManager transactionManager) { - this.dialect = Objects.requireNonNull(dialect); - this.dataSource = Objects.requireNonNull(dataSource); - this.jdbcLogger = Objects.requireNonNull(jdbcLogger); - this.transactionManager = Objects.requireNonNull(transactionManager); - } - - @Override - public Dialect getDialect() { - return dialect; - } - - @Override - public DataSource getDataSource() { - return dataSource; - } - - @Override - public JdbcLogger getJdbcLogger() { - return jdbcLogger; - } - - @Override - public TransactionManager getTransactionManager() { - return transactionManager; - } -} diff --git a/java-8/src/main/java/boilerplate/java8/Main.java b/java-8/src/main/java/boilerplate/java8/Main.java deleted file mode 100644 index 0e8d2dd..0000000 --- a/java-8/src/main/java/boilerplate/java8/Main.java +++ /dev/null @@ -1,44 +0,0 @@ -package boilerplate.java8; - -import boilerplate.java8.dao.AppDao; -import boilerplate.java8.dao.AppDaoImpl; -import boilerplate.java8.entity.Employee; -import boilerplate.java8.repository.EmployeeRepository; -import org.seasar.doma.jdbc.Config; -import org.seasar.doma.jdbc.JdbcLogger; -import org.seasar.doma.jdbc.dialect.Dialect; -import org.seasar.doma.jdbc.dialect.H2Dialect; -import org.seasar.doma.jdbc.tx.LocalTransactionDataSource; -import org.seasar.doma.jdbc.tx.LocalTransactionManager; -import org.seasar.doma.jdbc.tx.TransactionManager; -import org.seasar.doma.slf4j.Slf4jJdbcLogger; - -public class Main { - - public static void main(String[] args) { - Config config = createConfig(); - TransactionManager tm = config.getTransactionManager(); - - // setup database - AppDao appDao = new AppDaoImpl(config); - tm.required(appDao::create); - - // read and update - tm.required( - () -> { - EmployeeRepository repository = new EmployeeRepository(config); - Employee employee = repository.selectById(1); - employee.age += 1; - repository.update(employee); - }); - } - - private static Config createConfig() { - Dialect dialect = new H2Dialect(); - LocalTransactionDataSource dataSource = - new LocalTransactionDataSource("jdbc:h2:mem:tutorial;DB_CLOSE_DELAY=-1", "sa", null); - JdbcLogger jdbcLogger = new Slf4jJdbcLogger(); - TransactionManager transactionManager = new LocalTransactionManager(dataSource, jdbcLogger); - return new DbConfig(dialect, dataSource, jdbcLogger, transactionManager); - } -} diff --git a/java-8/src/main/java/boilerplate/java8/dao/AppDao.java b/java-8/src/main/java/boilerplate/java8/dao/AppDao.java deleted file mode 100644 index 78cbaf4..0000000 --- a/java-8/src/main/java/boilerplate/java8/dao/AppDao.java +++ /dev/null @@ -1,14 +0,0 @@ -package boilerplate.java8.dao; - -import org.seasar.doma.Dao; -import org.seasar.doma.Script; - -@Dao -public interface AppDao { - - @Script - void create(); - - @Script - void drop(); -} diff --git a/java-8/src/main/java/boilerplate/java8/dao/EmployeeDao.java b/java-8/src/main/java/boilerplate/java8/dao/EmployeeDao.java deleted file mode 100644 index d25b075..0000000 --- a/java-8/src/main/java/boilerplate/java8/dao/EmployeeDao.java +++ /dev/null @@ -1,28 +0,0 @@ -package boilerplate.java8.dao; - -import boilerplate.java8.entity.Employee; -import java.util.List; -import org.seasar.doma.Dao; -import org.seasar.doma.Delete; -import org.seasar.doma.Insert; -import org.seasar.doma.Select; -import org.seasar.doma.Update; - -@Dao -public interface EmployeeDao { - - @Select - List selectAll(); - - @Select - Employee selectById(Integer id); - - @Insert - int insert(Employee employee); - - @Update - int update(Employee employee); - - @Delete - int delete(Employee employee); -} diff --git a/java-8/src/main/java/boilerplate/java8/entity/Employee.java b/java-8/src/main/java/boilerplate/java8/entity/Employee.java deleted file mode 100644 index 262a039..0000000 --- a/java-8/src/main/java/boilerplate/java8/entity/Employee.java +++ /dev/null @@ -1,29 +0,0 @@ -package boilerplate.java8.entity; - -import org.seasar.doma.Entity; -import org.seasar.doma.GeneratedValue; -import org.seasar.doma.GenerationType; -import org.seasar.doma.Id; -import org.seasar.doma.Metamodel; -import org.seasar.doma.SequenceGenerator; -import org.seasar.doma.Version; - -@Entity(metamodel = @Metamodel) -public class Employee { - - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - @SequenceGenerator(sequence = "EMPLOYEE_SEQ") - public Integer id; - - public String name; - - public Integer age; - - @Version public Integer version; - - @Override - public String toString() { - return "Employee [id=" + id + ", name=" + name + ", age=" + age + ", version=" + version + "]"; - } -} diff --git a/java-8/src/main/java/boilerplate/java8/repository/EmployeeRepository.java b/java-8/src/main/java/boilerplate/java8/repository/EmployeeRepository.java deleted file mode 100644 index 69a9425..0000000 --- a/java-8/src/main/java/boilerplate/java8/repository/EmployeeRepository.java +++ /dev/null @@ -1,43 +0,0 @@ -package boilerplate.java8.repository; - -import boilerplate.java8.entity.Employee; -import boilerplate.java8.entity.Employee_; -import java.util.List; -import java.util.Objects; -import org.seasar.doma.jdbc.Config; -import org.seasar.doma.jdbc.criteria.Entityql; - -public class EmployeeRepository { - - private final Entityql entityql; - - public EmployeeRepository(Config config) { - Objects.requireNonNull(config); - this.entityql = new Entityql(config); - } - - public List selectAll() { - Employee_ e = new Employee_(); - return entityql.from(e).fetch(); - } - - public Employee selectById(Integer id) { - Employee_ e = new Employee_(); - return entityql.from(e).where(c -> c.eq(e.id, id)).fetchOne(); - } - - public void insert(Employee employee) { - Employee_ e = new Employee_(); - entityql.insert(e, employee).execute(); - } - - public void update(Employee employee) { - Employee_ e = new Employee_(); - entityql.update(e, employee).execute(); - } - - public void delete(Employee employee) { - Employee_ e = new Employee_(); - entityql.delete(e, employee).execute(); - } -} diff --git a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/create.script b/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/create.script deleted file mode 100644 index a55d215..0000000 --- a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/create.script +++ /dev/null @@ -1,11 +0,0 @@ -create sequence employee_seq start with 100 increment by 1; - -create table employee ( - id integer not null primary key, - name varchar(255) not null, - age integer not null, - version integer not null); - -insert into employee values(1,'ALLEN',30, 0); -insert into employee values(2,'WARD',32, 0); -insert into employee values(3,'JONES',38, 0); diff --git a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/drop.script b/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/drop.script deleted file mode 100644 index fcaed65..0000000 --- a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/AppDao/drop.script +++ /dev/null @@ -1,2 +0,0 @@ -drop sequence employee_seq; -drop table employee; diff --git a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectAll.sql b/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectAll.sql deleted file mode 100644 index 36aad44..0000000 --- a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectAll.sql +++ /dev/null @@ -1 +0,0 @@ -select /*%expand*/* from employee order by id diff --git a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectById.sql b/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectById.sql deleted file mode 100644 index 7267b2c..0000000 --- a/java-8/src/main/resources/META-INF/boilerplate/java8/dao/EmployeeDao/selectById.sql +++ /dev/null @@ -1,6 +0,0 @@ -select - /*%expand*/* -from - employee -where - id = /* id */0 diff --git a/java-8/src/main/resources/logback.xml b/java-8/src/main/resources/logback.xml deleted file mode 100644 index b9f60d3..0000000 --- a/java-8/src/main/resources/logback.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - \ No newline at end of file diff --git a/java-8/src/test/java/boilerplate/java8/TestEnvironment.java b/java-8/src/test/java/boilerplate/java8/TestEnvironment.java deleted file mode 100644 index 0c0d222..0000000 --- a/java-8/src/test/java/boilerplate/java8/TestEnvironment.java +++ /dev/null @@ -1,76 +0,0 @@ -package boilerplate.java8; - -import boilerplate.java8.dao.AppDao; -import boilerplate.java8.dao.AppDaoImpl; -import org.junit.jupiter.api.extension.AfterAllCallback; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.ParameterContext; -import org.junit.jupiter.api.extension.ParameterResolutionException; -import org.junit.jupiter.api.extension.ParameterResolver; -import org.seasar.doma.jdbc.Config; -import org.seasar.doma.jdbc.JdbcLogger; -import org.seasar.doma.jdbc.dialect.Dialect; -import org.seasar.doma.jdbc.dialect.H2Dialect; -import org.seasar.doma.jdbc.tx.LocalTransactionDataSource; -import org.seasar.doma.jdbc.tx.LocalTransactionManager; -import org.seasar.doma.slf4j.Slf4jJdbcLogger; - -public class TestEnvironment - implements BeforeAllCallback, - AfterAllCallback, - BeforeEachCallback, - AfterEachCallback, - ParameterResolver { - - private final LocalTransactionManager transactionManager; - private final Config config; - private final AppDao appDao; - - public TestEnvironment() { - Dialect dialect = new H2Dialect(); - LocalTransactionDataSource dataSource = - new LocalTransactionDataSource("jdbc:h2:mem:tutorial;DB_CLOSE_DELAY=-1", "sa", null); - JdbcLogger jdbcLogger = new Slf4jJdbcLogger(); - transactionManager = new LocalTransactionManager(dataSource, jdbcLogger); - config = new DbConfig(dialect, dataSource, jdbcLogger, transactionManager); - appDao = new AppDaoImpl(config); - } - - @Override - public void beforeAll(ExtensionContext context) { - transactionManager.required(appDao::create); - } - - @Override - public void afterAll(ExtensionContext context) { - transactionManager.required(appDao::drop); - } - - @Override - public void beforeEach(ExtensionContext context) { - transactionManager.getTransaction().begin(); - } - - @Override - public void afterEach(ExtensionContext context) { - transactionManager.getTransaction().rollback(); - } - - @Override - public boolean supportsParameter( - ParameterContext parameterContext, ExtensionContext extensionContext) - throws ParameterResolutionException { - Class type = parameterContext.getParameter().getType(); - return type == Config.class; - } - - @Override - public Object resolveParameter( - ParameterContext parameterContext, ExtensionContext extensionContext) - throws ParameterResolutionException { - return config; - } -} diff --git a/java-8/src/test/java/boilerplate/java8/dao/EmployeeDaoTest.java b/java-8/src/test/java/boilerplate/java8/dao/EmployeeDaoTest.java deleted file mode 100644 index 50a671b..0000000 --- a/java-8/src/test/java/boilerplate/java8/dao/EmployeeDaoTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package boilerplate.java8.dao; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import boilerplate.java8.TestEnvironment; -import boilerplate.java8.entity.Employee; -import java.util.List; -import java.util.Objects; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.seasar.doma.jdbc.Config; - -@ExtendWith(TestEnvironment.class) -public class EmployeeDaoTest { - - private final EmployeeDao dao; - - EmployeeDaoTest(Config config) { - Objects.requireNonNull(config); - this.dao = new EmployeeDaoImpl(config); - } - - @Test - void selectAll() { - List employees = dao.selectAll(); - assertEquals(3, employees.size()); - } - - @Test - public void selectById() { - Employee employee = dao.selectById(1); - assertNotNull(employee); - assertEquals("ALLEN", employee.name); - assertEquals(30, employee.age); - assertEquals(0, employee.version); - } - - @Test - void insert() { - Employee employee = new Employee(); - employee.name = "ABC"; - employee.age = 25; - dao.insert(employee); - Employee employee2 = dao.selectById(employee.id); - assertNotNull(employee2); - assertNotNull(employee2.id); - assertNotNull(employee2.version); - } - - @Test - void update() { - Employee employee = dao.selectById(1); - employee.name = "ABC"; - dao.update(employee); - Employee employee2 = dao.selectById(1); - assertEquals("ABC", employee2.name); - } - - @Test - void delete() { - Employee employee = dao.selectById(1); - dao.delete(employee); - List employees = dao.selectAll(); - assertEquals(2, employees.size()); - } -} diff --git a/java-8/src/test/java/boilerplate/java8/repository/EmployeeRepositoryTest.java b/java-8/src/test/java/boilerplate/java8/repository/EmployeeRepositoryTest.java deleted file mode 100644 index 91eb171..0000000 --- a/java-8/src/test/java/boilerplate/java8/repository/EmployeeRepositoryTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package boilerplate.java8.repository; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import boilerplate.java8.TestEnvironment; -import boilerplate.java8.entity.Employee; -import java.util.List; -import java.util.Objects; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.seasar.doma.jdbc.Config; - -@ExtendWith(TestEnvironment.class) -class EmployeeRepositoryTest { - - private final EmployeeRepository repository; - - EmployeeRepositoryTest(Config config) { - Objects.requireNonNull(config); - this.repository = new EmployeeRepository(config); - } - - @Test - void selectAll() { - List employees = repository.selectAll(); - assertEquals(3, employees.size()); - } - - @Test - void selectById() { - Employee employee = repository.selectById(1); - assertNotNull(employee); - assertEquals("ALLEN", employee.name); - assertEquals(30, employee.age); - assertEquals(0, employee.version); - } - - @Test - void insert() { - Employee employee = new Employee(); - employee.name = "ABC"; - employee.age = 25; - repository.insert(employee); - Employee employee2 = repository.selectById(employee.id); - assertNotNull(employee2); - assertNotNull(employee2.id); - assertNotNull(employee2.version); - } - - @Test - void update() { - Employee employee = repository.selectById(1); - employee.name = "ABC"; - repository.update(employee); - Employee employee2 = repository.selectById(1); - assertEquals("ABC", employee2.name); - } - - @Test - void delete() { - Employee employee = repository.selectById(1); - repository.delete(employee); - List employees = repository.selectAll(); - assertEquals(2, employees.size()); - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 729c169..2237467 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,2 @@ rootProject.name = "getting-started" -include("java-8") include("java-17")