what's new in java ee 7
DESCRIPTION
Vortrag zum Expertenkreis Java am 19.9.2013TRANSCRIPT
![Page 1: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/1.jpg)
What's new in Java EE 7?
Expertenkreis Java
19.09.2013, GEDOPLAN
Dirk Weil, GEDOPLAN GmbH
![Page 2: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/2.jpg)
JavaServer Faces 2.2
Big Ticket Features
Faces Flows
Resource Library Contracts
HTML 5 Friendly Markup
Stateless Views
Other Changes
UIData supports Collection
@ViewScoped
javax.faces.bean deprecated in next version
What's new in Java EE 7? 2
![Page 3: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/3.jpg)
JSF 2.2: Faces Flows
Combination of various views
Internal navigation
Dedicated entry and return views
"Subroutine"
Embeddable
Flow scoped values
and beans
What's new in Java EE 7? 3
![Page 4: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/4.jpg)
JSF 2.2: Faces Flows
Various flow definitions
Simple, directory-based
Flow descriptor
CDI Producer
Location
Web app root
Library JAR
META-INF/flows
What's new in Java EE 7? 4
![Page 5: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/5.jpg)
JSF 2.2: Resource Library Contracts
Encapsulation of templates, images, CSS and JS files
Subdir of
WebappRoot/contracts
Library JAR META-INF/contracts
Activation in faces-config.xml or view attributes
5 What's new in Java EE 7?
<resource-library-contracts> <contract-mapping> <url-pattern>*</url-pattern> <contracts>siteLayout</contracts> </contract-mapping> </resource-library-contracts>
siteLayout/ topNav_template.xhtml leftNav_foo.xhtml styles.css script.js background.png
![Page 6: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/6.jpg)
Java Persistence API 2.1
Converter
JPQL & Criteria Query Enhancements
CDI Injection in Entity Listener
DDL Handling
Entity Graphs
What's new in Java EE 7? 6
![Page 7: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/7.jpg)
JPA 2.1: Converter
7 What's new in Java EE 7?
@Converter public class YesNoConverter implements AttributeConverter<Boolean, String> { public String convertToDatabaseColumn(Boolean fieldValue) { if (fieldValue == null) return null; return fieldValue ? "Y" : "N"; } public Boolean convertToEntityAttribute(String columnValue) { if (columnValue == null) return null; return columnValue.equals("Y");
@Entity public class Country { @Convert(converter = YesNoConverter.class) private boolean expired;
![Page 8: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/8.jpg)
JPA 2.1: JPQL & Criteria Query Enhancements
ON: Join filter
TREAT: Downcast (includes filter)
FUNCTION: Call DB function
What's new in Java EE 7? 8
select p.name, count(b) from Publisher p left join p.books b on b.bookType = BookType.PAPERBACK group by p.name
select s from StorageLocation s where treat(s.product as Book).bookType = BookType.HARDCOVER
select c from Customer c where function('hasGoodCredit', c.balance, c.creditLimit)
![Page 9: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/9.jpg)
JPA 2.1: JPQL & Criteria Query Enhancements
Bulk Update/Delete for Criteria Query
Stored Procedure Queries
What's new in Java EE 7? 9
CriteriaUpdate<Product> criteriaUpdate = criteriaBuilder.createCriteriaUpdate(Product.class); Root<Product> p = criteriaUpdate.from(Product.class); Path<Number> price = p.get(Product_.price); criteriaUpdate.set(price, criteriaBuilder.prod(price, 1.03)); entityManager.createQuery(criteriaUpdate).executeUpdate();
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("findMissingProducts");
![Page 10: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/10.jpg)
JPA 2.1: CDI Injection in Entity Listener
10 What's new in Java EE 7?
public class CountryListener { @Inject private AuditService auditService; @PreUpdate public void preUpdate(Object entity) { this.auditService.logUpdate(entity); }
@Entity @EntityListeners(CountryListener.class) public class Country {
![Page 11: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/11.jpg)
JPA 2.1: DDL Handling
Create and/or drop db tables
Based on entity meta data (mapping)
SQL script
Data load script
What's new in Java EE 7? 11
<persistence … > <persistence-unit name="test"> … <properties> <property name="javax.persistence.schema-generation.database.action" value="drop-and-create" /> <property name="javax.persistence.schema-generation.create-script-source" value="META-INF/create.sql" /> <property name="javax.persistence.schema-generation.create-source" value="metadata-then-script" /> <property name="javax.persistence.sql-load-script-source" value="META-INF/sqlLoad.sql" />
![Page 12: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/12.jpg)
JPA 2.1: DDL Handling
Write create and/or drop scripts
12 What's new in Java EE 7?
Writer createWriter = …; // File, String … Map<String, Object> properties = new HashMap<>(); properties.put("javax.persistence.schema-generation.scripts.action", "create"); properties.put("javax.persistence.schema-generation.scripts.create-target", createWriter); Persistence.generateSchema("test", properties);
![Page 13: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/13.jpg)
JPA 2.1: Entity Graphs
Declaration of lazy attributes to be loaded by find or query
find parameter or query hint
fetchgraph: Fetch entity graph attributes only
loadgraph: Fetch eager attributes also
13 What's new in Java EE 7?
@Entity
@NamedEntityGraph(name = "Publisher_books",
attributeNodes = @NamedAttributeNode(value = "books")))
public class Publisher
{
…
@OneToMany(mappedBy = "publisher", fetch = FetchType.LAZY)
private List<Book> books;
TypedQuery<Publisher> query = entityManager.createQuery(…);
query.setHint("javax.persistence.fetchgraph", "Publisher_books");
![Page 14: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/14.jpg)
CDI 1.1
Enhanced bean discovery
Global enablement of interceptors, decorators, alternatives
Constructor interception
@TransactionScoped
@Transactional
Bean Validation for method parameters and return values
What's new in Java EE 7? 14
![Page 15: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/15.jpg)
CDI 1.1: Bean Discovery
Discovery mode: all, annotated, none
Exclusion filter: Class or package
What's new in Java EE 7? 15
<beans … bean-discovery-mode="all" version="1.1"> <scan> <exclude name="de.gedoplan.….sub1.beans.DiscoverableBean12"/> <exclude name="de.gedoplan.….sub1.beans.excluded.**"/> <exclude name="de.gedoplan.….dummy.**"> <if-system-property name="NO_DUMMY" value="true" /> </exclude> </scan> </beans>
![Page 16: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/16.jpg)
CDI 1.1: Global Enablement of Interceptors etc.
@Priority
Global enablement and ordering of interceptors & decorators
Global activation of alternative with highest priority
What's new in Java EE 7? 16
@One @Interceptor @Priority(Interceptor.Priority.APPLICATION + 1) public class OneInterceptor {
![Page 17: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/17.jpg)
CDI 1.1: Constructor Interception
17 What's new in Java EE 7?
@Interceptor public class TraceCallInterceptor { @AroundConstruct public Object traceConstructorCall(InvocationContext ic) throws Exception { … } @AroundInvoke public Object traceMethodCall(InvocationContext ic) throws Exception { … }
![Page 18: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/18.jpg)
CDI 1.1: @Transactional & @TransactionScoped
Platform global transaction interceptor @Transactional
TX modes like EJB TX attributes
CDI scope @TransactionScoped
What's new in Java EE 7? 18
@Transactional(value = TxType.REQUIRED, dontRollbackOn={HarmlessException.class}) public void insert(Cocktail cocktail) {
![Page 19: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/19.jpg)
CDI 1.1: Bean Validation for Parameters and Return Values
19 What's new in Java EE 7?
@NotNull public List<Fragebogen> createUmfrage(@Min(10) int personenZahl) {
![Page 20: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/20.jpg)
More new things
Websockets
JAX-RS
JSON
Standardized Client
Concurrency Utilities
Batch
JMS
20 What's new in Java EE 7?
![Page 21: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/21.jpg)
Platforms
GlassFish 4
Reference implementation
Stable version: 4.0
Promoted build: 4.0.1 b03
WildFly 8
Formerly known as JBoss AS
Current version: 8.0.0.Alpha4
21 What's new in Java EE 7?
![Page 22: What's new in Java EE 7](https://reader034.vdocuments.net/reader034/viewer/2022042715/5583e886d8b42a4c3f8b5379/html5/thumbnails/22.jpg)
Schön, dass Sie da waren!
Unserer nächster Termin:
21.11.2013: Testen im EE-Umfeld – Seien Sie feige!