1. Комбинированное картирование
Комбинация - это особый случай взаимоотношений ассоциации и отношения с наивысшей степенью связи. Основной объект и подраздел комбинации имеют одинаковый жизненный цикл. Если основной объект умирает, подраздел также умрет. Здесь мы используем работодателей и пользователей в качестве примеров. Как пользователи, так и работодатели имеют атрибуты контактной информации. Если вы думаете с точки зрения объекта, вы часто приведете объектную модель в комбинированный метод, чтобы абстрагировать общую контактную информацию. Затем два человека включают соответствующие объекты контактной информации. При обращении к соответствующей модели объекта ее пример объекта показан на рисунке ниже:
После того, как модель комбинированного объекта генерирует соответствующую модель отношений, соответствующий подкласс будет включен в основную таблицу, поэтому соответствующая структура таблицы будет генерировать соответствующие атрибуты в соответствующую таблицу. Соответствующая структура таблицы следующая:
1.1 Класс сотрудников и картирование файлов
В модели объекта существует взаимосвязь между сотрудником и контактом. При написании кода вам необходимо включить контактный объект в сотрудника. Соответствующий отображающий файл также должен иметь отображение контактных объектов. Тег <Component> необходимо использовать для указания комбинированных объектов и добавления свойств объекта в тег объекта.
Список: сотрудник. Java. В дополнение к основным свойствам, файл класса также должен быть упакован с контактными объектами, поскольку между ними существует уровень взаимосвязи включения.
пакет com.src.hibernate; Public Class Employee {// ID -номер частный INT ID; public int getId () {return id; } public void setId (int id) {this.id = id; } // Имя частного имени строки; public String getName () {return name; } public void setName (string name) {this.name = name; } // Связаться с объектом Private Contact usercontact; public Contact getUsercontact () {return usercontact; } public void setUserContact (contact usercontact) {this.usercontact = usercontact; }}Список 2: employee.hbm.xml, добавьте соответствующий файл отображения. Сопоставленные комбинированные объекты должны быть помечены с помощью <компонента> и добавлять соответствующие атрибуты объекта в тег. Конкретный код заключается в следующем:
<? xml version = "1.0"?> <! Doctype Hibernate Mapping Public "-// Hibernate/Hibernate Mapping Dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name name = ‘com.src.moberteeeeeeee table = "t_employee"> <id name = "id"> <generator/> </id> <name = "name"/> <component name = "employeEcontact"> <name = "email"/> <name = "address"/> <name = "zipcode"/> <property name = "contactTel"/> </> </class> </hibdate-mapping> </hibertate-mapping> </hibertate-mapping> </hibertate-mapping> </hibertate-mapping> </hibertate-mapping> </hibdate-mapping>
1.2 Пользовательский класс и файлы конфигурации
Листинг 3: user.java, его структура содержания такая же, как и у сотрудника. Java. Я не скажу много о других, посмотрите на код:
пакет com.src.hibernate; Пользователь открытого класса {// идентификационный номер Private INT ID; public int getId () {return id; } public void setId (int id) {this.id = id; } // Имя частного имени строки; public String getName () {return name; } public void setName (string name) {this.name = name; } // Связаться с объектом Private Contact usercontact; public Contact getUsercontact () {return usercontact; } public void setUserContact (contact usercontact) {this.usercontact = usercontact; }}Список 4: user.hbm.xml, его структура содержания такая же, как и у employee.hbm.xml, и в основном используется для использования тега <component>. Это очень просто, и код заключается в следующем:
<? xml version = "1.0"?> <! Doctype Hibernate Mapping Public "-// Hibernate/Hibernate Mapping Dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <net name name = ”com.src.shiber hiber. <id name = "id"> <generator/generator/> </id> <name = "name"/> <component name = "usercontact"> <name = "email"/> <name = "address"/> <name = "ZipCode"/> <name = "contactTel"/> </> </class> </hibernate-mapping>
1.3 Contact.java Class
В этом файле класса нечего обращать внимание. Вы можете добавлять основные свойства, и вам не нужно настраивать соответствующие сопоставления для этого класса, поэтому его содержимое довольно простое.
пакет com.src.hibernate; Общедоступный класс контакт {// адрес электронной почты Private String Email; public String getEmail () {return Email; } public void setEmail (string email) {this.email = email; } // Адрес частного строкового адреса; public String getAddress () {return Address; } public void setAddress (строковый адрес) {this.address = address; } // post Code Private String ZipCode; public String getzipCode () {return ZipCode; } public void setzipCode (string zipcode) {this.zipcode = ZipCode; } // Контактный номер Private StringTel; public String getContactTel () {return contactTel; } public void setContactTel (String contactTel) {this.contactTel = contactTel; }} 1.4. Создайте результаты
После приведенной выше конфигурации файла может быть сгенерирована соответствующая структура таблицы баз данных. Сгенерированный оператор SQL выглядит следующим образом:
Таблица сброса, если существует таблица сброса t_employee. varchar (255), электронная почта Varchar (255), адрес varchar (255), Zipcode varchar (255), ContactTel varchar (255), первичный ключ (ID))
Сформированная структура таблицы баз данных следующая:
2. Работа данных
Структура таблицы, полученная путем объединения отображения, является полной таблицей, поэтому самый исходный метод может быть реализован при написании и чтении данных. Здесь мы также используем методы испытаний, используемые в предыдущих статьях для записи и чтения данных, которые представляют собой методы сохранения и загрузки, см. Ниже для конкретных операций.
2.1 Вставьте данные
Здесь пользователь используется в качестве примера, а операция по записи сотрудника такая же, как у пользователя. При написании данных необходимо создать два объекта, один - это контактный объект, а другой - пользовательский объект. При сохранении необходимо сохранить только пользовательский объект, а соответствующий контактный объект будет сохранен вместе.
public void testSave1 () {// объявить сеанс объекта сеанса = null; try {// получить сеанс сеанса Session = hibernateutils.getSession (); // открыть сеанс сеанса.beginTransaction (); // Создать объект соединения контакт usercontact = new contact (); usercontact.setAddress ("Пекин"); usercontact.setContacttel ("1243435"); usercontact.setemail ("[email protected]"); usercontact.setzipCode ("ZipCode"); // Создать пользователь пользователя пользователя пользователя = new user (); user.setName ("Zhangsan"); user.setusercontact (usercontact); session.save (пользователь); // отправить сеанс сеанса.getTransaction (). Commit (); } catch (Exception e) {e.printstackTrace (); session.getTransaction (). Rollback (); } наконец {hibernateutils.closesession (Session); }} Сгенерированный оператор SQL:
Вставьте в T_USER (имя, электронная почта, адрес, ZipCode, ContactTel) значения (?,?,?,?,?)
Проверьте структуру таблицы следующим образом:
2.2 Читать
Также используя пользователя в качестве примера, операции сотрудника совпадают с объектом пользователя. Операция чтения довольно проста, код выглядит следующим образом:
public void testload1 () {// объявить сеанс объекта сеанса = null; try {// получить сеанс сеанса Session = hibernateutils.getSession (); // открыть сеанс сеанса.beginTransaction (); // Получить пользователь пользователь пользователь пользователь = (пользователь) session.load (user.class, 1); System.out.println ("Имя пользователя:"+user.getName ()); // отправить сеанс сеанса.getTransaction (). Commit (); } catch (Exception e) {e.printstackTrace (); session.getTransaction (). Rollback (); } наконец {hibernateutils.closesession (Session); }}Соответствующие результаты генерируются следующим образом:
Hibernate: выберите user0_.id как id0_0_, user0_.name as ame0_0_, user0_.email as emike0_0_, user0_.address as Adders0_0_, user0_.zipcode as zipcode0_0_, user0_.contacttel as contacttel0_0_0_0_0_0_0_0_. Имя пользователя: Чжангсан
Iii. Комплексные примеры
Счет:
Общедоступная учетная запись реализует Serializable {Private Int ID; частные двойные деньги; Частный адрес адреса; public int getId () {return id; } public void setId (int id) {this.id = id; } public Double getMoney () {return Money; } public void setMoney (двойные деньги) {this.money = money; } public Adder getAddress () {return Address; } public void setAddress (адрес Адрес) {this.Address = адрес; }} Адрес:
Адрес открытого класса реализует Serializable {Private String Code; частный строковый город; частная строковая провинция; public String getCode () {return Code; } public void setCode (String Code) {this.code = code; } public String getCity () {return City; } public void setCity (String City) {this.city = City; } public String getProvince () {return Province; } public void setProvince (String Province) {this.province = province; }} Account.hbm.xml:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Hibernate Mapping Public "-// Hibernate/Hibernate Mapping Dtd 3.0 // en" "http://hibernate.sourceforge.net/hibernate mapping-3.0.dtd" Инструменты-> <Hibernate Mapping Package = "pojo"> <class name = "account" table = "t_account"> <id name = "id"> <column name = "id"> </column> <generator> </Generator> </id> <name = "money"> </name = "money"> </column> </property> <property> <proport name = "code"> </column> </property> <name = "city"> <column name = "city"> </column> </property> <property name = "province"> <name = "province"> </column> </property> </component> </class> </hibernate mapping> </column> </property> </component> </class> </hibernate> </column> </property> </component> </class> </hibernate> </column> </property> </component> </class> </hibernate>