restricted entities что это

Common independence topics

Personal impact

Professionals who are employed by Deloitte are required to comply with our independence policies. These policies impact not only your own personal financial relationships, but also those of your spouse, spousal equivalent and dependents.

Newly hired professionals frequently need to take one or more of the following actions:

Below is only a partial list, but it represents common financial relationships and scenarios that are subject to reporting and/or ongoing monitoring and some may require divestiture to comply with independence policies if you are employed at Deloitte. If you have one or more of the financial relationships or situations described below and are unable or unwilling to divest or modify the scenario, you may want to contact Independence Compliance Onboarding by email (complianceonboarding@deloitte.com) before accepting employment with the Deloitte US Firms to discuss whether your assigned legal entity, role, or office location would require you to make changes.

Financial relationships

items marked with an asterisk (*) are common in India.

restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Business relationships

restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Employment relationships

restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Also consider certain relationships that you are aware of pertaining to your Close Family Members. “Close Family Members” includes your parents, step-parents, non-dependent children and siblings. Note that unlike your spouse, spousal equivalent and dependents, when it comes to Close Family Members, if you are not aware of these situations, you are not required to ask.

Consider contacting Independence Compliance Onboarding if you are aware of a Close Family Member who has one of the following situations: a financial interest in a company that is material to his/her net worth or employment in an accounting, financial reporting or other significant role at a company.

Definitions

Absent the specific relationships above, a Spousal Equivalent relationship may still exist based on individual facts and circumstances. Professionals are required to use professional judgment in determining whether a Spousal Equivalent relationship is deemed to exist. Although no one factor will necessarily indicate the existence of a Spousal Equivalent relationship, factors to be considered in making such determinations include the following:

Resources upon joining the Deloitte US Firms

Deloitte Entity Search and Compliance (DESC) System–An internal system that, among other things, contains information regarding entities that are restricted for independence purposes. This information will assist you in determining whether or not acquiring or having certain financial relationships would create a potential independence issue.

Tracking & Trading System–An internal tool to help you monitor your compliance with independence requirements related to certain personal investments and financial relationships. You report the names of entities with which you, your spouse or spousal equivalent, and dependents have a financial relationship. The system then monitors these entities against the restricted entity list and informs you if there is a potential exception or conflict.

Broker Data Import Program (BDIP)–A feature of the Tracking & Trading System that allows the professional to receive automatic downloads of their financial holdings from their authorized brokerage accounts. This minimizes much of the administrative nature of maintaining Tracking & Trading and ensures brokerage account transactions are recorded timely and completely.

Representation on Independence, Ethics and Compliance–A personal declaration or statement regarding the facts and circumstances associated with the various financial or other relationships you, your spouse or spousal equivalent, and certain family members may have that directly impact the ability of the Deloitte US Firms to conduct business.

Источник

Restricted tables requiring Dynamics 365 licenses

App makers, who are building custom apps, can use all of the Microsoft Dataverse tables available within Common Data Model to create apps and flows for users who have any version of Power Apps and Power Automate license.

However, a smaller set of tables tied to Dynamics 365 apps (Dynamics 365 Sales, Customer Service, Field Service, Marketing, or Project Service Automation) require canvas and model-driven app users to have a license for the corresponding Dynamics 365 app if they need to create, update, or delete rows within the tables. These are referred to as restricted tables.

Tables may be restricted to a Dynamics 365 app license for the following reasons:

If an app or flow only reads information from a table, a Dynamics 365 app license is not required and an appropriate Power Apps or Power Automate license is all that’s needed.

Restricted tables for create, update, and delete operations

The following table lists the restricted tables and the associated Dynamics 365 license requirements for users who create, update, or delete data stored within these tables.

