🗊Презентация Database usage in java object-relational mapping. (Лекция 8)

Нажмите для полного просмотра!
Database usage in java object-relational mapping. (Лекция 8), слайд №1Database usage in java object-relational mapping. (Лекция 8), слайд №2Database usage in java object-relational mapping. (Лекция 8), слайд №3Database usage in java object-relational mapping. (Лекция 8), слайд №4Database usage in java object-relational mapping. (Лекция 8), слайд №5Database usage in java object-relational mapping. (Лекция 8), слайд №6Database usage in java object-relational mapping. (Лекция 8), слайд №7Database usage in java object-relational mapping. (Лекция 8), слайд №8Database usage in java object-relational mapping. (Лекция 8), слайд №9Database usage in java object-relational mapping. (Лекция 8), слайд №10Database usage in java object-relational mapping. (Лекция 8), слайд №11Database usage in java object-relational mapping. (Лекция 8), слайд №12Database usage in java object-relational mapping. (Лекция 8), слайд №13Database usage in java object-relational mapping. (Лекция 8), слайд №14Database usage in java object-relational mapping. (Лекция 8), слайд №15Database usage in java object-relational mapping. (Лекция 8), слайд №16Database usage in java object-relational mapping. (Лекция 8), слайд №17Database usage in java object-relational mapping. (Лекция 8), слайд №18Database usage in java object-relational mapping. (Лекция 8), слайд №19Database usage in java object-relational mapping. (Лекция 8), слайд №20Database usage in java object-relational mapping. (Лекция 8), слайд №21Database usage in java object-relational mapping. (Лекция 8), слайд №22Database usage in java object-relational mapping. (Лекция 8), слайд №23Database usage in java object-relational mapping. (Лекция 8), слайд №24Database usage in java object-relational mapping. (Лекция 8), слайд №25Database usage in java object-relational mapping. (Лекция 8), слайд №26Database usage in java object-relational mapping. (Лекция 8), слайд №27Database usage in java object-relational mapping. (Лекция 8), слайд №28Database usage in java object-relational mapping. (Лекция 8), слайд №29Database usage in java object-relational mapping. (Лекция 8), слайд №30Database usage in java object-relational mapping. (Лекция 8), слайд №31Database usage in java object-relational mapping. (Лекция 8), слайд №32Database usage in java object-relational mapping. (Лекция 8), слайд №33

Вы можете ознакомиться и скачать презентацию на тему Database usage in java object-relational mapping. (Лекция 8). Доклад-сообщение содержит 33 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Java Lecture #8

Database Usage in Java:
Object-Relational Mapping
Saint Petersburg, 2012
Описание слайда:
Java Lecture #8 Database Usage in Java: Object-Relational Mapping Saint Petersburg, 2012

Слайд 2





Persistence
	

	Под Persistence понимается методы которые описывает действия работы с данными некотрого процесса
	В Java существует много способов работы с данными:
	JDBC
	Serialization
	File IO
	JCA
Описание слайда:
Persistence Под Persistence понимается методы которые описывает действия работы с данными некотрого процесса В Java существует много способов работы с данными: JDBC Serialization File IO JCA

Слайд 3





JPA
	Java Persistence Architecture API (JPA) это Java спецификация для доступа, сохранения и манипулирования  данными между Java обьектами и релиационной базой данных.	
	JPA было представленно как часть спецификации EJB 3.0 как замена EJB 2 CMP Entity Beans. Сейчас  JPA  это промышленный стандарт ORM (Object to Relational Mapping )
 	JPA состоит из следующих основных разделов:
The Java Persistence API
The query language
The Java Persistence Criteria API
Object/relational mapping metadata
Описание слайда:
JPA Java Persistence Architecture API (JPA) это Java спецификация для доступа, сохранения и манипулирования данными между Java обьектами и релиационной базой данных. JPA было представленно как часть спецификации EJB 3.0 как замена EJB 2 CMP Entity Beans. Сейчас JPA это промышленный стандарт ORM (Object to Relational Mapping )   JPA состоит из следующих основных разделов: The Java Persistence API The query language The Java Persistence Criteria API Object/relational mapping metadata

