Академический Документы
Профессиональный Документы
Культура Документы
in GlassFish™
Doug Clarke
Director of Product Management
Oracle
Eclipse Persistence Services
“EclipseLink”
TopLink
Essentials
1996 2008
Significance of EclipseLink
EntityManager EntityManagerFactory
L1 Cache L2 Cache
(Shared )
Cache Coordination
Minimize stale cache
EntityManager-1 EntityManager-2
L1 Cache L1 Cache
2 6
3
EntityManagerFactory
L2 Cache Connection Pool 7
Connection
Connection
4 8 Connection
Connection
Connection
Leveraging the Shared Cache: Writing
Client-2
1
EntityManager-2
L1 Cache
EntityManagerFactory 3
L2 Cache Connection Pool
Connection
4 Connection
Connection
Connection
Connection
Leveraging the Shared Cache: Writing
EntityManagerFactory
L2 Cache Connection Pool
Connection
Connection
Connection
Connection
Connection
Advanced Mappings
• @Converter
• @BasicMap and @BasicCollection
• Mapping to database structures
• @StructConverter – Structs, ADTs
• XML types, PL/SQL Records
• Mapping features
• Private Owned
• Join/Batch Fetch
• Returning
Advanced Mapping Example
@Entity
@Cache(type=SOFT_WEAK, coordinationType=SEND_OBJECT_CHANGES)
@Converter(name=“money”, converterClass=MoneyConverter.class)
@OptimisticLocking(type=CHANGED_COLUMNS)
public class Employee {
@Id
private int id;
@OneToMany(mappedBy=“owner”)
private List<PhoneNumbers> phones;
@Convert(“money”)
private Money salary
…
}
Advanced Querying
Begin Txn
Time
Begin Txn
Commit Txn
Commit Txn
Transaction Features
query.setHint(PESSIMISTIC_LOCK, LockNoWait);
Weaving
• Annotations
• JPA
• EclipseLink
• ORM.XML
• JPA
• EclipseLink
• JPA + EclipseLink
• Defaults – Configuration by Exception
Database Platform
XML:
<properties>
<property
name=“eclipselink.target-database"
value="Derby"/>
</properties>
API:
properties.put(
EclipseLinkProperties.TARGET_DATABASE,
TargetDatabase.ORACLE);
Target Database Platform
• TargetDatabase (org.eclipse.persistence.jpa.config)
• Auto (Default)
• Oracle, Oracle8i, Oracle9i, Oracle10g, Oracle11, TimesTen
• DB2, DB2Mainframe
• Derby, JavaDB, MySQL
• Informix
• HSQL, PointBase
• PostgreSQL
• SQLAnyWhere
• SQLServer, DBase
• Sybase
Server Platform
• <property name=“eclipselink.target-server"
value=“SunAS9"/>
Target Server Options
• TargetServer (org.eclipse.persistence.jpa.config)
• None (Default)
• OC4J, OC4J_10_1_3, OC4J_11_1_1
• SunAS9
• WebSphere
• WebSphere_6_1
• WebLogic, WebLogic_9, WebLogic_10
• JBoss
JDBC Connection Settings
<properties>
...
<property name=“eclipselink.jdbc.driver”
value=“oracle.jdbc.Driver”/>
<property name=“eclipselink.jdbc.url”
value=“jdbc:oracle:thin:@localhost:1521:XE”/>
<property name=“eclipselink.jdbc.password”
value=“tiger”/>
Logging
<properties>
...
<property
name=“eclipselink.logging.level"
value="FINE"/>
...
</properties>
DDL Generation
<properties>
...
<property
name=“eclipselink.ddl-generation"
value="create-tables"/>
...
</properties>
Customization Using Properties
<properties>
...
<property
name="eclipselink.session.customizer"
value="acme.MySessionCustomizer"/>
<property
name="eclipselink.descriptor.customizer.Employe
e"
value="acme.MyDescriptorCustomizer"/>
...
</properties>
Descriptor & Session Customizers
Minimal Writes, Updates
“Just in Time” reading
Batch Reading, Writing
Automatic change detection
SQL ordering
Caching policies and sizes
Transformation support
Parameterized SQL (binding)
Existence checks
Pre-allocation of sequence
Stored procedures numbers
Statement Caching
Cache Coordination
Scrolling cursors
Optimistic, Pessimistic locking
Projection Queries
Joining object retrieval
Partial Attribute Queries optimization
In memory querying
Dynamic queries
• EclipseLink Project
http://www.eclipse.org/eclipselink
Eclipse newsgroup: eclipse.technology.eclipselink
• GlassFish V3
https://glassfish.dev.java.net/