I worked on Hibernate core and the tools. Currently I work on making JBoss Tools and JBoss Developer Studio the tool to use for JBoss and Seam related technology.
Follow me on Twitter
| Recent Entries |
|
10. Jan 2013
|
|
|
10. Oct 2012
|
|
|
29. Jun 2012
|
|
|
02. May 2012
|
|
|
02. Apr 2012
|
|
|
07. Dec 2011
|
|
|
15. Nov 2011
|
|
|
24. Oct 2011
|
|
|
15. Sep 2011
|
|
|
18. Jul 2011
|
|
|
08. Jun 2011
|
|
|
19. May 2011
|
|
|
20. Apr 2011
|
|
|
07. Apr 2011
|
|
|
10. Mar 2011
|
A new updated version of the Hibernate Tools (http://tools.hibernate.org) project have been made available.
The tools are for both Eclipse and ANT, the ANT related docs are at http://www.hibernate.org/hib_docs/tools/ant/index.html
The eclipse plugins is now compatible with WTP 0.7 and contains a bunch of new features and improvements.
My personal favorite at the moment, is the Dynamic Query Translator
view which continously
shows you the SQL, Hibernate will generate for the query you are typing in the HQL editor.
Great for learning and tuning HQL queries - note that EJB3-QL works here too.
The HQL editor is also new and replaces the HQL view and introduces code formatting, syntax highlighting and code completion.
Furthermore we have a initial class diagram view as well as many other improvements to wizards, templates, and code generators. See the complete list with screenshots at class diagrams at http://www.hibernate.org/hib_docs/tools/newandnoteworthy/hibernate-eclipse-news-3.1.0.alpha5.html for more information.
As always feedback, ideas, contributions, patches, bug-reports are more than welcome by the usual means at http://forum.hibernate.org and JIRA.
The new updated version of the Hibernate Tools (http://tools.hibernate.org) project includes significant updates to the Eclipse editors, plugings, and wizards, as well as a unified and convenient Ant task for integration of the tools in your regular builds.
See http://www.hibernate.org/hib_docs/tools/newandnoteworthy/hibernate-eclipse-news-3.0.0.alpha4.html for a visual mini-tour of the new features.
Ant task documentation is at http://www.hibernate.org/hib_docs/tools/ant/index.html
Recently I have been messing with adding custom class loading to Hibern8IDE, so it can load model and database driver classes at dynamically.
This allows us to run Hibern8IDE standalone instead of requiring users to run it from their actual project (which of course still is possible ;)
The 'trick' is as follows:
Thread thread = Thread.currentThread();
ClassLoader prevCl = thread.getContextClassLoader();
try {
List urls = ... // a list of paths/zips/jars for the classloader
if(urls.size()>0) {
URLClassLoader _newLoader = new URLClassLoader((URL[]) urls.toArray(new URL[0]), thread.getContextClassLoader());
thread.setContextClassLoader(_newLoader);
}
// convince DriverManager that you can use our specified driver!
String driverClass = props.getProperty("hibernate.connection.driver_class");
if(driverClass!=null) {
try {
Class driverClazz = ReflectHelper.classForName(driverClass);
DriverManager.registerDriver(new FakeDelegatingDriver((Driver) driverClazz.newInstance()));
} catch (... e1) {
}
}
configuration = new Configuration();
configuration = configuration.setProperties(props);
configuration = configuration.configure(configfile);
Iterator hbms = mappings.iterator();
while (hbms.hasNext()) {
hbm = (File) hbms.next();
configuration = configuration.addFile(hbm.toString());
}
initialize(); // build sessionfactory etc.
} catch (... e) {
} finally {
thread.setContextClassLoader(prevCl);
}
The code does two things install Hibern8IDE custom classloader while loading the mappings and jdbc drivers PLUS install a FakeDelegatingDriver to convince the stupid java.sql.DriverManager that it is ok to load jdbc drivers from other places than the system classloader.
And this works!, but not when trying to Java Webstart enabling Hibern8IDE :(
It seems like Java Webstart is very strict about it's permission policy even though a <all-permission/> tag are in the JNLP file :(
The loading of model classes and drivers works smoothly, but as soon as the driver wants to connect to the database a security exception is throwing saying the application is not allowed to connect to a port on the database machine :(
So, for now Hibern8IDE is available in a standalone version, but unfortunately not via Java Webstart because of it's strictness!
Any bright ideas are welcome!
Currently I have noticed that Naked Objects gets more and more blog-time. And every time I wondered why (many?) people found it so intriguing - and I often thought about making a blog about the good and bad about Naked Objects; but I've never found the time.
I still don't have the time to do a detailed blog about it, but just state some facts and/or criticism about the implementation of Naked Objects that I've can't remember seeing listed before.
A. All objects has to implement NakedObject or extend AbstractNakedObject (actually some code in the framework assumes every object is an AbstractNakedObject...but that I guess they will fix a some point).
B. All fields that you want the framework to know about need to be a NakedValue, thus String has to be a TextString, float a FloatingPointNumber, etc. This is all basically done to let the values be mutable and add all the linguistic needs for their (all to easy to criticize, so I won't) automatic GUI.
C. All collections of associated objects need to be NakedCollection
which definitly is not in any way a standard java.util.Collection
(because they also do not use anything from jdk 1.2, just
to be able
to run on .Net!).
Each of point A, B and C makes me not like the Naked Objects framework (at least the implementation)! Why ? Because all my objects won't be POJO's anymore - and especially item C, makes it very hard to e.g. use Hibernate (or many other reflection based ORM's) to persist these not so Naked Objects. It at least require some very specific Naked Object code to make it work.
And when we are talking about persistence, then the whole framework
does have a built-in persistence engine which is pluggable
- but
it's very simple, and transaction demarcation looks very
hard to control, if even possible at the moment.
But enough harsh criticism ;), the good stuff is their ideas
about behavioral complete objects (BCO). From the book: an object
should completely model the behavior of the thing that it
represents. ... most people continue to design business systems that
separate procedure from data, albeit dressed up in the language and
technology of object-orientation
.
And I do agree to that point - people do get to procedural at times, myself included, and if Naked Objects help us do that a little less I would appreciate it.
Their automatic (and empowering to the users
as they call it) UI, is
somewhat interesting - but geez, they seriously got to look more into
ui design ;) (and yes, I know they did look into ui design to empower
their users, but I simply don't think their UI has value in other
areas besides being provocative and different ;)
And as I understand the authors then it is the BCO and the automatic created UI that is their focal point, but I don't understand why they have not utilized existing technologies that is close to almost do the same....like the JavaBeans API ? JavaBeans is more than just a naming standard for properties! It was build for allowing IDE's to inspect objects and build intelligent UI's!
It got an Introspection API which one could use to discover all the details of an object and the API is extensible in a much more non-intrusive way than Naked Object does it.
What about using standard property listeners ? Why limit you to use jdk 1.1 ? Who want's to only use Vector, and why not utilize the Collections API interfaces to make their object structure much more standard compliant ?
In the end I encourage the authors to work on their core concepts: BCO and automatic UI's (even though I don't think it will cover more than a few useful applications). But they should really look into using more JDK API's for this, so the framework becomes more useful in real-life applications.
P.S. And why is their catch all blocks and printStackTrace() multiple places in the source of a system that candidates for being used in more than just prototype systems ?
|
|
|
Showing 111 to 114 of 114 blog entries |