Связайте разницу между срочным соединением и обычным соединением
Соответствующее введение и объяснение были прокомментированы в коде, поэтому вы можете обратиться к нему.
пакет com.baidu.test; import java.util.arraylist; import java.util.linkedhashset; импорт java.util.list; импорт org.hibernate.query; импорт org.hibernate.session; импорт org.hibernate. org.hibernate.service.serviceRegistry; import org.hibernate.service.serviceRegistryBuilder; импорт org.junit.fter; импорт org.junit.before; импорт org.junit.test; импорт com.baide.leftjoin.department; {Private SessionFactory SessionFactory; частная сеанс; сеанс; Configuration.BuildSessionFactory (ServiceRegistry); Session = SessionFactory.Opensession (); Transaction = session.BeginTransaction ();}@после публики void destress () {transaction.commit (); session.close (); sessionFactory.close ();} // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ many~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/** * * Erection left outer join: Features are: If the left table does not meet the conditions, the left table does not meet the conditions* 1. The LEFT JOIN FETCH keyword represents the urgent left outer join retrieval strategy. * 2. Метод List () хранит ссылки на объекты объекта в возвращенном наборе. Сбор сотрудников, связанный с каждым объектом Департамента, инициализируется, * хранит все связанные объекты объекта. * 3. Результат запроса может содержать дублируемые элементы, а дублирующие элементы могут быть отфильтрованы через хэшсет * * Deduplication: * Метод 1: Используйте различные * string hql = "Выберите отдельный D от отдела d левый соединение Fetch D.Emps"; * Query Query = session.createequery (hql); * * Список <Департамент> Глубина = Query.list (); * System.out.println (depts.size ()); * * Метод 2 * string hql = "От департамента D Left Join queck D.Emps"; * Query Query = session.createequery (hql); * * Список <Департамент> dpts = Query.list (); * * depts = new ArrayList <> (новый LinkedHashset (depts)); * System.out.println (depts.size ()); * * for (Департамент Dept: depts) { * System.out.println (dept.getName () + "-" + dept.getemps (). size ()); *} * * */@Test public void testleftjoinfetch () {// string hql = "Выберите отдельный D от отдела d left quect quection d.emps"; // Query Query = session.createeceer D.Emps "; Query Query = session.createquery (hql); list <featural> depts = Query.list (); system.out.println (depts.size ()); depts = new ArrayList <> (new LinkedHashset (depts)); System.out.println (depts.size (); Dept: Depts) {System.out.println (dept.getName () + "-" + dept.getemps (). size ());}}/** * Левое внешнее соединение: * 1. Ключевое слово левого соединения представляет собой запрос левого внешнего соединения. * 2. Тип массива объектов сохраняется в сборе, возвращаемой методом List () * 3. Определите стратегию поиска коллекции сотрудников на основе файла конфигурации. * 4. Если вы хотите, чтобы коллекция была возвращена методом List (), чтобы содержать только объекты отдела, * вы можете использовать ключевое слово SELECT в операторах запроса HQL * * Результаты такого заявления продуцируются: * String HQL = "из департамента D Left Join D.Emps"; * Query Query = session.createequery (hql); * * List <object []> results = Query.list (); * System.out.println (Results.Size ()); * * Deduplication: * только используйте различный метод для удаления дупликации * * string hql = "Выберите« Отличный d от отдела d »,« Сделай », соединение d.emps»; * Query Query = session.createequery (hql); * * Список <Департамент> dpts = Query.list (); * System.out.println (depts.size ()); * * for (Департамент Dept: depts) { * System.out.println (dept.getName () + dept.getemps (). size ()); *} * */@Test public void testleftjoin () {string hql = "select discover d от департамента d reak quip quects"; Query Query = session.createquery (hql); список <Департамент> depts = Query.list (); System.out.println (depts.size ();); dept.getemps (). size ());}}/** * Импульсивное внутреннее соединение: функции: не возвращайте левую таблицу, но не соответствует условиям * Внутреннее соединение ключевого слова Fetch представляет собой срочное внутреннее соединение, а внутреннее ключевое слово также может быть опущено * Департамент метода List (). Внутренние соединения: * Ключевое слово Inner Join представляет внутреннее соединение, и внутреннее ключевое слово также может быть опущено. Запись о результате запроса каждого элемента, хранящегося в наборе метода List (), является типом массива объектов. Каждый элемент является типом массива объектов * Если вы хотите, чтобы коллекция возвращалась методом List () только для содержания только объектов отдела, вы можете использовать ключевое слово SELECT в операторе HQL запроса * * * */@Test public void testinnerjoinfetch () {// string hql = "select infact d из отдела d left quest ganemps"; string hql = "Отдела d inner gance quemy d. query query query query query query query query query query query query query query query query query query query query query query query veery query"; session.createequery (hql); list <featural> depts = Query.list (); depts = new ArrayList <> (новый LinkedHashset (depts)); System.out.println (depts.size ()); для (отделение отдела: depts) {System.out.println (dep.getName () + "-"-" + depts (). );}} // ~~~~~~~~~~~ ~ ~~~~~~~~~~~~~ ~ public void testleftjoinfetch2 () {string hql = "из работника e Left quect quect e.dept"; Query Query = session.createquery (hql); список <Сотрудник> emps = Query.list (); System.out.println (emps.size (); для (empeee emp: emps) {System.out.print. emp.getDept ());}}}Суммировать
Выше приведено полное содержание этой статьи о разнице между срочным соединением Hibernate и обычным соединением. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Краткое обсуждение срочной проблемы с нагрузкой в Hibernate (ассоциация нескольких иностранных ключей)
Подробное объяснение кода операции для добавления, удаления, изменения и поиска в Hibernate
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!