TableLogical nameLicense required
Actualmsdyn_actualDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Agreement Business Processmsdyn_bpf_baa0a411a239410cb8bded8b5fdd88e3Dynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Booking journalmsdyn_bookingjournalDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Booking Setup Metadatamsdyn_bookingsetupmetadataDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 for Customer Service Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Booking timestampmsdyn_bookingtimestampDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Case 1incidentDynamics 365 for Customer Service Professional edition
or Dynamics 365 for Customer Service Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Case to Work Order Business Processmsdyn_bpf_989e9b1857e24af18787d5143b67523bDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Configurationmsdyn_configurationDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
EntitlemententitlementDynamics 365 for Customer Service, Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Estimate Linemsdyn_estimatelineDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Estimatemsdyn_estimateDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Factmsdyn_factDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Field service settingmsdyn_fieldservicesettingDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Field Service System Jobmsdyn_fieldservicesystemjobDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
GoalgoalDynamics 365 for Sales Professional,
or Dynamics 365 for Sales, Enterprise edition,
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Inventory Journalmsdyn_inventoryjournalDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Invoice Processmsdyn_bpf_d8f9dc7f099f44db9d641dd81fbd470dDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
JourneyjourneyDynamics 365 for Marketing
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Knowledge articleknowledgearticleDynamics 365 for Customer Service, Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Organizational Unitmsdyn_organizationalunitDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Product Inventorymsdyn_productinventoryDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Project Parametermsdyn_projectparameterDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Project Stagesmsdyn_bpf_665e73aa18c247d886bfc50499c73b82Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Project Task Dependencymsdyn_projecttaskdependencyDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Project Taskmsdyn_projecttaskDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Project Team Membermsdyn_projecteamDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Purchase Order Business Processmsdyn_bpf_2c5fe86acc8b414b8322ae571000c799Dynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Resource Assignment Detail (Deprecated)msdyn_resourceassignmentdetailDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Resource Assignmentmsdyn_resourceassignmentDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Resource Restriction (Deprecated)msdyn_workorderresourcerestrictionDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Routing rule setroutingruleDynamics 365 for Customer Service, Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Schedule Board Settingmsdyn_scheduleboardsettingDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Scheduling Parametermsdyn_schedulingparameterDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
SLAslaDynamics 365 for Customer Service Professional edition
or Dynamics 365 for Customer Service Enterprise edition
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
System User Scheduler Settingmsdyn_systemuserschedulersettingDynamics 365 for Field Service
or Dynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Transaction Connectionmsdyn_transactionconnectionDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Transaction Originmsdyn_transactionoriginDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Transaction Typemsdyn_transactiontypeDynamics 365 for Project Service Automation
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Unique Numbermsdyn_uniquenumberDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Work Ordermsdyn_workorderDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan
Work Order Details Generation Queue (Deprecated)msdyn_workorderdetailsgenerationqueueDynamics 365 for Field Service
or Dynamics 365 Customer Engagement plan
or Dynamics 365 plan

[1] Case table actions permitted with only Power Apps, Power Automate, or Power Virtual Agents license:
Power Apps, Power Automate, or Power Virtual Agents licensed users can ‘create’ cases; can ‘read’, ‘update’ and ‘delete’ self-created cases to enable scenarios including employee self-service and case creation on behalf of customers. Power Apps, Power Automate, or Power Virtual Agents licensed users can only perform ‘read’ operation on cases created by other users. They cannot ‘update’, ‘resolve’, ‘route’, ‘close’,‘delete’,‘assign’,‘duplicate’, ‘merge’, ‘create child cases’ or perform any other custom operation on cases created by others. Users can’t act as a customer service agent, can’t manage cases.

Dynamics 365 Customer Engagement Plan and Dynamics 365 Plan licenses are no longer available for purchase and is referenced here only for the benefit of existing customers who have bought these licenses in the past.

Licensing

For more information on Power Apps, Power Automate, Power Virtual Agents, and Dynamics 365 licenses, see Licensing overview page.

Источник

Restricted Entity List definition

Related Definitions

Examples of Restricted Entity List in a sentence

For instance, the US government has routinely issued visas to students and research- ers to work in critical STEM fields who are directly tied to foreign military programs or other organizations on the Department of Commerce’s Restricted Entity List.

Reporting apparent violations under this requirement would not include, for example, timely disposition of client securities resulting from additions to the Restricted Entity List or upon becoming subject to the independence rules of the ISB, SEC or AICPA.

Member firms that have foreign-associated firms shall provide or otherwise make available the member firm ’s independence policies, required in paragraph 1, and its Restricted Entity List, required in paragraph 4, to its foreign-associated firms, including the partners and managers therein.

Each member firm shall designate a senior-level partner responsible for: (1) overseeing the adequate functioning of the independence policies of and the consultation process within the member firm; (2) providing or otherwise making the Restricted Entity List readily available to all professionals; (3) keeping the Restricted Entity List updated on at least a monthly basis; and (4) communicating additions to the Restricted Entity List on a timely basis (generally monthly).

