java – 为什么每个实体都应该有单独的MyBatis映射器?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么每个实体都应该有单独的MyBatis映射器?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1823字,纯文字阅读大概需要3分钟。
内容图文
![java – 为什么每个实体都应该有单独的MyBatis映射器?](/upload/InfoBanner/zyjiaocheng/782/ed8a92d0031d4e9e9d742823977052b8.jpg)
我正在开发一个使用MyBatis注释和映射器接口的小应用程序.在我在MyBatis上看到的所有示例中,包括官方网站,都为每个实体创建了一个单独的映射器类.我有两个实体,Foo和Bar,以及两个包含这些实体的DB.所以目前我的项目结构的一部分看起来像这样:
model
├── bar
│?? ├── Bar.java
│?? ├── DB1BarMapper.java
│?? └── DB2BarMapper.java
└── foo
├── Foo.java
├── DB1FooMapper.java
└── DB2FooMapper.java
在我的项目中,Foo和Bar对象的处理方式大致相同,但数据库在逻辑上具有不同的功能.我正在考虑改变我的项目设计,我会按照数据库对mappers进行分组,然后结构可以像这样简化:
model_new
├── Bar.java
├── Foo.java
├── DB1Mapper.java
└── DB2Mapper.java
这里,DB映射器将包含访问Foo和Bar实体(并返回相应的POJO)的方法.
据我所知,这将是有效的编程方式,因为映射器被添加到数据库配置中,并且因为映射器本身不引用特定对象而不是从方法返回它们.
我试图研究这是否是一种可接受的做法,但我没有找到任何关于为什么这是自定义的问题或文章,MyBatis网站也没有解决这个问题.我最好的猜测是它与DAO模式有关,但我认为在我的情况下以这种方式使用它没有任何优势.
所以我的问题是,为什么每个实体都有一个单独的MyBatis映射器,并且每个数据库连接都有一个映射器是否可接受,如果对我来说,数据库比实体更重要?
解决方法:
为多个实体设置一个映射器没有任何问题. Mappers是一种具有DAO层逻辑的模块.并且应用于将其他代码拆分为模块的相同标准应用于映射器:即,一个映射器中的事物应该具有高内聚性,并且不同映射器中的事物应该具有低耦合.
基本上,映射器的结构反映了应用程序的结构.与大多数情况一样,每个模块都有一个映射器,具有广泛的模块定义.它并不一定意味着每个类的映射器.如果通过数据库类型分离应用程序中的代码是有意义的,则它可以是每个数据库类型的映射器.
每个实体类的原因映射器很受欢迎,因为每个类的映射器是分割映射器的一种自然方式,因为实体类是应用程序的自然模块.但情况并非总是如此,并不总是最方便的分割方式.在许多情况下,每个aggregate具有映射器是有意义的,该映射器是可以被视为一个单元/模块的域对象的集群的一个映射器.
内容总结
以上是互联网集市为您收集整理的java – 为什么每个实体都应该有单独的MyBatis映射器?全部内容,希望文章能够帮你解决java – 为什么每个实体都应该有单独的MyBatis映射器?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。