Основные операции CRUD следующим образом:
1 пакет cn.itheima.test; 2 3 импорта cn.itcast.domain.Customer; 4 импорта cn.itcast.utils.JpaUtils; 5 импорта org.junit.Test; 6 7 импорта javax.persistence.EntityManager; 8 импорта javax.persistence.EntityManagerFactory; 9 импорта javax.persistence.EntityTransaction; 10 импорта javax.persistence.Persistence; 11 12 общественного класса JpaTest { 13 14 / ** 15 *测试JPA的保存 16 * Корпус: сохранить клиент в базу данных 17 * JPA шаги 18 * 1. Загрузите создание завода профиля (диспетчера объектов фабрики) объекты 19 * 2. Менеджер субъекта менеджера завода субъектом приобрел 20 * 3. Получить дела объекты, открытые сделки 21 * 4. полные операции CRUD 22 * 5. фиксации транзакции (транзакция отката) 23 * 6. освободить ресурсы 24 * / 25 @Test 26 общественных пустот testSave () { 27 // // . 1. создание профиля нагрузки завод (управляющий объектом завод) объекты 28 // EntityManagerFactory = фабрикант Persistence.createEntityManagerFactory ( «myJpa»); 29 // // 2. приобретающего предприятия менеджер сущностей менеджер завод 30 // ЭМ = factory.createEntityManager EntityManager (); 31 EntityManager ЕМ = JpaUtils.getEntityManager (); 32 // 3. Приобретение объекта транзакции, транзакция открытия 33 EntityTransaction em.getTransaction TX = (); // Получить объект транзакции 34 tx.begin ( ); // открытая транзакционные 35 // 4. выполнить операции CRUD: клиент , чтобы сохранить базу данных 36 клиент = клиент новый новый клиента (); 37 [ customer.setCustName ( "Chi Chuan подкаст" ); 38 является customer.setCustIndustry ( " Образование " ); 39 // сохранить, 40 EM.сохраняется (Заказчик); // операция сохранения 41 // 5 зафиксировать транзакцию 42 tx.commit (); 43 // 6. Выпускные ресурсы 44 em.close (); 45 // factory.close (); 46 47 } 48 49 / ** 50 * идентификатор в соответствии с клиентом запрашивает 51 * использовать метод поиска , чтобы запросить: 52 * 1. сам объект запроса текущих целевых клиентов 53 * 2. при вызове методов находят для запроса оператор SQL базы данных будут отправлены 54 * 55 * Теперь загрузка 56 * 57 * 58 * / 59 @Test 60 общественных пустот testFind () { 61 // 1. приобретенные инструменты EntityManager 62 EntityManager EntityManager = JpaUtils.getEntityManager (); 63 // 2. Открытие транзакции 64 EntityTransaction TX = entityManager.getTransaction (); 65 TX. Бегина (); 66 // 3. CRUD - запрос идентификатора клиента 67 / ** 68 * Найти: идентификатор запроса данных 69 * класс: результаты запроса типов данных , которые будут упакованы сущности класса байткод 70 * ID: первичный ключ запроса значение 71 * / 72 Клиент = EntityManager Клиент. Найти (Заказчик. Класс , 1L ); 73 // из System.out.print (Заказчик); 74 // 4. зафиксировать транзакцию 75 tx.commit (); 76 // 5. высвободить ресурсы 77 EntityManager. Close (); 78 } 79 80 / ** 81 * клиент ID запроса 82 * метод getReference 83 * 1. Получить объект представляет собой динамический прокси - объект 84 * 2. метод не сразу отправить вызов оператор getReference SQL запросов к базе данных 85 * * при вызове запроса объекта результата , когда заявление будет отправлена SQL - запрос: когда использовать, когда для отправки инструкций SQL для запроса к базе данных 86 * 87 * задержка загрузка (отложенная загрузка) 88 * * полученная динамический объект прокси - 89 * * при использовании, использование того , что будет запрашивать 90 * / 91 @Test 92 общественных пустоты testReference () { 93 // . 1. приобретенные инструменты EntityManager 94 EntityManager EntityManager = JpaUtils.getEntityManager (); 95 // 2. открытие транзакции 96 EntityTransaction TX = entityManager.getTransaction (); 97 tx.begin (); 98 // 3. CRUD - The запросы клиентов ID 99 / ** 100 * GetReference: запрос данные на основе ID 101 * классе: результаты запроса типов данных , которые должны быть упакованы сущность класса байткод 102 * Идентификатор: ключ запрос первичного значения 103 * / 104 . EntityManager Клиента = Клиент GetReference . (Заказчик класс , 1L ); 105 из System.out.print (Заказчик); 106 // 4. зафиксировать транзакцию 107 tx.commit (); 108 // 5. Освобождение ресурсов 109 entityManager.close (); 110 } 111 112 / ** 113 * удалить дело клиента 114 * 115 * / -16 @Test 117 общественных пустоты testRemove () { -18 // 1. EntityManager приобретенного инструментов 119 EntityManager EntityManager = JpaUtils.getEntityManager (); 120 // 2. Открытых Услуги 121 EntityTransaction TX = entityManager.getTransaction (); 122 TX. Бегина (); 123 // 3. CRUD - удалить клиенту 124 125 // I запрос идентификатор клиента 126 клиента = EntityManager.find клиента (клиент. класс , 1 л ); 127 // II способа удалить вызов для завершения удаления 128 . EntityManager Удалить (Заказчик); 129 130. // 4. зафиксировать транзакцию 131 tx.commit (); 132 // 5. высвободить ресурсы 133 entityManager.close (); 134 } 135 136 / ** 137 работают для обновления клиента * 138 Слияние * (Object) 139 * / 140 @Test 141 общественных пустот testUpdate () { 142 // 1. приобретенные инструменты EntityManager 143 EntityManager EntityManager = JpaUtils.getEntityManager (); 144 //2. Включите операции 145 EntityTransaction Тх = entityManager.getTransaction (); 146 tx.begin (); 147 // 3. CRUD - операции обновления 148 149 // я запрос клиента 150 Клиент Клиент = EntityManager.find (Заказчик. класс , 1L ); 151 // II обновление клиента 152 customer.setCustIndustry ( "IT - образование" ); 153 . EntityManager Merge (заказчик); 154 155 // 4. зафиксировать транзакцию 156 tx.commit (); 157 // . 5. релиз ресурсы 158 entityManager.close (); 159 } 160 161 }
Описание: найти () и getReference () разница:
По запросам клиентов Ид с
помощью найти способ запроса:
сам объект 1. Объект запроса является текущим клиентом
2. При вызове методы находит для запроса оператора базы данных SQL будет отправлен
немедленно загружен
============= ======================================== в
соответствии с клиентом запросы ID getReference метод
1. приобретенного объект представляет собой динамический прокси - объект
2. вызов метода getReference не сразу отправить SQL заявление , запрос к базе данных
* при вызове объекта результата запроса , когда SQL оператор отправляет запрос: когда использовать, когда для отправки инструкций SQL для запросов к базе данных
отложенной загрузки ( отложенная загрузка)
* прибудет представляет собой динамический прокси - объект
* когда использовать то , что использование будет запрашивать