2015-12-08 2 views
1

Я знаю, что могу использовать Ebean или EbeanServer для доступа к базе данных. EbeanServer имеет больше API-методов, чем Ebean. Многие методы на Ebean, такие как Ebean.find(Class) и т. Д., На самом деле являются просто удобным способом вызова методов на «ESIServer» по умолчанию/primary.Я должен использовать Ebean или EbeanServer в каком случае?

Мои вопросы:

  • Могу ли я получить объект EbeanServer по телефону Ebean.getServer(String name) использовать все интерфейсы, предоставляемые EbeanServer?
  • В каком случае следует использовать Ebean над EbeanServer (или наоборот)?
  • EbeanServer подходит для создания EbeanServer программно?
  • Ebean подходит для создания EbeanServer по файлу конфигурации?

В игре 2.4, ebean.properties не требуется, конфигурацию ebean можно поместить в application.conf, я думаю, что я должен использовать Ebean в игре фреймворк 2.4, правильно?

Спасибо за ваш совет.

EbeanServer api doc

Ebean api doc

ответ

0

Если вы хотите использовать Ebean тогда ваша модель должна расширить Ebean class. В этом случае:

public class Task extends com.avaje.ebean.Model {} 

При создании статического искатель тоже ваш могут запросить с классом:

List<Task> tasks = Task.find.all(); 

Вы читали: https://www.playframework.com/documentation/2.4.3/JavaEbean

Специально эта часть: https://www.playframework.com/documentation/2.4.3/JavaEbean#Configuring-the-runtime-library

4

Во-первых, один из способов взглянуть на это состоит в том, что Ebean имеет регистр/карту экземпляров EbeanServer, и один из этих экземпляров можно определить как def сервер ault.

Однако нет НИКАКОГО ТРЕБОВАНИЯ, чтобы использовать Ebean или зарегистрировать экземпляр EbeanServer. То есть экземпляры EbeanServer могут быть созданы и НЕ зарегистрированы с Ebean, и таким образом вам никогда не понадобится/использовать/не хотеть Ebean (более чистый стиль DI).

Указано по-разному - EbeanServer является реальной/фактической реализацией, и вы ДОЛЖНЫ иметь экземпляр EbeanServer. Вы можете ОПЦИОНАЛЬНО зарегистрировать экземпляр EbeanServer с Ebean (большинство людей это делает), и если вы зарегистрируете экземпляр EbeanServer, тогда он будет доступен для использования синглэтом Ebean, а методы на Ebean - быстрые ярлыки.

Вы можете использовать оба варианта, и это разумно в сценарии внедрения зависимостей (см. http://ebean-orm.github.io/docs/setup/guice). Таким образом, вы создаете экземпляр EbeanServer с помощью поставщика Guice или фабрики фабрики Spring. И этот экземпляр зарегистрирован в синглете Ebean. Таким образом, вы можете оба экземпляра @Inject EbeanServer использовать DI (Guice/Spring) и в то же время получить тот же экземпляр EbeanServer через Ebean.getDefaultServer() (и таким образом также использовать активную запись Model/Finder/Ebean ala) ,

Так на вопросы:

Q: EbeanServer подходит для создания EbeanServer программно?

EbeanServerFactory используется для создания экземпляров EbeanServer. См. http://ebean-orm.github.io/docs/setup/serverconfig

Вопрос: Можно ли получить объект EbeanServer, вызвав Ebean.getServer (имя строки), чтобы использовать все apis, предоставленные EbeanServer?

Да, предполагается, что экземпляр EbeanServer зарегистрирован (что необязательно). Обратитесь к ServerConfig.setRegister (boolean) и ServerConfig.setDefaultServer (boolean).

В: В каком случае следует использовать Ebean над EbeanServer (или наоборот)?

Во всех случаях вы технически используете экземпляр EbeanServer, так что на самом деле это вопрос стиля. Вы можете необязательно доступ к экземпляру EbeanServer через Ebean одноточечного когда экземпляр регистрируется в качестве сервера по умолчанию и т.д.

В то, что я бы назвал «традиционной инъекции зависимостей» стиль вы бы не использовать Ebean вообще. Экземпляры EbeanServer впрыскивают в вас услуг с помощью Guice/Spring и т.д.

В то, что я бы назвал «активная запись» стиль вам нравится простота и относительно чистый код, который является результатом использования модели/Finders/Ebean. Я обсуждаю этот стиль на http://ebean-orm.github.io/docs/setup/activerecord

Таким образом, выбор между использованием Ebean или EbeanServer - вопрос стиля. Я бы описал их как «традиционные DI» и «активные записи».

Теперь я также должен указать, что в случае DI вы можете использовать оба стиля, если хотите. Вы можете оба вставить экземпляр EbeanServer и получить доступ к нему через Ebean, чтобы включить использование Model/Finders и активный стиль записи. Это разумно в случае DI, где вам нужна программная конфигурация экземпляра EbeanServer, но вы по-прежнему хотите использовать активный стиль записи через Model и Finders.

ИСПЫТАНИЯ:

Тестирование также входит в это. Проект avaje-ebeanorm-mocker специально предоставляет механизмы для издевательства экземпляров EbeanServer, когда они используются через Ebean/Model/Finder, поэтому при использовании avaje-ebeanorm-mocker, который дает тот же уровень вероятности, который вы могли бы получить при использовании традиционной инъекции EbeanServer.

Q: Ebean подходит для создания EbeanServer по файлу конфигурации?

Ну да и нет. Для меня вы начинаете с того, что: «Используем ли мы DI/Guice/Spring», и вообще, если вы тогда, у вас есть фабрика поставщика/весенний завод для создания экземпляра EbeanServer (потому что хорошо иметь программную конфигурацию с более продвинутыми функциями EbeanServer - например, вводить в реализацию CurrentUserProvider). Затем вы дополнительно выбираете, хотите ли вы зарегистрировать экземпляр EbeanServer с синглэтом Ebean и тем самым дополнительно использовать Model/Finder/Ebean.

Что касается конфигурационного файла, то я считаю, что даже в программной конфигурации полезно также включить использование конфигурации внешних свойств, чтобы вы сначала перенесли serverConfig.loadFromProperties (свойства), а затем после этого программно задали вещи в serverConfig. Это дает вам возможность (даже если вы не используете его изначально) для настройки внешней среды по свойствам/файлу.

Если вы не используете инъекцию зависимостей вообще (небольшое простое приложение и т. Д.), То Ebean и ebean.properties - довольно быстрый простой механизм для использования.

Надеюсь, это поможет с некоторыми из ваших вопросов.

Cheers, Rob.

Смежные вопросы