Слайд 4





Entities

	Энтити это легковесные доменные обьекты. Обычно энтити представляют таблицу в релиацонной базе данных., каждый инстанс энтити представляет собой запись в таблице.. 
	Энтити должны удовлетворять следующим требованиям.
Должны быть анотированны javax.persistence.Entity.
Должен быть публичный конструктор по умолчанию. Но при этом класс может иметь и другие конструкторы.
Класс не должен быть final, поля и методы для работы с персистентными данными тоже
Если энтити будет использоваться в ремоутном бизнесс интерфейсе то она должна реализовывать интерфейс Serializable.
Энтити могут расширять как другие энтити, так и обычные классы.
Описание слайда:
Entities Энтити это легковесные доменные обьекты. Обычно энтити представляют таблицу в релиацонной базе данных., каждый инстанс энтити представляет собой запись в таблице..  Энтити должны удовлетворять следующим требованиям. Должны быть анотированны javax.persistence.Entity. Должен быть публичный конструктор по умолчанию. Но при этом класс может иметь и другие конструкторы. Класс не должен быть final, поля и методы для работы с персистентными данными тоже Если энтити будет использоваться в ремоутном бизнесс интерфейсе то она должна реализовывать интерфейс Serializable. Энтити могут расширять как другие энтити, так и обычные классы.

Слайд 5





Интерфейс EntityManager


	Энтити управляються при помощи EntityManager, который  ассоциируеться с персистент контекстом – набором  managed entity.
EntityManager API   CRUD операции + запросы :
persist (INSERT)
merge (UPDATE)
remove (DELETE)
find (SELECT)
...
Описание слайда:
Интерфейс EntityManager Энтити управляються при помощи EntityManager, который ассоциируеться с персистент контекстом – набором managed entity. EntityManager API CRUD операции + запросы : persist (INSERT) merge (UPDATE) remove (DELETE) find (SELECT) ...

Слайд 6





Типы EntityManager


	Существуют два типа EntityManager :

Container-Managed Entity Managers – контролируется автоматически J2EE контейнером. Использует JTA для работы с транзакциями.
@PersistenceContext 
EntityManager em;

Application-Managed Entity Managers – контролируеться пользовательским приложением .
Описание слайда:
Типы EntityManager Существуют два типа EntityManager : Container-Managed Entity Managers – контролируется автоматически J2EE контейнером. Использует JTA для работы с транзакциями. @PersistenceContext EntityManager em; Application-Managed Entity Managers – контролируеться пользовательским приложением .

Слайд 7





Application-Managed Entity Managers 


	 
	 EntityManager em = ...
	....
	EntityTransaction trx = em.getTransaction();
	try {
		 trx.begin(); 
			// Operations that modify the database should come here. 	
		 trx.commit(); 
	} finally
	 {
	 if (trx.isActive()) 
		 trx.rollback(); 
	}
