已经有很多很多的数据访问层了,每种或多或少都有自己的特点。
由于个人习惯,对这个功能有以下要求:
1.必须能写原生SQL
对于那种能生成sql的库不是很喜欢,尤其是比较复杂的sql,每次还要打印出sql检查一下生成的对不对。
另外最好不要像mybatis那种要把sql写在xml文件里,看起来太乱。
2.对于单表简单的CRUD,可以自动生成sql
也就是说我可以不写sql的情况下,可以自动生成sql,毕竟为了简单更新一个表,还要写更新sql也是很繁琐的。
3.必须要有orm功能
没人喜欢把抽出的数据,手动转换为entity,这个必须能够自动转换,要支持隐式匹配。
根据这些要求,最终选定了doma2。
但是doma2并没有完全符合上面的要求,比如select的话,是无法自动生成sql的,如果需要的话还要自己扩展。
另外doma2也不支持1:n的entity mapping,作者的解释是那样反而会增加使用难度。
doma2,还有一个比较特殊的地方,是使用了注释处理,就是在编译期会自动生成实现类的源程序,并且貌似orm也没有用到反射机制,效率更高一些。缺点当然是会影响一些编译速度,另外会生成大量的源代码。
和mybatis一样,doma2也提供了最基本的entity和dao文件的生成工具doma-gen。
doma2可以用在任何框架里,当然spring boot也不例外,另外已经有人写了starter库,集成起来更加的方便。
下面这个配置是一个集成doma2基本spring boot的gradle文件
buildscript { ext { springBootVersion = '1.5.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' jar { baseName = 'test' version = '0.0.1-SNAPSHOT' } sourceCompatibility = 1.8 repositories { mavenCentral() } configurations { domaGenRuntime } dependencies { compile('org.springframework.boot:spring-boot-starter-jdbc') compile('org.springframework.boot:spring-boot-starter-thymeleaf') compile('org.springframework.boot:spring-boot-starter-validation') compile('org.springframework.boot:spring-boot-starter-web') compile('org.seasar.doma.boot:doma-spring-boot-starter:1.1.0') runtime('org.springframework.boot:spring-boot-devtools') runtime('mysql:mysql-connector-java') testCompile('org.springframework.boot:spring-boot-starter-test') domaGenRuntime 'org.seasar.doma:doma-gen:2.15.0' domaGenRuntime 'mysql:mysql-connector-java:5.1.39' } task gen << { ant.taskdef(resource: 'domagentask.properties', classpath: configurations.domaGenRuntime.asPath) ant.gen(url: 'jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8&useSSL=false', user: 'username', password: 'password', templatePrimaryDir: 'templates') { entityConfig(packageName: 'jp.co.abc.entity',entitySuffix:'Entity',useListener: false) daoConfig(packageName: 'jp.co.abc.dao', overwrite:true) sqlConfig() } }
由于doma-gen没有考虑spring的集成,为了能让生成的dao文件会被spring boot扫描,需要添加注解@ConfigAutowireable,可以在doma的库里复制一个默认的dao.ftl文件,放到相应的目录下,例如上面的配置是放到了项目根目录下的templates目录下
然后在相应处添加下面两行
import org.seasar.doma.boot.ConfigAutowireable; @ConfigAutowireable
当然,如果你不想对自动生成的java类进行侵入式注解,可以自定义一个配置类,用正则方式,扫描生成的类。
@Component @ComponentScan(basePackages="jp.co.abc.dao", includeFilters=@Filter(type=FilterType.REGEX,pattern = "jp.co.abc.dao.*DaoImpl")) public class DomaConfig { }
相关推荐
在Spring Boot中使用Doma 2的模板。有关说明,请参见以下网页。 在Spring Boot中使用Doma 2
doma-spring-boot Spring Boot支持属性文件配置doma.dialect = # Dialect of database used by Doma. (STANDARD, SQLITE, DB2, MSSQL, MYSQL, POSTGRES, ORACLE, H2, HSQL)doma.sql-file-repository = # Type of ...
Springboot + Doma2示例 SpringBootでDoma2をつかった例 建筑学 Java11的 ( ) 参考
基于Spring Boot和WxJava实现的微信企业号企业微信放置演示-源码.zip
克隆git clone https://github.com/domaframework/spring-boot-jpetstore.git跑cd spring-boot-jpetstore./gradlew bootRun使用权http://localhost:8080/编辑IntelliJ IDEA 将此示例导入为Gradle项目。...
spring-boot-thymeleaf-doma 本项目使用 弹簧靴, Thymeleaf 模板引擎, 多玛 ORM。 导入eclipse(Spring Tool Suite) 克隆此存储库并将其作为 maven 项目导入到 Eclipse。 介绍DOMA ORM 为了在 Eclipse 中使用 ...
带有Gradle的Doma2样本先决条件这需要MySQL与“ jdbc:mysql:// localhost:3306 / doma2”“ root /(nothing)”连接。跑步./gradlew build
新版本的Doma 2是在开发的。 维修政策 我们仅接受针对Doma 1的错误修复。我们将在Doma 2中包含新功能。 文献资料 Google群组 聊天室 用Maven编译 要使用Maven进行构建,请将下面列出的依赖项添加到pom.xml文件中: ...
Doma 2是Java 8+的数据库访问框架。 Doma具有多种优势: 使用在编译时验证并生成源代码。 提供类型安全的Criteria API。 支持Kotlin。 使用称为“双向SQL”SQL模板。 不依赖其他库。 例子 类型安全标准API 用...
springboot-doma2-kotlin-示例
合泰BH67F2752v110 串口驱动
STM32F429移植FreeRTOS
资源分类:Python库 所属语言:Python 资源全名:idds-doma-0.3.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
doma是django的一个简单的文档管理应用程序。 它提供了必要的模型和视图,并准备将其包含在您的项目中。 详细的文档位于“ docs”目录中。 安装 使用pip安装django-doma : $ pip install django-doma 快速开始 将...
STM32F031定时器、串口、AD驱动
日本开源javaweb框架seasar,采用sql以独立文件存在的形式,使得sql易于编写和管理。
文件Doce 是一个用 Guice 注入 Doma 相关对象的库。
3.domačanaloga(TKK) 纳沃迪拉: Zaženi'1_generiraj_DSA'。 Zaženi'2_generiraj_blok'。 Poželjiponavljaj 2.可拉克。 Git: :
使用Dropwizard,AngularJS,Guice和Doma的全栈ToDo应用程序。 该项目被配置为Gradle多项目。 发展要求 JDK 8(或更高版本) Lombok Node.js和NPM 要运行应用程序,仅需要JRE(JDK)8。 构建设置 ./gradlew ...
XOOM设计师 VLINGO XOOM设计器可指导您使用DOMA,DDD和其他方法将低代码快速交付给全代码响应式,事件驱动型微服务和应用程序。 文件: : 介绍对于许多开发人员,当他们尝试开发应用程序和服务,或正确实现DOMA和...