Сеанс: это сеанс между приложением и базой данных, центром операции Hibernate и основой операций по упорным уровням. Жизненный цикл объектов/управления транзакциями/доступа к базе данных тесно связан с сеансом.
Объект сеанса построен через SessionFactory. Вот пример для представления двух способов получить сеансы Hibernate.
Журналы являются очень распространенной проблемой в программировании. Когда пользователи работают в базах данных, им необходимо записать эту серию операций для отслеживания динамики базы данных. Поэтому, когда пользователь вставляет запись в базу данных, он должен записать запись в файле журнала. Серия операций пользователя должна проводиться в сеансе, в противном случае это станет двумя потоками. Нет гарантии синхронизации. Посмотрите на следующий код
Инструменты сессии управления HibernateUtil
пакет com.bjpowernode.usermgr.util; import org.hibernate.session; // Hibernate3 Import org.hibernate.sessionFactory; import org.hibernate.cfg.configuration; открытый класс hibernateutils {private static sessionfactor Configuration (). Configure (); // Создать sessionFactory factory = cfg.buildSessionFactory ();} Catch (Exception e) {e.printStackTrace ();}} // Получить открыту Session) {if (session! = null) {if (session.isopen ()) {session.close ();}}} public static sessionfactory getseSsionFactory () {return factory;}}}Пользовательский бизнес -логический слой
package com.bjpowernode.usermgr.manager;import java.util.Date;import org.hibernate.Session;import com.bjpowernode.usermgr.domain.Log;import com.bjpowernode.usermgr.domain.User;import com.bjpowernode.usermgr.util.HibernateUtils;public class UserManagerImpl implements UserManager {/** * Как добавление пользователей, так и добавление журналов используют один и тот же сеанс, поэтому * При выходе из строя пользователи также не сработают. Отверой транзакции* Пользователь добавляет журналы успеха, а также добавит успех*/public void Adduser (пользователь пользователь) {Session Session = null; try {// Получить текущий сеанс SESSION Thread = hibernateUtils.getSessionFactory (). GetCurrentSession (); session.beginTransaction (); // Сохранить пользователь. Log "); log.settime (new Date ()); log.setDetail (" xxx "); logmanager logmanager = new logmanagerimpl (); // Сохранить logmans logmanager.addlog (log); session.getTransaction (). Commit ();} catch (Exception e) {e.printStackTrace ();).Класс реализации журнала:
пакет com.bjpowernode.usermgr.manager; import org.hibernate.session; import com.bjpowernode.usermgr.domain.log; import com.bjpowernode.usermgr.util.hibernateutils; public class LogmanagerMpl Imprement Hibernateutils.getsessionFactory (). GetCurrentSession (). Save (log);}}
Тестовый класс
пакет com.bjpowernode.usermgr.manager; import junit.framework.testcase; import com.bjpowernode.usermgr.domain.user; public class UsermanagerImpltest extends testcase {public void testadduser () {пользовательский пользовательский пользовательский user.setName ("Zhang San"); UserManager.Adduser (пользователь); }Уведомление:
1. В чем разница между открытой местностью и геткой?
*Открытие должно быть закрыто, тока будет закрыта автоматически после завершения транзакции.
*Открытие не связана с текущим потоком, тока связана с текущим потоком
2. Если вы используете току, вам необходимо настроить его в файле hibernate.cfg.xml:
*Если это локальная транзакция (транзакция JDBC)
<propertyname = "hibernate.current_session_context_class"> Thread </property>
*Если это глобальная транзакция (транзакция JTA)
<propertyname = "hibernate.current_session_context_class"> jta </property>
Глобальные транзакции: транзакции, управляемые и координируемые исследователем, которые могут охватывать несколько баз данных и процессов. Диспетчер ресурсов, как правило, использует двухэтапный протокол отправки XA для взаимодействия с «Информационной системой предприятия» (EIS) или базой данных.
Локальные транзакции: транзакции локально на одну EIS или базу данных и ограничены одним процессом. Локальные транзакции не включают несколько источников данных.
Суммировать
Выше приведено все содержание этой статьи о двух примерах кода получения сеанса в Hibernate. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на:
Анализ экземпляра добавления, удаления, пересмотра и поиска через сеанс
Быстро узнайте о сессии в Hibernate
Hibernate использует hbm.xml для настройки анализа взаимосвязи отображения
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!