This system contains an inventory of publicly available investments.Partners and all client-facing personnel who are manager grade or above are required to use the KICS system or the Restricted Entity List (REL) prior to entering into an investment to identify whether they are permitted to do so.

The member firm ’s policies should explain why, when and how SEC registrant audit clients (and other related entities as discussed above) are to be placed on the Restricted Entity List.

Prior to obtaining any security or other financial interest in an entity, professionals should review the Restricted Entity List to determine whether the entity is included thereon.

Источник

restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

прилагательное ↓

Мои примеры

Словосочетания

Примеры

You have entered a restricted area. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Вы вошли в запретную зону.

Entrance to universities was restricted. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Приём в университеты был ограничен.

It’s difficult trying to work in such a restricted space. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Трудно работать в таком ограниченном пространстве.

Certain information is restricted to government officials. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Доступ к определённой информации разрешён только правительственным чиновникам.

His power was restricted within narrow limits. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Его полномочия были очень ограничены.

In those days women led very restricted lives. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

В те времена жизнь женщин была весьма ограниченна.

They passed through the other company towns slowing down in the restricted zones. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Они проехали через городки, замедляя движение в зонах ограничения скорости.

Press freedom is severely restricted. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Свобода прессы жёстко ограничена.

Fowls are restricted to a narrow yard or run. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Домашние птицы содержатся в узком загоне или вольере.

That area is restricted to security personnel only. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

На этой территории могут находиться только сотрудники службы охраны.

No Entry — restricted area for army personnel only. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Вход воспрещён: запретная зона. Допускаются только военнослужащие.

What I’m going to tell you is restricted information. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

То, что я собираюсь сказать вам, является конфиденциальной информацией.

Access to the papers is restricted to senior management. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Доступ к этим документам — только для высшего руководства.

Under the dictatorship of Mussolini, personal freedom was restricted. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Во время дитатуры Муссолини личная свобода была ограничена.

Eligibility for five weeks’ holiday is restricted to senior management. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Право на пятинедельный отпуск предоставлено только высшему руководству.

The cramped living conditions severely restricted the children’s freedom to play. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Стеснённые жилищные условия серьёзно ограничивают детям возможность для игр.

There is restricted access to this information (=only certain people can have it). restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Доступ к этой информации ограничен (т.е. её могут получить только некоторые конкретные люди).

He is on a severely restricted diet. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Он соблюдает очень строгую диету. / Он — на очень строгой диете.

The damage is restricted to the left side of the brain. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Ущерб ограничен левой стороной мозга.

The plane was attacked as it flew over restricted airspace. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Самолет был атакован, когда пролетал над зоной ограниченного воздушного пространства.

The sale of alcohol is restricted to people over the age of 18. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Продажа алкоголя разрешена только людям старше восемнадцати лет.

The accident left her with restricted movement in her right leg. restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

После аварии подвижность её левой ноги была ограничена.

Источник

Шпаргалка Java программиста 1: JPA и Hibernate в вопросах и ответах

restricted entities что это. Смотреть фото restricted entities что это. Смотреть картинку restricted entities что это. Картинка про restricted entities что это. Фото restricted entities что это

Знаете ли вы JPA? А Hibernate? А если проверить?

За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.

Данная статья будет полезна и для тех кто только собирается изучать JPA и Hibernate (В этом случае рекомендую сразу открывать ответы), и для тех кто уже хорошо знает JPA и Hibernate (В этом случае статья позволит проверить свои знания и освежить особенности технологий). Особенно статья будет полезна тем кто собирается пройти техническое интервью, где возможно будут задавать вопросы по JPA и Hibernate (или сам собирается провести техническое интервью).

Рекомендую так считать правильные ответы: если вы ответили на вопрос по вашему мнению правильно и полностью — поставьте себе 1 балл, если ответили только частично — 0.5 балл. Везде где только возможно я старался добавлять цитаты из оригинальной документации (но из-за ограничений лицензии Oracle не могу давать слишком большие цитаты из документации).

Общие вопросы

JPA (Java Persistence API) это спецификация Java EE и Java SE, описывающая систему управления сохранением java объектов в таблицы реляционных баз данных в удобном виде. Сама Java не содержит реализации JPA, однако есть существует много реализаций данной спецификации от разных компаний (открытых и нет). Это не единственный способ сохранения java объектов в базы данных (ORM систем), но один из самых популярных в Java мире.

Entity это легковесный хранимый объект бизнес логики (persistent domain object). Основная программная сущность это entity класс, который так же может использовать дополнительные классы, который могут использоваться как вспомогательные классы или для сохранения состояния еntity.

И это тоже допустимо

Может, при этом он сохраняет все свойства Entity, за исключением того что его нельзя непосредственно инициализировать.

1) Entity класс должен быть отмечен аннотацией Entity или описан в XML файле конфигурации JPA,
2) Entity класс должен содержать public или protected конструктор без аргументов (он также может иметь конструкторы с аргументами),
3) Entity класс должен быть классом верхнего уровня (top-level class),
4) Entity класс не может быть enum или интерфейсом,
5) Entity класс не может быть финальным классом (final class),
6) Entity класс не может содержать финальные поля или методы, если они участвуют в маппинге (persistent final methods or persistent final instance variables),
7) Если объект Entity класса будет передаваться по значению как отдельный объект (detached object), например через удаленный интерфейс (through a remote interface), он так же должен реализовывать Serializable интерфейс,
8) Поля Entity класс должны быть напрямую доступны только методам самого Entity класса и не должны быть напрямую доступны другим классам, использующим этот Entity. Такие классы должны обращаться только к методам (getter/setter методам или другим методам бизнес-логики в Entity классе),
9) Enity класс должен содержать первичный ключ, то есть атрибут или группу атрибутов которые уникально определяют запись этого Enity класса в базе данных,

JPA указывает что она может работать как с свойствами классов (property), оформленные в стиле JavaBeans, либо с полями (field), то есть переменными класса (instance variables). Соответственно, при этом тип доступа будет либо property access или field access.

JPA указывает что она может работать как с свойствами классов (property), оформленные в стиле JavaBeans, либо с полями (field), то есть переменными класса (instance variables). Оба типа элементов Entity класса называются атрибутами Entity класса.

Допустимые типы атрибутов у Entity классов:
1. примитивные типы и их обертки Java,
2. строки,
3. любые сериализуемые типы Java (реализующие Serializable интерфейс),
4. enums;
5. entity types;
6. embeddable классы
7. и коллекции типов 1-6

Допустимые типы атрибутов, входящих в первичный ключ:
1. примитивные типы и их обертки Java,
2. строки,
3. BigDecimal и BigInteger,
4. java.util.Date и java.sql.Date,

В случае автогенерируемого первичного ключа (generated primary keys) допустимы
1. только числовые типы,

В случае использования других типов данных в первичном ключе, он может работать только для некоторых баз данных, т.е. становится не переносимым (not portable),

Сложные структуры JPA

Встраиваемый (Embeddable) класс это класс который не используется сам по себе, только как часть одного или нескольких Entity классов. Entity класс могут содержать как одиночные встраиваемые классы, так и коллекции таких классов. Также такие классы могут быть использованы как ключи или значения map. Во время выполнения каждый встраиваемый класс принадлежит только одному объекту Entity класса и не может быть использован для передачи данных между объектами Entity классов (то есть такой класс не является общей структурой данных для разных объектов). В целом, такой класс служит для того чтобы выносить определение общих атрибутов для нескольких Entity, можно считать что JPA просто встраивает в Entity вместо объекта такого класса те атрибуты, которые он содержит.

Может, но только в случае если такой класс не используется как первичный ключ или ключ map’ы.

1. Такие классы должны удовлетворять тем же правилам что Entity классы, за исключением того что они не обязаны содержать первичный ключ и быть отмечены аннотацией Entity (см. вопрос 10),
2. Embeddable класс должен быть отмечен аннотацией Embeddable или описан в XML файле конфигурации JPA,

Существуют следующие четыре типа связей
1. OneToOne (связь один к одному, то есть один объект Entity может связан не больше чем с один объектом другого Entity ),
2. OneToMany (связь один ко многим, один объект Entity может быть связан с целой коллекцией других Entity),
3. ManyToOne (связь многие к одному, обратная связь для OneToMany),
4. ManyToMany (связь многие ко многим)

Каждую из которых можно разделить ещё на два вида:
1. Bidirectional
2. Unidirectional

Bidirectional — ссылка на связь устанавливается у всех Entity, то есть в случае OneToOne A-B в Entity A есть ссылка на Entity B, в Entity B есть ссылка на Entity A, Entity A считается владельцем этой связи (это важно для случаев каскадного удаления данных, тогда при удалении A также будет удалено B, но не наоборот).

