Читаем Изучаем Java EE 7 полностью

Тип доступа встраиваемого класса. Тип доступа встраиваемого класса обуславливается типом доступа класса-сущности, в котором он располагается. Если сущность явным образом использует такой тип доступа, как доступ к свойствам, то встраиваемый объект будет неявно использовать аналогичный тип доступа. Другой тип доступа для встраиваемого класса можно указать с помощью аннотации @Access.

Сущности Customer (листинг 5.33) и Address (листинг 5.34) задействуют разные типы доступа.

Листинг 5.33. Сущность Customer с таким типом доступа, как доступ к полям

@Entity

@Access(AccessType.FIELD)

public class Customer {

··@Id @GeneratedValue

··private Long id;

··@Column(name = "first_name", nullable = false, length = 50)

··private String firstName;

··@Column(name = "last_name", nullable = false, length = 50)

··private String lastName;

··private String email;

··@Column(name = "phone_number", length = 15)

··private String phoneNumber;

··@Embedded

··private Address address;

··// Конструкторы, геттеры, сеттеры

}

Листинг 5.34. Встраиваемый объект с таким типом доступа, как доступ к свойствам

@Embeddable

@Access(AccessType.PROPERTY)

public class Address {

··private String street1;

··private String street2;

··private String city;

··private String state;

··private String zipcode;

··private String country;

··// Конструкторы

··@Column(nullable = false)

··public String getStreet1() {

····return street1;

··}

··public void setStreet1(String street1) {

····this.street1 = street1;

··}

··public String getStreet2() {

····return street2;

··}

··public void setStreet2(String street2) {

····this.street2 = street2;

··}

··@Column(nullable = false, length = 50)

··public String getCity() {

····return city;

··}

··public void setCity(String city) {

····this.city = city;

··}

··@Column(length = 3)

··public String getState() {

····return state;

··}

··public void setState(String state) {

····this.state = state;

··}

··@Column(name = "zip_code", length = 10)

··public String getZipcode() {

····return zipcode;

··}

··public void setZipcode(String zipcode) {

····this.zipcode = zipcode;

··}

··public String getCountry() {

····return country;

··}

··public void setCountry(String country) {

····this.country = country;

··}

}

Настоятельно рекомендуется явным образом задавать тип доступа для встраиваемых объектов, чтобы избежать ошибок отображения, когда один встраиваемый объект окажется встроенным во множественные сущности. К примеру, расширим нашу модель, добавив сущность Order, как показано на рис. 5.4. Address теперь будет встроен в Customer и Order.

Рис. 5.4. Address встроен в Customer и Order

Для каждой сущности определяется отличающийся тип доступа: Customer использует доступ к полям, а Order — доступ к свойствам. Поскольку тип доступа встраиваемого объекта обуславливается типом доступа класса-сущности, в котором он объявлен, Address будет отображен двумя разными путями, что может привести к проблемам отображения. Чтобы этого не случилось, тип доступа Address должен быть задан явным образом.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных