2009-04-09 2 views
2

Каков самый простой способ использования сохранения базы данных в Java? Я знаю, многие рамки существуют в Интернете, но было бы интересно узнать, как создать слой персистентности самостоятельно и его шаблоны проектирования. Когда начать? Книги, веб-сайты, инструкции, примеры кода и т. Д.Сохранение Java в базе данных

ответ

0

Я нашел this book, что особенно полезно. This - тоже хороший.

Создав сам, я согласен - это очень весело, и много работы тоже. Все зависит от ваших целей.

1

На самом нижнем уровне вам нужно поговорить с базой данных, чтобы вы использовали JDBC. Поскольку вы создали свою собственную инфраструктуру, у вас есть свой собственный после этого. Посмотрите JPA и Hibernate, чтобы получить некоторые идеи, а затем экспериментировать.

2

Простой способ - это использовать только jdbc. Java имеет хороший учебник here.

Что касается уровней абстракции. Hibernate, по моему опыту, довольно стандартный и заслуживает изучения. Программирование собственного может быть забавным упражнением, но я не могу придумать, почему не использовать спящий режим.

+0

Я обнаружил, что использование сопоставления SQL, такого как iBatis поверх JDBC, намного проще, чем использование raw JDBC. Это должно быть справедливо для ORM, таких как Hibernate и JPA. Во всех этих подходах структура заботится о многих деталях для вас. К ним относятся такие оптимизации, как объединение пулов и предотвращение атак SQL-инъекций. –

+1

Для чего это стоит, мне очень нравится jDBI (http://jdbi.org/); он обрабатывает все неприятные части JDBC, позволяет привязывать данные, если вы хотите, но старается держаться подальше от пути. – StaxMan

3

это может быть интересно узнать, как развивать настойчивость и слой самого

NOOOO! Не будь глупым.

Использовать JDO или JPA. Первый - универсальный API-интерфейс для сохранения объектов, другой - только для RDBMS-es.

Они имеют различные реализации, например. для JPA существует EclipseLink (ранее Oracle TopLink), который также является эталонной реализацией JPA 2 и Hibernate, которая также очень популярна.

Вы действительно, действительно не хотите создавать свои собственные. Если вы хотите работать в этой области, тогда вместо этого вносите вклад в один из существующих проектов.

1

В дополнение к предыдущим ответам - проверьте шаблон DAO (Data Access Object) - он отражает то, как должен быть организован код для доступа к данным.

0

Если вы ищете обучения практику затем попытаться получить копию Craig Larman-х Applying UML and Patterns.

alt text http://graysmatter.codivation.com/content/binary/applyingumlandpatterns.jpg

Там Larman представляет главу о легком персистенции базы данных дизайна картографа. В отличие от Hibernate, основанного на ненавязчивой модели устойчивости, он представляет собой навязчивую структуру, в которой объекты домена должны быть расширены из PersistentObject. Мы также должны писать классы сопоставления для каждого устойчивого класса домена. Это своего рода шаблон ActiveRecord без какой-либо концепции когенерации.

0

Этот book (Шаблоны архитектуры приложений предприятия) кажется очень хорошим с первого взгляда.Я изучаю его, и шаблоны проектирования для разработки механизма персистентности очень полные. Он рассказывает, почему, когда и как их использовать.

3

Другая полезная библиотека jDBI. Он использует преимущества дженериков, чтобы иметь хорошие возможности привязки + сопоставление, все еще находясь достаточно близко к JDBC. Предполагается, что iBATIS имеет схожие характеристики, хотя и не очень легкий, и он был намного длиннее.

4

Начните с изучения функций и исходного кода уже существующих. Вот пара (просто чтобы назвать несколько в алфавитном порядке)

  • DbUtils: Очень простая обертка для JDBC. Возможно, начните искать здесь идеи!
  • EBean: Подобно самой JPA
  • Hibernate: де-факто стандарт, который в значительной степени под влиянием спецификации JPA Java-
  • iciql: дружественную развилки JaQu
  • JaQu: собственный домен конкретного языка H2 для запросов к базам данных
  • JDBI: Предоставляет доступ к реляционным базам данных в идиоматической Java
  • JDO: Объекты данных Java Apache
  • jOOQ: Моделирование SQL как конкретного домена непосредственно в Java
  • MyBatis: «самая популярная в мире структура отображения SQL». [Так в оригинале] (ранее Ibatis)
  • QueryDSL: SQL-подобный свободно API со многими различными движками (не только SQL)
  • Quaere: Подобно QueryDSL

И скоро, вы можете редактировать этот ответ и добавьте свои собственные рамки!