Undirectional- ссылка на связь устанавливается только с одной стороны, то есть в случае OneToOne A-B только у Entity A будет ссылка на Entity B, у Entity B ссылки на A не будет.

Mapped Superclass это класс от которого наследуются Entity, он может содержать анотации JPA, однако сам такой класс не является Entity, ему не обязательно выполнять все требования установленные для Entity (например, он может не содержать первичного ключа). Такой класс не может использоваться в операциях EntityManager или Query. Такой класс должен быть отмечен аннотацией MappedSuperclass или соответственно описан в xml файле.

Example: Concrete class as a mapped superclass

В JPA описаны три стратегии наследования мапинга (Inheritance Mapping Strategies), то есть как JPA будет работать с классами-наследниками Entity:
1) одна таблица на всю иерархию наследования (a single table per class hierarchy) — все enity, со всеми наследниками записываются в одну таблицу, для идентификации типа entity определяется специальная колонка “discriminator column”. Например, если есть entity Animals c классами-потомками Cats и Dogs, при такой стратегии все entity записываются в таблицу Animals, но при это имеют дополнительную колонку animalType в которую соответственно пишется значение «cat» или «dog». Минусом является то что в общей таблице, будут созданы все поля уникальные для каждого из классов-потомков, которые будет пусты для всех других классов-потомков. Например, в таблице animals окажется и скорость лазанья по дереву от cats и может ли пес приносить тапки от dogs, которые будут всегда иметь null для dog и cat соотвественно.

2) объединяющая стратегия (joined subclass strategy) — в этой стратегии каждый класс enity сохраняет данные в свою таблицу, но только уникальные колонки (не унаследованные от классов-предков) и первичный ключ, а все унаследованные колонки записываются в таблицы класса-предка, дополнительно устанавливается связь (relationships) между этими таблицами, например в случае классов Animals (см.выше), будут три таблицы animals, cats, dogs, причем в cats будет записана только ключ и скорость лазанья, в dogs — ключ и умеет ли пес приносить палку, а в animals все остальные данные cats и dogs c ссылкой на соответствующие таблицы. Минусом тут являются потери производительности от объединения таблиц (join) для любых операций.

3) одна таблица для каждого класса (table per concrete class strategy) — тут все просто каждый отдельный класс-наследник имеет свою таблицу, т.е. для cats и dogs (см.выше) все данные будут записываться просто в таблицы cats и dogs как если бы они вообще не имели общего суперкласса. Минусом является плохая поддержка полиморфизма (polymorphic relationships) и то что для выборки всех классов иерархии потребуются большое количество отдельных sql запросов или использование UNION запроса.

Для задания стратегии наследования используется аннотация Inheritance (или соответствующие блоки
Java Persistence 2.1. Chapter 2.12, J7EE javadoc

В JPA описаны два типа fetch стратегии:
1) LAZY — данные поля будут загруженны только во время первого доступа к этому полю,
2) EAGER — данные поля будут загруженны немедленно,

Основные операции с Entity

EntityManager это интерфейс, который описывает API для всех основных операций над Enitity, получение данных и других сущностей JPA. По сути главный API для работы с JPA. Основные операции:
1) Для операций над Entity: persist (добавление Entity под управление JPA), merge (обновление), remove (удаления), refresh (обновление данных), detach (удаление из управление JPA), lock (блокирование Enity от изменений в других thread),
2) Получение данных: find (поиск и получение Entity), createQuery, createNamedQuery, createNativeQuery, contains, createNamedStoredProcedureQuery, createStoredProcedureQuery
3) Получение других сущностей JPA: getTransaction, getEntityManagerFactory, getCriteriaBuilder, getMetamodel, getDelegate
4) Работа с EntityGraph: createEntityGraph, getEntityGraph
4) Общие операции над EntityManager или всеми Entities: close, isOpen, getProperties, setProperty, clear

Interface used to interact with the persistence context.
An EntityManager instance is associated with a persistence context. A persistence context is a set of entity instances in which for any persistent entity identity there is a unique entity instance. Within the persistence context, the entity instances and their lifecycle are managed. The EntityManager API is used to create and remove persistent entity instances, to find entities by their primary key, and to query over entities.

The set of entities that can be managed by a given EntityManager instance is defined by a persistence unit. A persistence unit defines the set of all classes that are related or grouped by the application, and which must be colocated in their mapping to a single database.

