当前位置:  开发笔记 > 运维 > 正文

我应该在什么情况下使用Ebean或EbeanServer?

如何解决《我应该在什么情况下使用Ebean或EbeanServer?》经验,为你挑选了1个好方法。

我知道我可以使用EbeanEbeanServer访问数据库.EbeanServer有比Ebean更多的API方法,Ebean上的许多方法Ebean.find(Class)等实际上只是在'default/primary'EbeanServer上调用方法的一种方便方法.

我的问题:

我可以通过调用Ebean.getServer(String name)使用EbeanServer提供的所有apis来获取EbeanServer对象吗?

在什么情况下我应该使用Ebean而不是EbeanServer(反之亦然)?

EbeanServer是否适合以编程方式创建EbeanServer?

Ebean适合通过配置文件创建EbeanServer吗?

在Play 2.4中,不需要ebean.properties,ebean配置可以放在application.conf中,我想我应该在Play framwork 2.4中使用Ebean,对吧?

谢谢你的建议.

EbeanServer api doc

Ebean api doc



1> Rob Bygrave..:

首先,查看它的一种方法是Ebean拥有EbeanServer实例的寄存器/映射,其中一个实例可以定义为默认服务器.

但是,没有要求使用Ebean或注册EbeanServer实例.也就是说,可以创建EbeanServer实例并且不向Ebean注册,这样你就不需要/使用/想要Ebean(更纯粹的DI风格).

换句话说 - EbeanServer是真实/实际的实现,你必须有一个EbeanServer实例.您可以选择使用Ebean注册EbeanServer实例(大多数人这样做),如果您注册了EbeanServer实例,那么它将可供Ebean单例使用,Ebean上的方法是快速快捷方式.

您可以使用两者,这在依赖注入方案中是合理的(请参阅http://ebean-orm.github.io/docs/setup/guice).因此,您使用Guice提供程序或Spring工厂bean创建EbeanServer实例,并将该实例注册到Ebean单例.通过这种方式,您可以使用DI(Guice/Spring)同时获取@Inject EbeanServer实例,同时通过Ebean.getDefaultServer()获取完全相同的EbeanServer实例(并且这样也使用Model/Finder/Ebean ala活动记录) .

所以你的问题:

问:EbeanServer是否适合以编程方式创建EbeanServer?

EbeanServerFactory用于创建EbeanServer实例.请参阅http://ebean-orm.github.io/docs/setup/serverconfig

问:我可以通过调用Ebean.getServer(String name)来获取EbeanServer对象,以使用EbeanServer提供的所有apis吗?

是假设已注册EbeanServer实例(这是可选的).请参阅ServerConfig.setRegister(boolean)和ServerConfig.setDefaultServer(boolean).

问:在什么情况下我应该使用Ebean而不是EbeanServer(反之亦然)?

在所有情况下,您在技术上都在使用EbeanServer实例,所以这真的是一个样式问题.当实例注册为默认服务器等时,您可以选择通过Ebean单例访问EbeanServer实例.

在我所谓的"传统依赖注入"风格中,你根本就不会使用Ebean.使用Guice/Spring等将EbeanServer实例注入到您的服务中.

在我称之为"活动记录"的样式中,您喜欢使用Model/Finders/Ebean产生的简单和相对干净的代码.我在http://ebean-orm.github.io/docs/setup/activerecord讨论这种风格

总之,使用Ebean或EbeanServer之间的选择是一个风格问题.我将这些描述为"传统DI"和"活跃记录"风格.

现在我还要指出,在DI情况下,如果需要,可以使用两种样式.您可以@Inject EbeanServer实例并通过Ebean访问它以启用模型/ Finder和活动记录样式.这在DI情况下是合理的,在这种情况下,您需要对EbeanServer实例进行编程配置,但您仍希望能够通过Model和Finders使用活动记录样式.

测试:

测试也涉及到这一点.avaje-ebeanorm-mocker项目专门提供了在通过Ebean/Model/Finder使用时模拟EbeanServer实例的机制,因此在使用avaje-ebeanorm-mocker时提供了与使用传统注入时相同的可测试性水平EbeanServer.

问:Ebean适合通过配置文件创建EbeanServer吗?

是的,没有.对我来说,你首先说"我们正在使用DI/Guice/Spring",一般来说,如果你有一个guice提供者/ spring工厂bean来创建EbeanServer实例(因为使用更高级的EbeanServer功能进行编程配置是很好的) - 例如,注入CurrentUserProvider实现).然后,您还要选择是否要使用Ebean单例注册EbeanServer实例,并以此方式另外能够使用Model/Finder/Ebean.

在配置文件方面,我的想法是,即使在编程配置中,也可以使用外部属性配置,因此首先使用serverConfig.loadFromProperties(属性),然后以编程方式将事物设置为serverConfig.这使您能够(即使您最初不使用它)通过属性/文件进行外部环境特定配置.

如果您根本不使用依赖注入(小型简单应用程序等),那么Ebean和ebean.properties是一种非常快速的简单机制.

希望这有助于你的一些问题.

干杯,罗布.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有