2009-09-08 6 views
2

Я пишу модуль, который будет использоваться в разных приложениях (2-ярусные и 3-ярусные). Мне нужно подключиться к БД. поэтому, я сделал модуль требует java.sql.Connection объект в качестве параметра при использовании с двухуровневым приложением. там нет проблем.Использование JDBC-соединения из уровня представления в двухуровневых и трехуровневых приложениях

проблема, с которой я столкнулся, заключается в том, что в случае применения трехуровневого приложения модуль будет использоваться из уровня представления, и я не хочу предоставлять модулю объект Connection для доступа к БД.

Что вы предлагаете использовать для решения этой проблемы?

ответ

0

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

Я бы рекомендовал прочитать о шаблоне MVC и посмотреть на Spring. Идиома Spring покажет вам правильный способ сложить приложение. Это также поможет в ваших проблемах с зависимостями.

UPDATE:

Вы должны прочитать больше о Spring.

Использование общей идиомы Spring для веб-интерфейса> service-> persistence поможет вам правильно сложить ваше приложение.

Весна имеет инъекцию зависимости, которая поможет вам управлять своими зависимостями.

Классы среды Spring помогут вам в приобретении и управлении такими вещами, как соединения с базой данных.

Я утверждаю, что для вас нет смысла переписывать то, что кто-то еще написал лучше. Я предлагаю вам начать с просмотра Spring MVC Step By Step, чтобы узнать, согласны ли вы.

Если вы предпочитаете не учиться Spring, я бы посоветовал вам хотя бы посмотреть на классы, которые они написали для соединений DataSource и JDBC. Возможно, вы можете улучшить то, как вы делаете, глядя на них.

+0

Спасибо, я сейчас читаю шаблон MVC, но я не понимаю, как это поможет мне в этом конкретном случае. он, похоже, помогает разделить обязанности в моем приложении и помогает разделить вещи. , но я до сих пор не могу понять, как решить мою проблему. – Attilah

+0

Читайте о Весне. Это уже решило вашу проблему. – duffymo

+0

@ duffymo, Не могли бы вы уточнить, пожалуйста? – Attilah

1

Весной вы определяете контекст приложения, который в большинстве случаев является только XML-файлом и содержит ряд объектов приложения, называемых beans.

<bean id="myDbConnection" scope="prototype" class="..."> 
    ... 
</bean> 

<bean id="myPersistanceManager" class="my.application.PersistanceManager"> 
    <property name="connection" ref="myDbConnection" /> 
</bean> 

myDbConnection - это компонент, определенный в том же контексте приложения и содержащий все сведения о подключении.

Затем в вашем слое презентации вы просто используете applicationContext.getBean («myPersistance»), и вы получите экземпляр вашего менеджера стойкости, инициализированного всеми зависимостями. И вы можете иметь разные контексты приложений для разных вариантов развертывания.