У Entity объекта существует четыре статуса жизненного цикла: new, managed, detached, или removed. Их описание
1) new — объект создан, но при этом ещё не имеет сгенерированных первичных ключей и пока ещё не сохранен в базе данных,
2) managed — объект создан, управляется JPA, имеет сгенерированные первичные ключи,
3) detached — объект был создан, но не управляется (или больше не управляется) JPA,
4) removed — объект создан, управляется JPA, но будет удален после commit’a транзакции.

An entity instance can be characterized as being new, managed, detached, or removed.

• A new entity instance has no persistent identity, and is not yet associated with a persistence context.
• A managed entity instance is an instance with a persistent identity that is currently associated with a persistence context.
• A detached entity instance is an instance with a persistent identity that is not (or no longer) associated with a persistence context.
• A removed entity instance is an instance with a persistent identity, associated with a persistence context, that will be removed from the database upon transaction commit.

1) Если статус Entity new, то он меняется на managed и объект будет сохранен в базу при commit’е транзакции или в результате flush операций,
2) Если статус уже managed, операция игнорируется, однако зависимые Entity могут поменять статус на managed, если у них есть аннотации каскадных изменений,
3) Если статус removed, то он меняется на managed,
4) Если статус detached, будет выкинут exception сразу или на этапе commit’а транзакции,

1) Если статус Entity new, операция игнорируется, однако зависимые Entity могут поменять статус на removed, если у них есть аннотации каскадных изменений и они имели статус managed,
2) Если статус managed, то статус меняется на removed и запись объект в базе данных будет удалена при commit’е транзакции (так же произойдут операции remove для всех каскадно зависимых объектов),
3) Если статус removed, то операция игнорируется,
4) Если статус detached, будет выкинут exception сразу или на этапе commit’а транзакции,

1) Если статус detached, то либо данные будет скопированы в существующей managed entity с тем же первичным ключом, либо создан новый managed в который скопируются данные,
1) Если статус Entity new, то будет создана новый managed entity, в который будут скопированы данные прошлого объекта,
2) Если статус managed, операция игнорируется, однако операция merge сработает на каскадно зависимые Entity, если их статус не managed,
3) Если статус removed, будет выкинут exception сразу или на этапе commit’а транзакции,

1) Если статус Entity managed, то в результате операции будут востановлены все изменения из базы данных данного Entity, так же произойдет refresh всех каскадно зависимых объектов,
2) Если статус new, removed или detached, будет выкинут exception,

1) Если статус Entity managed или removed, то в результате операции статус Entity (и всех каскадно-зависимых объектов) станет detached.
2) Если статус new или detached, то операция игнорируется,

Аннотации JPA

Она определяет тип доступа (access type) для класса entity, суперкласса, embeddable или отдельных атрибутов, то есть как JPA будет обращаться к атрибутам entity, как к полям класса (FIELD) или как к свойствам класса (PROPERTY), имеющие гетеры (getter) и сетеры (setter).

Для такого перекрывания существует четыре аннотации:
1. AttributeOverride чтобы перекрыть поля, свойства и первичные ключи,
2. AttributeOverrides аналогично можно перекрыть поля, свойства и первичные ключи со множественными значениями,
3. AssociationOverride чтобы перекрывать связи (override entity relationship),
4. AssociationOverrides чтобы перекрывать множественные связи (multiple relationship),

Example 2: Overriding of the mapping for the phoneNumbers relationship defined in the ContactInfo
embeddable class.

The Cacheable annotation specifies whether an entity should be cached if caching is enabled when
the value of the persistence.xml shared-cache-mode element is ENABLE_SELECTIVE or
DISABLE_SELECTIVE. The value of the Cacheable annotation is inherited by subclasses; it can be
overridden by specifying Cacheable on a subclass.

Cacheable(false) means that the entity and its state must not be cached by the provider.
If the shared-cache-mode element is not specified in the persistence.xml file and the
javax.persistence.sharedCache.mode property is not specified when the entity manager
factory for the persistence unit is created, the semantics of the Cacheable annotation are undefined.

Convert и Converts — позволяют указать класс для конвертации Basic аттрибута Entity в другой тип (Converts — позволяют указать несколько классов конвертации). Классы для конвертации должны реализовать интерфейс AttributeConverter и могут быть отмечены (но это не обязательно) аннотацией Converter.

Аннотация EntityListeners позволяет задать класс Listener, который будет содержать методы обработки событий (сallback methods) определенных Entity или Mapped Superclass.

Callback методы служат для вызова при определенных событиях Entity (то есть добавить обработку например удаления Entity методами JPA), могут быть добавлены к entity классу, к mapped superclass, или к callback listener классу, заданному аннотацией EntityListeners (см предыдущий вопрос). Существует семь callback методов (и аннотаций с теми же именами):

1) PrePersist
2) PostPersist
3) PreRemove
4) PostRemove
5) PreUpdate
6) PostUpdate
7) PostLoad

Подробнее, см Javadoc 7ee или спецификация JPA2.1 глава 3.5.2

Для этого служит аннотация OrderBy и OrderColumn

Подробнее, см Javadoc 7ee или спецификация JPA2.1 глава 11.1.42

Для этого служит аннотация Transient

Подробнее, см Javadoc 7ee или спецификация JPA2.1 глава 11.1.52

Сложные вопросы JPA

У JPA есть шесть видов блокировок, перечислим их в порядке увеличения надежности (от самого ненадежного и быстрого, до самого надежного и медленного):

1) NONE — без блокировки
2) OPTIMISTIC (или синоним READ, оставшийся от JPA 1) — оптимистическая блокировка,
3) OPTIMISTIC_FORCE_INCREMENT (или синоним WRITE, оставшийся от JPA 1) — оптимистическая блокировка с принудительным увеличением поля версионности,
4) PESSIMISTIC_READ — пессимистичная блокировка на чтение,
5) PESSIMISTIC_WRITE — пессимистичная блокировка на запись (и чтение),
6) PESSIMISTIC_FORCE_INCREMENT — пессимистичная блокировка на запись (и чтение) с принудительным увеличением поля версионности,

Подробнее, см Javadoc 7ee и описание оптимистичных и пессимистичных блокировок баз данных.

JPA говорит о двух видов кэшей (cache):
1) first-level cache (кэш первого уровня) — кэширует данные одной транзакции,
2) second-level cache (кэш второго уровня) — кэширует данные дольше чем одна транзакция. Провайдер JPA может, но не обязан реализовывать работу с кэшем второго уровня. Такой вид кэша позволяет сэкономить время доступа и улучшить производительность, однако оборотной стороной является возможность получить устаревшие данные.

Подробнее, см JPA 2.1 specification, 3.9 Caching

JPA говорит о пяти значениях shared-cache-mode из persistence.xml, который определяет как будет использоваться second-level cache:
1) ALL — все Entity могут кэшироваться в кеше второго уровня,
2) NONE — кеширование отключено для всех Entity,
3) ENABLE_SELECTIVE — кэширование работает только для тех Entity, у которых установлена аннотация Cacheable(true) или её xml эквивалент, для всех остальных кэширование отключено,
4) DISABLE_SELECTIVE — кэширование работает для всех Entity, за исключением тех у которых установлена аннотация Cacheable(false) или её xml эквивалент
5) UNSPECIFIED — кеширование не определенно, каждый провайдер JPA использует свою значение по умолчанию для кэширования,

Подробнее, см JPA 2.1 specification, 3.9 Caching

Для этого существует EntityGraph API, используется он так: с помощью аннотации NamedEntityGraph для Entity, создаются именованные EntityGraph объекты, которые содержат список атрибутов у которых нужно поменять fetchType на EAGER, а потом данное имя указывается в hits запросов или метода find. В результате fetchType атрибутов Entity меняется, но только для этого запроса. Существует две стандартных property для указания EntityGraph в hit:
1) javax.persistence.fetchgraph — все атрибуты перечисленные в EntityGraph меняют fetchType на EAGER, все остальные на LAZY
2) javax.persistence.loadgraph — все атрибуты перечисленные в EntityGraph меняют fetchType на EAGER, все остальные сохраняют свой fetchType (то есть если у атрибута, не указанного в EntityGraph, fetchType был EAGER, то он и останется EAGER)

С помощью NamedSubgraph можно также изменить fetchType вложенных объектов Entity.

Подробнее, см JPA 2.1 specification, 3.7 EntityGraph

Для работы с кэшем второго уровня (second level cache) в JPA описан Cache интерфейс, содержащий большое количество методов по управлению кэшем второго уровня (second level cache), если он поддерживается провайдером JPA, конечно. Объект данного интерфейса можно получить с помощью метода getCache у EntityManagerFactory.

