Сегодня я научился добавлять, удалять, изменять и проверять базу данных через Hibernate. Позвольте мне кратко представить это:
Сначала создать класс ученика:
пакет com.hibernate.model; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedValue; импорт javax.persistence.id; импорт javax.persistence.table; @Entity @table (имя = "_teacher") место рождения; @id @generatedValue @column (name = "_id") public int getId () {return id;} public void setId (int id) {this.id = id;}@column (name = "_name") public String getName () {return name;} public void setNam getAge () {return Age;} public void setage (int age) {this.age = age;}@column (name = "_birthplace") public String getBirthplace () {return Birth Place;} public void setbirthplace (строка рождения) {this.birthplace = grace;}}}}}}}}}}}}}}}}}}}}}}}}}}}} Затем создайте тестовый пример TeacherTest Type Junit:
Давайте сначала поговорим о методе Session.Save (), то есть добавить:
пакет com.hibernate.model; import org.hibernate.query; import org.hibernate.session; импорт org.hibernate.sessionFactory; импорт org.hibernate.cfg.annotationConfiguration; импорт org.junit.fterclass; импорт org.junit.beforcrass; = null;@BeforeClass public static void beforeClass(){try{sf = new AnnotationConfiguration().configure().buildSessionFactory();//It is best to get the exception here, because there is a bug that sometimes appears and sometimes does not appear}catch(Exception e){e.printStackTrace();} finally{}}@Test public void testSave() {// Увеличить учитель T = new Seacher (); t.setage (23); t.setName ("moluo"); t.setbirthplace ("huangshan"); session session = sf.getcurrentsession (); session.begintransaction (); session.save (t); session.gettransaction (). AfterClass () {sf.close ();}}Яркие результаты:
Давайте поговорим о методе session.delete (), то есть удалить:
@Test public void testDelete () {// delete учителя t = new chemine (); t.setid (2); session session = sf.getcurrentsession (); session.begintransaction (); session.delete (t); session.getTransaction (). Commit ();};Яркие результаты:
Затем перейдите на session.get (), то есть проверьте:
@Test public void testget () {// get session = sf.getCurrentSession (); session.beginTransaction (); Учитель T = (учитель) Session.get (учитель.class, 1); System.out.println ("name:"+t.getName ()); session.getTransaction (). Commit (); }Яркие результаты:
Hibernate: выберите «Учитель» _._ ID AS COLMAN1_1_0_, Учитель0 _._ AGE AS COLMAN2_1_0_, Учитель0 _._ Место рождения AS COLMAN3_1_0_, Учитель0 _._ Имя AS COLMAN4_1_0_ из _teacher Учитель 0_ Где учитель0 _._ ID =? Название: Moluo
Давайте возьмем еще один метод запроса: session.load ():
@Test public void testload () {// Session Session = sf.getCurrentSession (); session.beginTransaction (); Учитель T = (учитель) Session.load (Учитель.class, 1); System.out.println ("name:"+t.getName ()); session.getTransaction (). Commit (); }Яркие результаты:
Hibernate: выберите «Учитель» _._ ID AS COLMAN1_1_0_, Учитель0 _._ AGE AS COLMAN2_1_0_, Учитель0 _._ Место рождения AS COLMAN3_1_0_, Учитель0 _._ Имя AS COLMAN4_1_0_ из _teacher Учитель 0_ Где учитель0 _._ ID =? Название: Moluo
Здесь мы объясняем разницу между этими двумя запросами: во -первых, когда объект, который будет не существует, возвращаемая информация отличается. Метод получения вернет: java.lang.nullpointerException
Метод нагрузки вернет: org.hibernate.objectnotfoundexception: norowwiththegivenidentifierexists
Во -вторых, нагрузка возвращает прокси -объект, а операторы SQL будут выдаваться, когда он фактически используется; Кроме того, получите нагрузки данных непосредственно из базы данных без промедления.
Наконец, давайте поговорим о наиболее часто используемых методах обновления и обновим их с помощью операторов HQL:
@Test public void testupdate () {// session session = sf.getcurrentsession (); session.beginTransaction (); String url = "Обновить учитель t set t.birthplace = 'anhui', где id = 1"; // Обратите внимание, что учитель здесь должен быть именем объекта, а не именем таблицы, t - псевдоним объекта Query q = session.createequery (url); // Пакет, импортируемый здесь: import org.hibernate.query; Q.ExecuteUpdate (); session.getTransaction (). Commit (); }Яркие результаты:
Благодаря обновлению, родной город Моро был обновлен из Хуаншана до Анхуи ...
На самом деле, есть метод обновления session.update (), но этот метод обновления является только этим методом обновления. Если вы обновляете только часть столбцов за раз, этот метод обновления будет обновлять все столбцы, что не очень эффективно, поэтому не рекомендуется их использовать. Конечно, есть также способы восполнить их. Например, если вы используете XML, вы можете установить Update = "false" в теге свойства столбца, который вы не хотите обновляться в файле конфигурации; Кроме того, вы также можете установить динамические обновления после класса файла конфигурации: dynamic-update = "true"; Конечно, если вы используете аннотацию, вы можете установить @column (update = "false"); На самом деле, они не гибкие, и использование HQL является лучшим, поэтому здесь размещен только код обновления HQL.
Суммировать
Выше приведено все содержимое этой статьи об анализе примера Hibernate, удаления, удаления, изменения и поиска через сеанс. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут обратиться к этому сайту:
Быстро узнайте о сессии в Hibernate
Код экземпляра аннотации атрибутов Hibernate
Hibernate использует hbm.xml для настройки анализа взаимосвязи отображения
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!