Альтернативы спящему режиму
Что было бы лучшим решением для таких программистов, как http://vimeo.com/28885655
Люди, которые создали видео, верят
- Во многих случаях спящий режим переполняется
- Базовый sql - хороший язык, который сдерживает абстракты далеко.
Я слышал о некоторых других реализациях ORM, таких как
Я хотел бы услышать, как они сравниваются и каковы преимущества/недостатки каждого из них.
Ответы
Ответ 1
Здесь вы можете найти обширный список решений Java ORM и персистентности. Не все из следующего подхода Hibernate/JPAs, некоторые из них довольно просты по дизайну.
Конечно, есть решения, не перечисленные на этом сайте, т.е. Spring JDBC с шаблонами и т.д.. И это мой личный выбор для проектов, которым требуется быстрый, простой сбор JDBC-доступа и уже использующий Spring.
В общем, для меня, по крайней мере, это немного рано, чтобы сказать, что Hibernate плох, и он вырос до большого. Он хорошо служит, но подходит для многих ботинок. Мое личное мнение заключается в том, что он останется таким, какой он есть, но решения NoSQL, вероятно, родит новую породу решений для отображения данных Java, например Spring Data. Необходимо создать простой подход к взаимодействию с данными приложения, но я не думаю, что есть консенсус относительно того, как туда добраться... пока.
Ответ 2
Ведущий делает хороший пример того, что некоторые структуры слишком сложны. Огромное количество библиотек ORM, по-видимому, является показателем того, что хорошее решение неуловимо.
Github, bitbucket, source forge имеют сотни проектов ORM. Wikipedia также имеет хороший список.
Я придумал sormula как легкую альтернативу сложным фреймворкам, таким как JPA. См. сайт sormula для списка функций и примеров.
Он также содержит пакет, который реализует активный шаблон записи для тех, кто любит этот подход, но не требуется.
Ответ 3
Если вы хотите контролировать использованный SQL и оставаться близким к JDBC вообще, вас может заинтересовать MyBatis, который позволит вам писать свои собственные запросы и предоставляет инфраструктуру для "автоматического" сопоставления ResultSets для POJO на основе метаданных на основе XML или аннотаций.
Выбор будет выглядеть так в XML:
<select id="selectUsers" parameterType="int" resultType="my.User">
select id, username, password
from users
where id = #{id}
</select>
Это будет отображаться для пользователя следующим образом:
<resultMap id="userResultMap" type="my.User">
<id property="id" column="id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>
Со свойствами Bean свойств в POJO my.User