Подробнее, см JPA 2.1 specification, 7.10 Cache Interface

Для получения такой информации в JPA используется интерфейс Metamodel. Объект этого интерфейса можно получить методом getMetamodel у EntityManagerFactory или EntityManager.

Подробнее, см JPA 2.1 specification, 5 Metamodel API

JPQL (Java Persistence query language) это язык запросов, практически такой же как SQL, однако вместо имен и колонок таблиц базы данных, он использует имена классов Entity и их атрибуты. В качестве параметров запросов так же используются типы данных атрибутов Entity, а не полей баз данных. В отличии от SQL в JPQL есть автоматический полиморфизм (см. следующий вопрос). Также в JPQL используется функции которых нет в SQL: такие как KEY (ключ Map’ы), VALUE (значение Map’ы), TREAT (для приведение суперкласса к его объекту-наследнику, downcasting), ENTRY и т.п.

Подробнее, см JPA 2.1 specification, Chapter 4 Query Language

В отличии от SQL в запросах JPQL есть автоматический полиморфизм, то есть каждый запрос к Entity возвращает не только объекты этого Entity, но так же объекты всех его классов-потомков, независимо от стратегии наследования (например, запрос select * from Animal, вернет не только объекты Animal, но и объекты классов Cat и Dog, которые унаследованы от Animal). Чтобы исключить такое поведение используется функция TYPE в where условии (например select * from Animal a where TYPE(a) IN (Animal, Cat) уже не вернет объекты класса Dog).

Подробнее, см JPA 2.1 specification, Chapter 4 Query Language

Criteria API это тоже язык запросов, аналогичным JPQL (Java Persistence query language), однако запросы основаны на методах и объектах, то есть запросы выглядят так:

Подробнее, см JPA 2.1 specification, Chapter 6 Criteria API

Отличия Hibernate 5.0 от JPA 2.1 или JPA 2.0 от JPA 2.1

1) Конструктор без аргументов не обязан быть public или protected, рекомендуется чтобы он был хотя бы package видимости, однако это только рекомендация, если настройки безопасности Java позволяют доступ к приватным полям, то он может быть приватным,
2) JPA категорически требует не использовать final классы, Hibernate лишь рекомендует не использовать такие классы чтобы он мог создавать прокси для ленивой загрузки, однако позволяет либо выключить прокси Proxy(lazy=false), либо использовать в качестве прокси интерфейс, содержащий все методы маппинга для данного класса (аннотацией Proxy(proxyClass=интерфейс.class) )

В отличии JPA в Hibernate есть уникальная стратегия наследования, которая называется implicit polymorphism.

Hibernate supports the three basic inheritance mapping strategies:

table per class hierarchy
table per subclass
table per concrete class
In addition, Hibernate supports a fourth, slightly different kind of polymorphism:

В спецификации JPA 2.1 появились:
1) Entity Graphs — механизм динамического изменения fetchType для каждого запроса,
2) Converters — механизм определения конвертеров для задания функций конвертации атрибутов Entity в поля базы данных,
3) DDL генерация — автоматическая генерация таблиц, индексов и схем,
4) Stored Procedures — механизм вызова хранимых процедур из JPA,
5) Criteria Update/Delete — механизм вызова bulk updates или deletes, используя Criteria API,
6) Unsynchronized persistence contexts — появление возможности указать SynchronizationType,
7) Новые возможности в JPQL/Criteria API: арифметические подзапросы, generic database functions, join ON clause, функция TREAT,
8) Динамическое создание именованных запросов (named queries)

Подробнее о изменении интерфейсов и API в JPA 2.1:
1) Интерфейс EntityManager получил новые методы createStoredProcedureQuery, isJoinedToTransaction и createQuery(CriteriaUpdate или CriteriaDelete)
2) Абстрактный класс AbstractQuery стал наследоваться от класса CommonAbstractCriteria, появились новые интерфейсы CriteriaUpdate, CriteriaDelete унаследованные CommonAbstractCriteria,
3) PersistenceProvider получил новые функции generateSchema позволяющие генерить схемы,
4) EntityManagerFactory получил методы addNamedQuery, unwrap, addNamedEntityGraph, createEntityManager (с указанием SynchronizationType)
5) Появился новый enum SynchronizationType, Entity Graphs, StoredProcedureQuery и AttributeConverter интерфейсы,

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *