Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
DAO oriented database mapping framework for Java
翻訳待ち
開発ツールJava · KotlinGitHub @domaframework自分でインストール所有者未確認
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Doma is a database access framework for Java with several notable strengths:
If you use Doma in your project or enterprise and would like to support ongoing development, please consider becoming a backer.
The latest major version of Doma supports Java 17 and above. If you are using Java 8, please use Doma 2.
See also Major versions.
We are testing against the following databases:
| Database | version | status |
|---|---|---|
| H2 Database | 2.5.252 | stable |
| MySQL v5 | 5.7 | stable |
| MySQL v8 | 8.0.36 | stable |
| Oracle Database Free | 23.4 | stable |
| PostgreSQL | 12.20 | stable |
| SQLite | 3.54.1.0 | stable |
| SQL Server | 2019 | stable |
This code uses a type-safe Criteria API to fetch employees from a specific department while establishing associations between the related entities:
var queryDsl = new QueryDsl(config);
var e = new Employee_();
var d = new Department_();
var employees = queryDsl
.from(e)
.innerJoin(d, on -> on.eq(e.departmentId, d.departmentId))
.where(c -> c.eq(d.departmentName, "SALES"))
.associate(e, d, (employee, department) -> {
employee.setDepartment(department);
department.getEmployeeList().add(employee);
})
.fetch();
See Unified Criteria API for more information.
This code uses an SQL template to fetch employees from a specific department while establishing associations between the related entities:
@Dao
public interface EmployeeDao {
@Sql(
"""
select
/*%expand*/*
from
EMPLOYEE e
inner join
DEPARTMENT d
on e.departmentId = d.departmentId
where
/*%if departmentName != null*/
d.DEPARTMENT_NAME = /*departmentName*/'test'
/*%end*/
""")
@Select(aggregateStrategy = EmployeeStrategy.class)
List<Employee> selectByDepartmentName(String departmentName);
@AggregateStrategy(root = Employee.class, tableAlias = "e")
interface EmployeeStrategy {
@AssociationLinker(propertyPath = "department", tableAlias = "d")
BiFunction<Employee, Department, Employee> department = (e, d) -> {
e.setDepartment(d);
d.getEmployees().add(e);
return e;
};
}
}
See SQL templates and Aggregate strategies for more information.
Try Getting started and simple-examples.
Doma checks SQL templates, bind variables and DAO signatures at compile time,
so many mistakes in code written by AI coding agents fail the build with a DOMA error
that the agent can read and fix, instead of failing later at runtime.
For Java projects:
plugins {
id("org.domaframework.doma.compile") version "4.0.4"
}
dependencies {
implementation("org.seasar.doma:doma-core:3.15.0")
annotationProcessor("org.seasar.doma:doma-processor:3.15.0")
}
For Kotlin projects, use doma-kotlin instead of doma-core and use kapt in place of annotationProcessor:
plugins {
id("org.domaframework.doma.compile") version "4.0.4"
}
dependencies {
implementation("org.seasar.doma:doma-kotlin:3.15.0")
kapt("org.seasar.doma:doma-processor:3.15.0")
}
We recommend using Gradle, but if you want to use Maven, see below.
For Java projects:
This is the beginning of the README. Read the rest at the original. Read the full README ↗