Описание слайда:
Application-Managed Entity Managers EntityManager em = ... .... EntityTransaction trx = em.getTransaction(); try { trx.begin(); // Operations that modify the database should come here. trx.commit(); } finally { if (trx.isActive()) trx.rollback(); }

Слайд 8





Persistence Units
Описание слайда:
Persistence Units

Слайд 9





EntityManager lifecycle
Описание слайда:
EntityManager lifecycle

Слайд 10





EntityManager lifecycle annatation
Описание слайда:
EntityManager lifecycle annatation

Слайд 11





Entities

	Persistent Fields and Properties in Entity Classes
	Состояние объекта храниться в полях и свойствах обьекта, которые могут быть:
Java приметивы
java.lang.String
Реализующие serializable types, including:
Враперы примитивов
java.util.Date
java.math.BigDecimal
…
Энумераторы
Другие энтити или коллекции из энтитей
Embeddable классы
Описание слайда:
Entities Persistent Fields and Properties in Entity Classes Состояние объекта храниться в полях и свойствах обьекта, которые могут быть: Java приметивы java.lang.String Реализующие serializable types, including: Враперы примитивов java.util.Date java.math.BigDecimal … Энумераторы Другие энтити или коллекции из энтитей Embeddable классы

Слайд 12





Persistent Properties


Сигнатура доступа к персистентному полю должна быть следующей:
getProperty() void setProperty(Type type)
Использование коллекций в качестве персистентных полей.
	Могут использоваться следующие интерфейсы коллекций:
java.util.Collection
java.util.Set
java.util.List
java.util.Map
Описание слайда:
Persistent Properties Сигнатура доступа к персистентному полю должна быть следующей: getProperty() void setProperty(Type type) Использование коллекций в качестве персистентных полей. Могут использоваться следующие интерфейсы коллекций: java.util.Collection java.util.Set java.util.List java.util.Map

Слайд 13





Validating Persistent Fields and Properties



	
	Для персистентных полей может использоваться Bean Validation API который предостовляеть механизм верификации данных энтити.
    @AssertFalse boolean isUnsupported; @AssertTrue boolean isActive; @DecimalMax("30.00") BigDecimal discount; @DecimalMin("5.00") BigDecimal discount; @Digits(integer=6, fraction=2) BigDecimal price; @Future Date eventDate; @Max(10) int quantity; @Min(5) int quantity; @NotNull String username; @Null String unusedString; @Past Date birthday; Pattern(regexp="\\(\\d{3}\\)\\d{3}-\\d{4}") String phoneNumber; @Size(min=2, max=240) String briefMessage;
Описание слайда:
Validating Persistent Fields and Properties Для персистентных полей может использоваться Bean Validation API который предостовляеть механизм верификации данных энтити. @AssertFalse boolean isUnsupported; @AssertTrue boolean isActive; @DecimalMax("30.00") BigDecimal discount; @DecimalMin("5.00") BigDecimal discount; @Digits(integer=6, fraction=2) BigDecimal price; @Future Date eventDate; @Max(10) int quantity; @Min(5) int quantity; @NotNull String username; @Null String unusedString; @Past Date birthday; Pattern(regexp="\\(\\d{3}\\)\\d{3}-\\d{4}") String phoneNumber; @Size(min=2, max=240) String briefMessage;

Слайд 14





@Entity @Table @Column



@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "NAME", "SURNAME" }), name = "EMPLOYEE")
public class Employee {
	@Id
	private long id;
	@Column(name = "NAME", nullable = false, length = 20)
	private String name;
	@Column(name = "SURNAME", nullable = false, length = 20)
	private String surname;
	…
}
Описание слайда:
@Entity @Table @Column @Entity @Table(uniqueConstraints = @UniqueConstraint(columnNames = { "NAME", "SURNAME" }), name = "EMPLOYEE") public class Employee { @Id private long id; @Column(name = "NAME", nullable = false, length = 20) private String name; @Column(name = "SURNAME", nullable = false, length = 20) private String surname; … }

Слайд 15





Primary Keys in Entities




	Каждая Entity должна иметь уникальный идентификатор (первичный ключ), например:
     Простой первичный ключ
	@Id
	private long id;

	Первичный ключ может быть: примитивный тип, врапер примитивного типа, String, Date, BigDecimal, BigInteger.
	Компзитный первичный ключ  (ProjectId.class).

	 Embedded первичный ключ ()
	должен переопределять hashCode()  и equals(Object other),  реализовывать serializable.
