It has been noted that history repeats itself, first as tragedy and then as farce. I recently experienced this first hand when I had to deliver a runnable Java application to a client. I've done this many times and it's always fraught with complications. There is plenty of room for error when gathering all of an application's JAR files, writing the launch scripts for DOS and Unix (and Cygwin), and making sure that the client's environment variables all point to the right place.
One of the most populare articles in this blog so far ist the one about, well: Hibernate Sessions in Two Tier Rich Client Applications .
Log4j has three main components: loggers , appenders and layouts . These three types of components work together to enable developers to log messages according to message type and level, and to control at runtime how these messages are formatted and where they are reported. Logger hierarchy The first and foremost advantage of any logging API over plain System.out.println resides in its ability to disable certain log statements while allowing others to print unhindered. This capability assumes that the logging space, that is, the space of all possible logging statements, is categorized according to some developer-chosen criteria.
<hibernate-configuration> <session-factory> <property name = “hibernate.connection.driver_class” > oracle.jdbc.driver.OracleDriver </property> <property name = “hibernate.connection.url” > jdbc:oracle:thin:@servername.domainname.com:1521:dbname </property> <property name = “hibernate.connection.username” > username </property> <property name = “hibernate.connection.password” > password </property> <property name = “hibernate.connection.pool_size” > 10 </property> <property name = “show_sql” > true </property> <property name = “dialect” > org.hibernate.dialect.Oracle10gDialect </property> <property name = “connection.autocommit” > true </property> <!
At JBoss World last week in Berlin I presented some advanced Hibernate patterns.