320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
|||||||||||
1 | |||||||||||
Как и где правильно открывать метод02.09.2012, 11:44. Показов 1938. Ответов 11
Метки нет (Все метки)
Всем привет. Интересует такой вопрос. Есть такой код:
0
|
02.09.2012, 11:44 | |
Ответы с готовыми решениями:
11
Посмотрите все ли правильно или можно где-то сделать как-то иначе: Как правильно открывать и читать файлы? Как правильно открывать файл и записывать/читать из него Как открывать следующую форму правильно не нарушая принцыпы WPF(MVVM)? |
02.09.2012, 12:40 | 2 |
фабрику создаём один раз, а сессию создаём, открываем транзакцию - выполняем всё что надо, комитим, и закрываем сессию.
Вопрос держать ли сессию открытой зависит от того как часто надо её открывать и закрывать, ну и от количества клиентов к БД. База не любит много сессий.
0
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|||||||||||||||||||||
04.09.2012, 10:32 | 3 | ||||||||||||||||||||
Я сделал такой класс, назвал HibernateUtil:
Добавлено через 14 минут Далее работа с сессией выглядит так: 1. при чтении данных:
0
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
|
04.09.2012, 10:42 [ТС] | 4 |
спасибо, приму на вооружение
0
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|
04.09.2012, 10:43 | 5 |
Вопрос о том, когда закрывать сессию, зависит от нескольких моментов.
Важно помнить, что DAO после закрытия сессии с БД не связан, но может использоваться в коде. Это значит, что запрос связанных объектов по вторичным ключам может вернуть null, хотя в базе запись есть. Также важно помнить, что операции сохранения/изменения/удаления могут происходить реально не в момент вызова соответствующего метода сессии, а в какой-то момент времени позже. Например, может получиться, что был вызван метод save(), но DAO при этом так и не получил значение id. Чтобы такого не было, я вызываю flush() после save(), но до коммита транзакции. И всегда нужно помнить о содержимом кэша. Оно должно быть актуальным, если Вы планируете использовать DAO после закрытия сессии.
0
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
|
04.09.2012, 18:59 [ТС] | 6 |
Давайте я расскажу структуру "на пальцах" для чайников как я понимаю jpa. А вы меня, если что подправите.
Итак. jpa это рекомендации для обращении к ORM. Сначала существовал метод jpa, который был очень сложным. Т.к. все время нужно было прописывать подключение к базе данных, создавать сессии, потом делать транзакции и все закрывать. Потом появился Hibernate, который упростил задачу. В классах нужно было создать всего лишь аннотации или прописать в xml зависимости, и тогда уже hibernate сам проводил транзакции, работая с этими классами. Параллельно Hibernate существовал класс Entity Manager, который предоставлял методы для удобного создания, апдейта и т.д. объектов класса (или это тот же Hibernate?) . Потом появился DAO, который позволил уменьшить код, и в отдельной настройки прописать как создавать, удалять и т.д. объекты из БД. Для удобства создали фреймворк Spring, который позволяет не зацикливаться на транзакциях, подключениях и т.д. В нем есть свой DAO, и есть все методы для автоматических транзакций. Вопрос у меня только такой: Часто ли используется DAO в проектах. И почему если Spring такой распрекрасный, не все им пользуются? Добавлено через 17 минут А, и ещё есть такая вещь как JDBC. Которая просто может делать различные запросы к базе данных. Если не ошибаюсь, создавать объекты в БД с помощью него, не представляется возможным.
0
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|
04.09.2012, 20:37 | 7 |
Hibernate - надстройка над JDBC.
Создавать объекты в БД ни JDBC, ни Hibernate не могут, поскольку направлены на работу с реляционными СУБД. Hibernate предлагает лишь способ обращения к БД, при котором операции производятся не над записями, а над соответствующими объектами. Такой подход ускоряет разработку приложений баз данных ценой столь же значтельной потери их производительности. Data Access Objects (DAO) - специальные классы приложения, соответствующие по своей структуре записям определённой таблицы БД. В разных технологиях их реализация разная. Но суть от этого не меняется. Используете ли Вы нативный клиент, или JDBC/ODBC, или Hibernate - DAO в том или ином виде присутствуют просто потому, что удобно внутри программы передавать и обрабатывать данные в виде объекта. Понятно, что внешние интерфейсы с объектами дружат далеко не всегда. И тут объекты уступают место протоколам. Добавлено через 2 минуты А Spring вовсе не распрекрасный. Это всего лишь один из фреймворков. Не более и не менее.
0
|
04.09.2012, 22:02 | 8 |
ну вообщето хибер может
Не по теме: hibernate.hbm2ddl.auto Automatically validates or exports schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
0
|
55 / 55 / 14
Регистрация: 26.04.2010
Сообщений: 177
|
|
05.09.2012, 13:11 | 9 |
0
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
||||||||||||||||||||||||||
05.09.2012, 14:38 [ТС] | 10 | |||||||||||||||||||||||||
Решил я на практике сделать Jpa+DAO.Как обычно ничего не получается. Пример был обрезанный.
Значит сам Enplement класс:
Прошу заметить, что Spring я тут сознательно не исспользую.
0
|
05.09.2012, 22:38 | 11 | |||||
где вы берёте конфиг с топлинком, я ума не приложу, есть же в стандартной документации пример с подключением мускуля, да и по всему инету валом, нет вы находите самый сложный вариант завязки с оракловым топлинком и давай на нём учиться ???
0
|
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
|
|
05.09.2012, 23:36 [ТС] | 12 |
0
|
05.09.2012, 23:36 | |
05.09.2012, 23:36 | |
Помогаю со студенческими работами здесь
12
Метод lfind(), как правильно написать метод сравнения? По двум кликам по гиперссылке открывать диалоговое окно (как в проводнике), где можно указать папку с файлами Где открывать массив и закрывать его Как правильно добавить метод Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |