![]() |
Модераторы: LSD, AntonSaburov Страницы: (29) « Первая ... 7 8 [9] 10 11 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
попробовал однажды - теперь отвращение к другим способам. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Есть ведь еще Java Persistence API. Я с ним сейчас пытаюсь заморачиваться. Как я понимаю, он во многом базируется (или тупо повторяет) Hibernate.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Говоришь, Hibernate? Ну что ж, хороший выбор.
Попробуй сначала разобраться самостоятельно. Для двух простых таблиц, думаю, сделать самому вполне реально. Ну а если что - проси помощи клуба. В принципе тут грамотных людей хватает. Особенно хорошо будет, если tux согласится помочь. Но сначала выложи зип. Добавлено через 2 минуты и 3 секунды Я его тоже посмотрел. Но для него, как я понял, нужен полновесный JEE сервер. А мы все-таки делаем обычный вебсайт. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 7 Всего: 54 |
Не обязательно, возможны (и вроде есть) легковесные реализации. -------------------- ![]() ![]() |
|||
|
||||
Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
У JPA (Java Persistence API) есть все предпосылки стать той технологией работы с данными, которая вот уже много лет напрашивалась к реализации и которую так долго ждали разработчики. Думаю, уже в самом скором времени производители ORM-средств адаптируют свои продукты таким образом, чтобы они соответствовали JPA. А когда вслед за этим JPA включат в состав Java SE, на всей планете наступит большое щястье.
Но до этого светлого времени еще нужно дожить. Поэтому давайте пока все-таки придерживаться проверенных технологий. -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
Хочу заметить, что JPA вполне можно использовать в Java SE. Читать здесь Для этого необходимы пакеты:
Hibernate Core, он скорее всего уже есть Hibernate Annotations Hibernate EntityManager Также, если нужно, могу запостить книжку Java Persistence with Hibernate Это сообщение отредактировал(а) fixxer - 29.6.2007, 10:28 -------------------- ![]() |
|||
|
||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Подвожу вторую жЫрную черту
Присоединённый файл ( Кол-во скачиваний: 119 ) ![]() -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
Entry_N3 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
JSR 220 Java Persistence Architecture – в Java SE 7 планируется включить разработанный группой экспертов по EJB persistence API, значительно облегчающий работу с реляционными БД из объектно-ориентированного кода. |
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Не нужен никакой контейнер. Как правильно заметил fixxer, JPA можно легко использовать в stand-alone программах. JPA - это спецификация описывающая единый интерфейс для ORM фрейвёрков. JPA описывает интерфейсы, которые должен реализовать ORM фрейвёрк, что бы его можно было использовать в качестве провайдера данных. Т.е. если раньше цепочка доступа к данным шла как: Business Logic -- ORM Framework -- Database. то теперь она будет выглядеть так: Business Logic -- JPA -- ORM Framework -- Database. т.е. Business Logic для доступа к данным должна знать только интерфейс JPA, а не конкретного ORM Framework-а. Что позволяет этот самый ORM Framework легко сменить на другой, не трогая уровень бизнес логики. В частном случае могут быть такие цепочки: Business Logic -- JPA -- Hibernate -- Database. Business Logic -- JPA -- TopLink -- Database. Вот эти библиотеки как раз и реализуют интерфейсы JPA для Hibernate, что позволяет подключить Hibernate в качестве провайдера к JPA. TopLink так же имеет аналогичные реализации. Так что, ИМХО, JPA - это будущее. (И фиг его почему его ассоциируют с EJB3.0... наверное из-за аннотаций) |
|||
|
||||
diablero |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Тогда вопрос ![]() Не видет файл user.hbm.xml.
Хоть так.
Причем если у Configuration вызывать configure передавая в качестве параметра путь к hibernate.cfg.xml а не файл, то тоже получаем file not found Это сообщение отредактировал(а) diablero - 2.7.2007, 00:17 -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Давай разбираться как конфигурируется Hibernate. Всю свою конфигурацию он может читать либо из файловой системы либо из ресурсов. С файловой системой, я думаю, все понятно, а вот про ресурсы тебе наверное нужно почитать. Грубо говоря, поиск ресурсов выполняется так же, как и поиск классов. То есть, если ты пытаешься прочитать ресурс "/conf/user.hbm.xml", то это означает, что у тебя в CLASSPATH должен быть каталог conf, в котором лежит файл user.hbm.xml.
Если посмотреть в javadoc от Hibernate, то там видно, что метод addResource добавляет файл именно из ресурсов. Простейший способ решить проблему - положить файл /conf/user.hbm.xml туда, где у тебя лежат скомпилированные классы (либо если используешь, например, Eclipse, то вместе с исходниками, он сам все сделает). Если все же все-таки хочется грузить конфигурацию из файловой системы, то используй метод addFile() вместо addResource(). Еще раз замечу, что при использовании последнего путь нужно задавать относительно корня CLASSPATH. С использованием методов configure(String resource) и configure(File configFile) та же самая ситуация - в первом случае конфигурация грузится из ресурса, во втором - из файла, потому и такой несовпадающий результат. Еще пара замечаний. Использование метода addResource() и наличие в hibernate.cfg.xml тэга mapping дублируют друг друга, поэтому лучше оставить что-то одно. Вместо метода getCurrentSession() лучше использовать openSession(). Первый метод предназначен для использования в серверах приложений и используется JTA для управления транзакциями. Обычно это нужно при работе нескольких приложений с одним источником данных. Метод openSession() явно открывает сессию, а не пытается получить уже существующую. Хотя в текущих версиях Hibernate в методе getCurrentSession() явно вызывается openSession() если не удалось сконфигурироавть JTA (в версиях 3.0 и ниже он просто не работал бы), лучше явно сказать, что мы открываем сессию. |
|||
|
||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Какая-то не понятная ошибка закралась. Никак не могу User'а добавить в базу.
[code=xml] <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="ru.selfexpression"> <class name="User" table="user"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" type="java.lang.String"> <column name="name" not-null="true" sql-type="VARCHAR" /> </property> <property name="password" type="java.lang.String"> <column name="password" not-null="true" sql-type="VARCHAR" /> </property> <property name="group" type="java.lang.String"> <column name="group" not-null="true" sql-type="VARCHAR" /> </property> <property name="avatar" type="java.lang.String"> <column name="avatar" not-null="false" sql-type="VARCHAR" /> </property> <property name="birthday" type="java.util.Date"> <column name="birthday" not-null="false" sql-type="DATE" /> </property> <property name="gender" type="java.lang.String"> <column name="gender" not-null="false" sql-type="VARCHAR" /> </property> <property name="city" type="java.lang.String"> <column name="city" not-null="false" sql-type="VARCHAR" /> </property> <property name="country" type="java.lan Это сообщение отредактировал(а) diablero - 2.7.2007, 13:49 |
|||
|
||||
tux |
|
||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Сразу замечание по базе данных. В именах полей следует избегать зарезервированных слов. В частности, 'group' используется в конструкциях group by. Похоже ошибка связана с этим. Во-первых, в hibernate.cfg.xml нужно указать диалект SQL, с которым предполагается работать. Делается это добавлением еще одной проперти в hibernate.cfg.xml:
Если это не поможет, поменяй в базе данных имена полей 'password' и 'group' на что-то другое. Однако, исправив эту ошибку, вероятно получим следующую. Вот посмотри на запрос, который сгенерировал Hibernate:
В поле id вставляется значение null, хотя это видимо первичный ключ и таких значений иметь не может. У тебя используется генератор native, который зависит от используемого диалекта. Явное указание диалекта позволит Hibernate определить что именно использовать. Не помню что используется в MySQL, если это будет тип sequence, то для его использования нужно будет предпринять специальные действия. Если Hibernate будет выдавать ошибки, пока можно будет поменять генератор на простейший - increment. |
||||
|
|||||
diablero |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Изменил имена полей в базе данных и генератор на increment.
Все заработало. -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |