2016-06-15 3 views
0

Я разрабатываю веб-приложение на основе Spring MVC framework. В этом приложении мне нужно сохранить некоторые данные в БД.Где определить источник данных для веб-приложения?

Я также намерен использовать данные весны JPA. Теперь, где лучше всего настроить Datasource? Я намерен развернуть это в Tomcat Apache.

Я думаю, у нас есть два места:

1) Определить в файле конфигурации пружинной, как показано ниже:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="org.h2.Driver"/> 
     <property name="url" value="jdbc:h2:tcp://localhost:9092/~/test"/> 
     <property name="username" value="sa"/> 
     <property name="password" value=""/> 
</bean> 

ИЛИ

2) Определить в Tomcat.

Правильно ли я понимаю? Есть ли разница в подходах в # 1 и # 2?

Если мы используем # 2, может ли Spring использовать инъекцию зависимости к источнику данных, когда это необходимо приложению? ИЛИ можно ли ссылаться на источник данных с помощью поиска JNDI в этом сценарии?

Я изучаю это самостоятельно, чтобы понять, как работают приложения реальной жизни; поэтому любая глубокая проницательность могла бы оказать большую помощь.

ответ

2

Я лично вернулся и перешел между установкой источника данных как JNDI и определением его в конфигурации.

я пришел к выводу, что я предпочитаю, определяющий источник данных в конфигурации для нескольких причин:

  • Использование JNDI мне нужно добавить MySQL-разъем баночку котом Lib. И мне не нравится менять рабочую среду, чтобы обслуживать конкретное приложение.
  • Выполнение конфигурации в веб-приложении, я могу использовать аннотацию для настройки, и нет XML
  • Я думаю, что это правильно сказать, что это приложение, которое необходимо знать, как подключиться к базе данных, не обязательно контейнер
+0

Спасибо за ваш ответ. Таким образом, это означает определить данные в файле конфигурации пружины, а затем выполнить DI. Если это так, будет ли этот подход достаточно стабильным, чтобы обрабатывать несколько запросов, объединение пулов, транзакцию ...? Разве контейнеры не предназначены для решения всех этих услуг? Я немного запутался здесь, любые другие детали, если вы можете поделиться, чтобы помочь прояснить сомнения, будут очень полезны. – CuriousMind

+1

@CuriousMind, если вы не используете DriverManagerDataSource, но вместо этого источник данных пула соединений, то да. Например, http://stackoverflow.com/questions/23172643/how-to-set-up-datasource-with-spring-for-hikaricp. То, что вы говорите, было бы правдой, если бы вы использовали контейнер, предоставляющий менеджер транзакций JTA, который Spring должен будет использовать. Но Томкат этого не делает. Все, что он предоставляет, это пул соединений. И вы можете внедрить пул соединений в webapp вместо этого. –

+0

@JBNizet: Спасибо за ваши комментарии. Я пытаюсь понять, как все работает в реальном мире. Я до сих пор не понимаю этого. Как Datasource может быть стабильным, обрабатывать несколько транзакций (локальный/глобальный). Если вы можете немного доработать, это будет очень полезно. Я также ищу в сети, однако, если я получу правильное руководство, это сэкономит много времени (и я уже потерял много времени ...). Спасибо за ваше время. – CuriousMind

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