22 junho 2013

Hibernate - Callback methods

Callbacks Methods: It is often useful for the application to react to certain events that occur inside the persistence mechanism.


TypeDescription
@PrePersistExecuted before the entity manager persist operation is actually executed or cascaded. This call is synchronous with the persist operation.
@PreRemoveExecuted before the entity manager remove operation is actually executed or cascaded. This call is synchronous with the remove operation.
@PostPersistExecuted after the entity manager persist operation is actually executed or cascaded. This call is invoked after the database INSERT is executed.
@PostRemoveExecuted after the entity manager remove operation is actually executed or cascaded. This call is synchronous with the remove operation.
@PreUpdateExecuted before the database UPDATE operation.
@PostUpdateExecuted after the database UPDATE operation.
@PostLoadExecuted after an entity has been loaded into the current persistence context or an entity has been refreshed.

Example
@Entity
@EntityListeners(class=Audit.class)
public class Cat {
    @Id private Integer id;
    private String name;
    private Calendar dateOfBirth;
    @Transient private int age;
    private Date lastUpdate;
    //getters and setters

    /**
     * Set my transient property at load time based on a calculation,
     * note that a native Hibernate formula mapping is better for this purpose.
     */
    @PostLoad
    public void calculateAge() {
        Calendar birth = new GregorianCalendar();
        birth.setTime(dateOfBirth);
        Calendar now = new GregorianCalendar();
        now.setTime( new Date() );
        int adjust = 0;
        if ( now.get(Calendar.DAY_OF_YEAR) - birth.get(Calendar.DAY_OF_YEAR) < 0) {
            adjust = -1;
        }
        age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR) + adjust;
    }
}

public class LastUpdateListener {
    /**
     * automatic property set before any database persistence
     */
    @PreUpdate
    @PrePersist
    public void setLastUpdate(Cat o) {
        o.setLastUpdate( new Date() );
    }
}


Source

12 junho 2013

Java EE 7 is final

Here is what EE 7 looks like as of today

The complete specification now contains 34 individual specifications.
SpecificationJSRVersionJava.net Project
Java Platform, Enterprise Edition3427javaee-spec
Managed Beans3421.0
Java EE Web Profile (Web Profile)3421.0
Java API for RESTful Web Services (JAX-RS)3392.0jax-rs-spec
Web Services for Java EE1091.4
Java API for XML-Based Web Services (JAX-WS)2242.2jax-ws
Java Architecture for XML Binding (JAXB)2222.2jaxb
Web Services Metadata for the Java Platform1812.1
Java API for XML-Based RPC (JAX-RPC) (Optional)1011.1jax-rpc
Java API for XML Registries (JAXR) (Optional)931.0
Servlet3403.1
JavaServer Faces(JSF)3442.2javaserverfaces
JavaServer Pages (JSP)2452.3
JavaServer Pages Expression Language (EL)3413.0el-spec
A Standard Tag Library for JavaServer Pages (JSTL)521.2jstl
Debugging Support for Other Languages451.0
Contexts and Dependency Injection for the Java EE Platform (CDI)3461.1github.com
Dependency Injection for Java (DI)3301.0
Bean Validation3491.1http://beanvalidation.org
Enterprise JavaBeans (EJB)3453.2ejb-spec
Java EE Connector Architecture (JCA)3221.7
Java Persistence (JPA)3382.1jpa-spec
Common Annotations for the Java Platform2501.2
Java Message Service API (JMS)3432.0
Java Transaction API (JTA)9071.2jta-spec
JavaMail9191.5javamail
Java Authentication Service Provider Interface for Containers (JASPIC)1961.1jaspic-spec
Java Authorization Contract for Containers (JACC)1151.5jacc-spec
Java EE Application Deployment (Optional)881.2
Java Database Connectivity (JDBC)2214.0
Java Management Extensions (JMX)2552.0openjdk
JavaBeans Activation Framework (JAF)9251.1
Streaming API for XML (StAX)1731.0sjsxp
Java Authentication and Authorization Service (JAAS)1.0
Interceptors3181.2
Batch Applications for the Java Platform3521.0jbatch
Java API for JSON Processing3531.0json-processing-spec
Java API for WebSocket3561.0websocket-spec
Concurrency Utilities for Java EE2361.0concurrency-ee-spec

Source

01 junho 2013

Setup of Dynamic Web Project using Maven

Good article that show how to create a Dynamic Web Project using Maven.
Full article here.

In same blog i found other interesting article about
Spring JPA Data + Hibernate + MySQL + MAVEN that show how we can develop a web-applications with the help of Spring MVC.

28 maio 2013

Live Webcast - Introducing Java EE 7 - 12, 13 June 2013


AGENDA
Keynote Address
  • With speakers from Oracle, IBM, Infosys and JUGs, including:
    • Hasan Rizvi, Executive Vice President, Oracle Fusion Middleware and Java, Oracle
    • Cameron Purdy, Vice President, Development, Oracle
    • Arun Gupta - Java EE & GlassFish Evangelist, Oracle
    • Linda DeMichiel, Specification Lead for Java Platform, Enterprise Edition 7, Oracle

On-Demand Breakout Sessions
  • 15 sessions featuring demos and details about each new JSR

Live Chat with Java Experts
  • Hour-long chats on the following topics:
    • Scalable, Dynamic HTML 5
    • Increasing Productivity
    • Meeting Enterprise Demands

More information here

09 maio 2013

The Java EE 6 - Using Scopes

Using Scopes
For a web application to use a bean that injects another bean class, the bean needs to be able to hold state over the duration of the user’s interaction with the application. The way to define this state is to give the bean a scope. You can give an object any of the scopes described in following table, depending on how you are using it.


Scope
Annotation
Duration
Request
@RequestScoped
A user’s interaction with a web application in a single HTTP request.
Session
@SessionScoped
A user’s interaction with a web application across multiple HTTP requests.
Application
@ApplicationScoped
Shared state across all users’ interactions with a web application.
Dependent
@Dependent
The default scope if none is specified; it means that an object exists to serve exactly one client (bean) and has the same lifecycle as that client (bean).
Conversation
@ConversationScoped
A user’s interaction with a JavaServer Faces application, within explicit developer-controlled boundaries that extend the scope across multiple invocations of the JavaServer Faces lifecycle. All long-running conversations are scoped to a particular HTTP servlet session and may not cross session boundaries.
The first three scopes are defined by both JSR 299 and the JavaServer Faces API. The last two are defined by JSR 299.

01 maio 2013

Java EE 7 Approved!

Java EE 7 is officially done as of this week. Linda DeMichiel just announced on the Oracle blog that the Java EE 7 Platform JSR, as well as the more compact Web Profile JSR for this EE version, have both been approved by the Java Community Process.

Here's the complete list of 14 JSRs and 9 MRs (maintenance releases):

JSRs:
  • Java Platform, Enterprise Edition 7 (JSR 342
  • Concurrency Utilities for Java EE 1.0 (JSR 236) (New to JEE!) 
  • Java Persistence 2.1 (JSR 338
  • JAX-RS: The Java API for RESTful Web Services 2.0 (JSR 339
  • Java Servlet 3.1 (JSR 340
  • Expression Language 3.0 (JSR 341
  • Java Message Service 2.0 (JSR 343
  • JavaServer Faces 2.2 (JSR 344
  • Enterprise JavaBeans 3.2 (JSR 345
  • Contexts and Dependency Injection for Java EE 1.1 (JSR 346
  • Bean Validation 1.1 (JSR 349
  • Batch Applications for the Java Platform 1.0 (JSR 352) (New to JEE!) 
  • Java API for JSON Processing 1.0 (JSR 353) (New to JEE!) 
  • Java API for WebSocket 1.0 (JSR 356) (New to JEE!) 

MRs:
  • Web Services for Java EE 1.4 (JSR 109
  • Java Authorization Service Provider Contract for Containers 1.5 (JACC 1.5) (JSR 115
  • Java Authentication Service Provider Interface for Containers 1.1 (JASPIC 1.1) (JSR 196
  • JavaServer Pages 2.3 (JSR 245
  • Common Annotations for the Java Platform 1.2 (JSR 250
  • Interceptors 1.2 (JSR 318
  • Java EE Connector Architecture 1.7 (JSR 322
  • Java Transaction API 1.2 (JSR 907
  • JavaMail 1.5 (JSR 919
Source: Dzone