Here's a list of the sessions I attended on the final day:
TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain ModelEmmanuel Bernard, JBoss
- TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain Model
- TS-1911 - Event-Driven Application Servers
- TS-4721 - Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design Patterns
- TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans Validation
So this was an introduction and demo of the new Hibernate project which integrates Hibernate
and Apache Lucene
called Hibernate Search
. So the main use-case for this technology is that full-text database search sucks and is very database dependent. So using annotations on your domain model Hibernate maintains a Lucene index of the annotated fields. So when you add, update or delete an object the using Hibernate the index get updated. So you query the index Hibernate Search provides and extension to the Hibernate Query API which allows you to create standard Lucene queries then wrap them and pass them to Hibernate. So when you execute a query what you get back is Hibernate managed objects. This is very powerful because to can build very complex Lucene queries using things like proximity, ranking and result weighting and what you get back from your search is your domain objects. The demo that Emmanuel showed was replacing the search function in the Seam DVD store with a Hibernate search based one which greatly improved the results being returned by the search. Currently Hibernate search only works with Hibernate and the Hibernate JPA implementation but the goal is to make Hibernate Search work with any JPA provider. I can see many other use cases for this technology and have been experimenting with Lucene for building scalable database indexing and searching.TS-1911 - Event-Driven Application ServersAlexandre Vasseur, (Independent); Thomas Bernhardt, Esper Open Source Project
I had heard a bit about Event Driven App Servers in the past and had always thought they really only served a need for a specific niche market. But after this session which looked at a specific open source event driven app server called Esper (http://esper.codehaus.org/
) I can see that maybe this technology is ready for the main stream especially in the domain of BAM (Business Activity Monitoring). The Esper architecture is quite impressive but I'm not to sure about the SQL like query language. I think this is an area where a DSL (Domain Specific Language) might be a better choice. Well I guess what they have is a DSL but what I think about would be to provide a framework for creating DSLs for Esper that more closely map to the domain your are working in. I guess the coolest feature of this kind of technology is being able to easily infer temporal information from event streams. This is one project to keep an eye on!TS-4721 - Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design PatternsFabiane Nardon, Zilics; Edgar A Silva, JBoss, a division of Red Hat
I have been working with EJB3 and JEE5 technology for a while now so most of the patterns that were outlined were nothing terrible new. It's good to see that at least some people around the world are thinking about how we can apply different patterns to EJB3 rather than just keep doing the same old crappy patterns we were forced to use due to the limitations with previous EJB spec. This is especially true for anyone who used CMP entity beans in anger. Now that we can remove the Entity bean to Value Object layer (well in most cases) and simply use our EJB3 Entity classes as value objects I think some work in coming up with some best practice patterns (So not just the DAO pattern) needs to happen. When talking about EJB3 many people neglect the fact the many organization have a hell of a lot of legacy EJB2 and even EJB1 code that they will need to support moving forward. There will be very few organizations willing to do a complete re-write of there old code to EJB3. Now EJB3 can coexists with older EJB code and they can even interoperate to some extent. What's needed is a series of patterns, best practice and tools support to allow developers to refactor old EJB code into EJB3 but have it continue to function within other legacy code but also not limit the usage scope for new EJB3 code. Session Beans would be pretty straight forward but CMP entity beans are another story. I'm working on another blog post currently to highlight some more of the EJB2 to EJB3 migration issues as well as outline strategies to help deal with them so stay tuned.TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans ValidationEmmanuel Bernard, JBoss
Emmanuel was very busy today. One big highlight of this session was the need for the adoption of this standard by other specs both in the JEE and JSE worlds. I totally agree with this as it then gives you the ability to add validation at a single point in your application and have is used by every tier. This means that my view tier could easily provide visible feedback to the user and at the data tier the same validation could be added to my database as a constraint. Currently Hibernate provides a validation framework that integrates with the Hibernate core and JPA implementation as well as JBoss Seam which gives you end to end validation using simple annotations on your domain model. This spec is still really in it's early days but the work done my the Hibernate team already goes a long way and is a going starting point for this spec. In the mean time just use the Hibernate Validations libraries as I'm sure when the spec comes out it won't be to hard to refactor. Man the Hibernate guys have been cranking out new stuff over the past couple of months and that's without the Shards
project which was donated by Google. Keep up the good work!!!!!
I'm planning to post a complete JavaOne summary when I get back home....I had a great time at my first JavaOne but I think my brain is melting :) maybe it was just all the beer I drank this week.