Описание слайда:
Primary Keys in Entities Каждая Entity должна иметь уникальный идентификатор (первичный ключ), например: Простой первичный ключ @Id private long id; Первичный ключ может быть: примитивный тип, врапер примитивного типа, String, Date, BigDecimal, BigInteger. Компзитный первичный ключ (ProjectId.class). Embedded первичный ключ () должен переопределять hashCode()  и equals(Object other), реализовывать serializable.

Слайд 16





 Entity Relationships





	Существуют следующие отношения между энтити в JPA
One-to-one: при этом каждый экземпляр одного класса энтити имеет ссылку на экземпля  инстанса другой энтити. @OneToOne
One-to-many: при этом инстанс одной энтити имеет ссылку на коллекцию инстансов другой энтити. @OneToMany
Many-to-one: несколько инстансов одной энтити имеют ссылку на однин инстанс другой. @Many-to-one
Many-to-many: несколько инстансов одной энтити имеют ссылки на несколько инстансов другой. @ManyToMany
	Отношения могут быть однонаправленными и двунаправленными:
	Двунаправленные связи для  @OneToOne, @OneToMany, @ManyToMany должны использовать mappedBy для ссылки на поле обратное поле.
Описание слайда:
 Entity Relationships Существуют следующие отношения между энтити в JPA One-to-one: при этом каждый экземпляр одного класса энтити имеет ссылку на экземпля инстанса другой энтити. @OneToOne One-to-many: при этом инстанс одной энтити имеет ссылку на коллекцию инстансов другой энтити. @OneToMany Many-to-one: несколько инстансов одной энтити имеют ссылку на однин инстанс другой. @Many-to-one Many-to-many: несколько инстансов одной энтити имеют ссылки на несколько инстансов другой. @ManyToMany Отношения могут быть однонаправленными и двунаправленными: Двунаправленные связи для @OneToOne, @OneToMany, @ManyToMany должны использовать mappedBy для ссылки на поле обратное поле.

Слайд 17





  One-to-many и Many-to-many: 





@ManyToOne
private WorkGroup workGroup;

@OneToMany(mappedBy = "workGroup")
private List<Student> student;
Описание слайда:
  One-to-many и Many-to-many: @ManyToOne private WorkGroup workGroup; @OneToMany(mappedBy = "workGroup") private List<Student> student;

Слайд 18





 Отношения и каскадные операции
Описание слайда:
 Отношения и каскадные операции

Слайд 19





  @OneToOne 





@Entity
public class Address {
	@OneToOne
	@PrimaryKeyJoinColumn
	private Student student; 

@Entity
public class Student {
	@OneToOne(mappedBy = "student")
	private Address address;
Описание слайда:
  @OneToOne @Entity public class Address { @OneToOne @PrimaryKeyJoinColumn private Student student; @Entity public class Student { @OneToOne(mappedBy = "student") private Address address;

Слайд 20





  @ManyToMany 





class Lection {
@ManyToMany(mappedBy="lections")
private List<Student> students;
class Student {
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="SHEDULE",  joinColumns={@JoinColumn(name="STUDENTID")}, 
inverseJoinColumns={@JoinColumn(name="LECTIONID")})
private List<Lection> lections;
Описание слайда:
  @ManyToMany class Lection { @ManyToMany(mappedBy="lections") private List<Student> students; class Student { @ManyToMany(cascade = {CascadeType.ALL}) @JoinTable(name="SHEDULE", joinColumns={@JoinColumn(name="STUDENTID")}, inverseJoinColumns={@JoinColumn(name="LECTIONID")}) private List<Lection> lections;

Слайд 21





@ElementCollection 





@Entity
public class Person {
    //can be used to define a one-to-many relationship to an Embeddable object, or a Basic value (such //as a collection of Strings) and  can also be used in combination with a Map
	@ElementCollection
	@MapKeyEnumerated
	private Map<PhoneType ,Phone> phones;
@Embeddable
public class Phone {
	@Enumerated(EnumType.STRING)
	private PhoneType type; 	
    private String areaCode;
    @Column(name = "P_NUMBER")
    private String number;
public enum PhoneType {    HOME, WORK, MOBILE …
Описание слайда:
@ElementCollection @Entity public class Person { //can be used to define a one-to-many relationship to an Embeddable object, or a Basic value (such //as a collection of Strings) and  can also be used in combination with a Map @ElementCollection @MapKeyEnumerated private Map<PhoneType ,Phone> phones; @Embeddable public class Phone { @Enumerated(EnumType.STRING) private PhoneType type; private String areaCode; @Column(name = "P_NUMBER") private String number; public enum PhoneType { HOME, WORK, MOBILE …

Слайд 22





Embeddable Classes
 
 





@Entity
public class Employee { 
	@Embedded
	private Skill skill; 

@Embeddable
public class Skill {
	private String skillName;
	private String skillLevel; 	
CREATE TABLE APP.EMPLOYEE ( ID BIGINT NOT NULL,
NAME VARCHAR(20) NOT NULL,
SKILLLEVEL VARCHAR(255),
SKILLNAME VARCHAR(255),
SURNAME VARCHAR(20) NOT NULL
Описание слайда:
Embeddable Classes @Entity public class Employee { @Embedded private Skill skill; @Embeddable public class Skill { private String skillName; private String skillLevel; CREATE TABLE APP.EMPLOYEE ( ID BIGINT NOT NULL, NAME VARCHAR(20) NOT NULL, SKILLLEVEL VARCHAR(255), SKILLNAME VARCHAR(255), SURNAME VARCHAR(20) NOT NULL

Слайд 23





Embeddable Classes
 
 





@Entity
public class Employee { 
	@Embedded
	private Skill skill; 

@Embeddable
public class Skill {
	private String skillName;
	private String skillLevel; 	
CREATE TABLE APP.EMPLOYEE ( ID BIGINT NOT NULL,
NAME VARCHAR(20) NOT NULL,
SKILLLEVEL VARCHAR(255),
SKILLNAME VARCHAR(255),
SURNAME VARCHAR(20) NOT NULL
Описание слайда:
Embeddable Classes @Entity public class Employee { @Embedded private Skill skill; @Embeddable public class Skill { private String skillName; private String skillLevel; CREATE TABLE APP.EMPLOYEE ( ID BIGINT NOT NULL, NAME VARCHAR(20) NOT NULL, SKILLLEVEL VARCHAR(255), SKILLNAME VARCHAR(255), SURNAME VARCHAR(20) NOT NULL

Слайд 24





Entity Inheritance: Abstract Entities


 
 





	Абстрактная энтити может быть определена при помощи абстрактного класса с аннотацией @Entity. 
	Если абстрактная энтити выступает в качестве параметра запроса или связанна отношением с другой энтити – то результат будет содержать все подклассы данной абстрактной энтити.
	Существуют следующие стратегии мапинга энтитей на таблицы базы данных при наследовании:
	- в одной таблице храняться все подклассы (InheritanceType. SINGLE_TABLE)
	- каждый подкласс в своей таблице (InheritanceType. TABLE_PER_CLASS) 
	- стратегия “join”, когда каждый подкласс мапиться на таблицы(включяя    абстрактный), при этом в каждой таблице содержиться первичный ключ из базового класса и только спецефичные для данного класса поля(InheritanceType. JOINED)
Описание слайда:
Entity Inheritance: Abstract Entities Абстрактная энтити может быть определена при помощи абстрактного класса с аннотацией @Entity. Если абстрактная энтити выступает в качестве параметра запроса или связанна отношением с другой энтити – то результат будет содержать все подклассы данной абстрактной энтити. Существуют следующие стратегии мапинга энтитей на таблицы базы данных при наследовании: - в одной таблице храняться все подклассы (InheritanceType. SINGLE_TABLE) - каждый подкласс в своей таблице (InheritanceType. TABLE_PER_CLASS) - стратегия “join”, когда каждый подкласс мапиться на таблицы(включяя абстрактный), при этом в каждой таблице содержиться первичный ключ из базового класса и только спецефичные для данного класса поля(InheritanceType. JOINED)

Слайд 25





Entity Inheritance: Abstract Entities


 
 





@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Animal {
	@Id
	private String id;
	private String woolColor;
    @ManyToOne
	private Forest forest;

@Entity
public class Bear extends Animal {
	private String bearFeature;
@Entity
public class Fox extends Animal {
	private String foxFeature;
Описание слайда:
Entity Inheritance: Abstract Entities @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public abstract class Animal { @Id private String id; private String woolColor; @ManyToOne private Forest forest; @Entity public class Bear extends Animal { private String bearFeature; @Entity public class Fox extends Animal { private String foxFeature;

Слайд 26





Entity Inheritance: InheritanceType.TABLE_PER_CLASS


 
 





@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Animal {
	@Id
	private String id;
	private String woolColor;
    @ManyToOne
	private Forest forest;

@Entity
public class Bear extends Animal {
	private String bearFeature;
@Entity
public class Fox extends Animal {
	private String foxFeature;
Описание слайда:
Entity Inheritance: InheritanceType.TABLE_PER_CLASS @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public abstract class Animal { @Id private String id; private String woolColor; @ManyToOne private Forest forest; @Entity public class Bear extends Animal { private String bearFeature; @Entity public class Fox extends Animal { private String foxFeature;

Слайд 27





Entity Inheritance: InheritanceType.SINGLE_TABLE 

 
 





@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="PROJ_TYPE")
public abstract class ItProject {
	@Id
	private long id;

@Entity
@DiscriminatorValue("L")
public class LargeProject extends ItProject{
	private String largeFeature;
@Entity
@DiscriminatorValue("S")
public class SmallProject extends ItProject{
	private String smallFeature;
Описание слайда:
Entity Inheritance: InheritanceType.SINGLE_TABLE @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="PROJ_TYPE") public abstract class ItProject { @Id private long id; @Entity @DiscriminatorValue("L") public class LargeProject extends ItProject{ private String largeFeature; @Entity @DiscriminatorValue("S") public class SmallProject extends ItProject{ private String smallFeature;

Слайд 28





Entity Inheritance: InheritanceType.JOINED 
 
 





@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Vehicle {
	@Id
	private long id;
	private String common;

@Entity
public class Car extends Vehicle {
	private String carFeature;

@Entity
public class Plane extends Vehicle {
	private String carFeature;
Описание слайда:
Entity Inheritance: InheritanceType.JOINED @Entity @Inheritance(strategy = InheritanceType.JOINED) public abstract class Vehicle { @Id private long id; private String common; @Entity public class Car extends Vehicle { private String carFeature; @Entity public class Plane extends Vehicle { private String carFeature;

Слайд 29





Mapped Superclasses

 
 





	Энтити могут быть наследованны от суперкласса  который сам при этом не являеться энтити, но содержит информацию о мапинге и персистансе.
@MappedSuperclass 
public class Employee { 
@Id 
protected Integer employeeId
@Entity 
public class FullTimeEmployee extends Employee { 
protected Integer salary
@Entity 
public class PartTimeEmployee extends Employee { 
protected Float hourlyWage
Описание слайда:
Mapped Superclasses Энтити могут быть наследованны от суперкласса который сам при этом не являеться энтити, но содержит информацию о мапинге и персистансе. @MappedSuperclass public class Employee { @Id protected Integer employeeId @Entity public class FullTimeEmployee extends Employee { protected Integer salary @Entity public class PartTimeEmployee extends Employee { protected Float hourlyWage

Слайд 30





Java Persistence Query Language


 
 





	Java Persistence Query Language (JPQL) — платформо-независимый объектно-ориентированный язык запросов являющийся частью Java Persistence API спецификации. 
SELECT a FROM Author a ORDER BY a.firstName, a.lastName
SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.publisher.name = 'XYZ Press‘
Динамический запрос:
Query и TypedQuery (JPA 2.0)
public List<Author> getAuthorsByLastName(String lastName) { 
    String queryString = "SELECT a FROM Author a " + "WHERE :lastName IS NULL OR LOWER(a.lastName) = :lastName"; 
    Query query = getEntityManager().createQuery(queryString); query.setParameter("lastName", StringUtils.lowerCase(lastName));
    return query.getResultList(); 
}
Описание слайда:
Java Persistence Query Language Java Persistence Query Language (JPQL) — платформо-независимый объектно-ориентированный язык запросов являющийся частью Java Persistence API спецификации. SELECT a FROM Author a ORDER BY a.firstName, a.lastName SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.publisher.name = 'XYZ Press‘ Динамический запрос: Query и TypedQuery (JPA 2.0) public List<Author> getAuthorsByLastName(String lastName) { String queryString = "SELECT a FROM Author a " + "WHERE :lastName IS NULL OR LOWER(a.lastName) = :lastName"; Query query = getEntityManager().createQuery(queryString); query.setParameter("lastName", StringUtils.lowerCase(lastName)); return query.getResultList(); }

Слайд 31





@NamedQuery and @NamedQueries 


 
 





Именованные запросы  являються статическими.
@Entity
@NamedQuery(name="Country.findAll", query="SELECT c FROM Country c") 
public class Country {  … }
@Entity 
@NamedQueries({ 
    @NamedQuery(name="Country.findAll", query="SELECT c FROM Country c"), @NamedQuery(name="Country.findByName", query="SELECT c FROM Country c WHERE c.name = :name"), }) 
public class Country {
TypedQuery<Country> query = em.createNamedQuery("Country.findAll", Country.class); List<Country> results = query.getResultList();
Описание слайда:
@NamedQuery and @NamedQueries Именованные запросы являються статическими. @Entity @NamedQuery(name="Country.findAll", query="SELECT c FROM Country c") public class Country { … } @Entity @NamedQueries({ @NamedQuery(name="Country.findAll", query="SELECT c FROM Country c"), @NamedQuery(name="Country.findByName", query="SELECT c FROM Country c WHERE c.name = :name"), }) public class Country { TypedQuery<Country> query = em.createNamedQuery("Country.findAll", Country.class); List<Country> results = query.getResultList();

Слайд 32





JPA Criteria Query



 
 





	Если JPQL queries определяються в виде строки, аналогично SQL, то JPA criteria queries позволяют формировать запрос в виде Java классов

Запрос вида:
SELECT c FROM Country c
Можно представить:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
q.select(c);
Выполнить:
TypedQuery<Country> query = em.createQuery(q);
List<Country> results = query.getResultList();
Описание слайда:
JPA Criteria Query Если JPQL queries определяються в виде строки, аналогично SQL, то JPA criteria queries позволяют формировать запрос в виде Java классов Запрос вида: SELECT c FROM Country c Можно представить: CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Country> q = cb.createQuery(Country.class); Root<Country> c = q.from(Country.class); q.select(c); Выполнить: TypedQuery<Country> query = em.createQuery(q); List<Country> results = query.getResultList();

Слайд 33





Entity Locking and Concurrency




 
 





	optimistic locking

		@Version 
		protected int version;

		javax.persistence.OptimisticLockException

	pessimistic locking

		EntityManager em = ...; 
		Person person = ...; 
		em.lock(person, LockModeType. PESSIMISTIC_WRITE);
Описание слайда:
Entity Locking and Concurrency optimistic locking @Version protected int version; javax.persistence.OptimisticLockException pessimistic locking EntityManager em = ...; Person person = ...; em.lock(person, LockModeType. PESSIMISTIC_WRITE);



Похожие презентации
Mypresentation.ru
Загрузить презентацию