Hibernate ORM 4.1.0 Release

Hibernate ORM 4.1.0 has just been released. This release adds a few new features, as well as a bunch of improvements and bug fixes. Some features in particular include:

  • A new (actual) API for loading by natural identifiers. See mainly HHH-2879 and HHH-6974. Additionally, see my earlier post on this feature.
  • Addition of a TenantIdentifierResolver for use with multitenancy in getCurrentSession use cases. See HHH-6336
  • The ability to provide custom dirty handling. See HHH-3910 and HHH-6998

See the 4.1 release notes for the full details.

Additionally, quite a bit of work went into the documentation for this release. The JPA/HEM documentation has been completely consumed into Hibernate Reference Documentation and Hibernate Developer Guide. Mostly annotation/mapping information went into the former, while everything else went into the latter. Other efforts such as documenting multitenancy, services, etc when intoHibernate Developer Guide as well. The focus now, as we move ahead will be folding the information from Hibernate Reference Documentation into Hibernate Developer Guide.

3.6.10 was released today as well. It contains some bugfixes. Again, see the release notes for the details.

P.S. A quick note about the name Hibernate ORM. This refers to exactly what we previously called Hibernate Core. A brief history is that initially there was just Hibernate, but as the team started working on related projects (Hibernate Search, etc.) we agreed to refer to what had been just Hibernate as Hibernate Core. We recently decided that the core portion of the name was just a bad choice, as it doe not give any clue as to the intent. Hence Hibernate ORM.

The End Of ERP – A moment of silence for

Much has been discussed about SAP’s pending $3.4B acquisition of SuccessFactors, and now Oracle’s $1.9 billion deal to buy Taleo. Rightly, SAP and Oracle have been praised for trying to bolster their cloud offerings with these moves. But, in a few years, I wonder if it will really matter. Because, while SAP and Oracle are obviously trying to get with the times by offering their services via the cloud, it may be too late. Why? Because, in short, ERP – enterprise resource planning software – is on its deathbed.

That’s right. ERP’s days are numbered. And it is because of a fundamental shift that is taking place regarding how people consume products and services driven by the massive growth of the cloud itself.

I’m referring to the shift we are experiencing away from a 20th century product-based, “buy once” economy to a 21st century services-based “Subscription Economy” centred around recurring customer relationships.

Think about it: there is a very good chance you are one of the exploding number of consumers who now access their music via a subscription such as Pandora or Spotify.  Perhaps you are one of the many people who have stopped renting DVDs in favor of streaming your movies over Netflix.  Or, you could be one of the growing number of consumers who have eschewed owning a car to accessing one via a subscription with Zipcar. Or, maybe you are one of the growing list of companies who are voting “no” to buying hardware and software and instead are using apps and computing power served up from the cloud. As an economy and a culture, we are rapidly moving away from owning tangible goods and, instead, gravitating towards becoming members of services that provide us with experiences  – such as listening to a song, using a car, watching a movie or collaborating with our colleagues.

Of course, this cultural transformation has profound implications for business models. Why? Success is no longer gauged by counting how many units of your product you have sold. Rather, success is measuring how many customers are using your service on a recurring basis and how successful you are monetizing those recurring relationships.

Today, the Subscription Economy is fuelling massive changes across communications, media, technology, consumer services and other billion dollar industries that are embracing subscription revenue models. In addition to the names above, innovative companies that adopted the subscription business models to fundamentally transform their industries include Salesforce.com, Box, Tata, VNU Media and Zendesk.

But, it is not just the upstarts that are leveraging the subscription model. A greater indicator of this shift is that traditional product companies such as Dell are racing to re-invent themselves around services. Dell recognized that selling low-margin hardware was simply much less lucrative than offering services. Consequently, Dell has acquired service companies and refocused its efforts around, “pricing our products based on value rather than based on cost,” according to Michael Dell. And it is working. In a recent Q3 earnings call, Michael Dell stated, “This is a new Dell…in Q3, our enterprise solutions and service business grew 8% to a record high $4.7 billion.”

And Dell is just one of the many titans of industry that have shifted to a service-based model. According to a recent Gartner Group report, “by 2015, 35% of Global 2000 companies with non-media digital products will generate incremental revenue of 5% to 10% through subscription-based services and revenue models.”

Why does all of this signal the death of ERP? It’s because the rigid ERP systems from SAP, Oracle and others were designed specifically for the 20th century manufacturing era rather than the 21st century services-based world. Because ERP was built to track products that can be put on a pallet, versus offering services that are consumed over time, subscription businesses using this legacy technology struggle over and over again with the fundamental questions:

  • Who are my customers? Try asking SAP or Oracle how many active customers you have at any one time. The concept simply doesn’t exist. Orders, Accounts, and Products? Sure. Ask your ERP how much up-sell business you’ve done, or how many customers have renewed in the past year – and you’ll get a blank stare. ERP is simply not built around customer-centric transactions. In a Subscription Economy, unless you can monetize customer relationships over time, you’re dead in the water.
  • How can I price this service the way I want to? Subscription services run the gamut from simple monthly recurring charges, to usage based charges, to one-time charges, to “all of the above.” Unfortunately, ERP systems force companies to resort to hokey workarounds to get their pricing right, like creating different products for every month of the year.  “February Service SKU” anyone? And simple cost-plus pricing doesn’t apply to services. Instead, businesses want to do rapid A-B price testing when trying to gauge appetite for a new service or offering. Meanwhile, a single price change in an ERP system can take weeks.
  • Where’s the “Renew” button? Subscriptions are all about an ever-changing lifecycle as customers sign-up, upgrade, add-on, and ultimately renew their service. At their core, ERP systems only give you a “Buy” button for tracking transactions.  They’re missing the critical tools you need to process this lifecycle over time.
  • Why can’t I sell to everyone? Subscription Economy companies like Salesforce.com and Box have found success by selling their services to everyone from individual users up through very large enterprises. They need tools for managing things like high volume recurring payments in the B2C world, as well as tools for managing high-complexity invoices and contracts in the B2B world. And those tools need to manage customers that may come through different channels such as web self-service, mobile devices, direct or channel sales or even Facebook. Legacy enterprise technology makes you chose one or the other, when what you really need is the ability to sell B2Any.
  • What’s going on with my financials? Subscription businesses live or die by their ability to measure the ways that bookings, billings, cash flow, and revenue are inter-related.  Unfortunately, this data lives in different software silos.  Bookings fall into CRM, billings and cashflow live in your GL or ERP system, and revenue is too often calculated in a series of complex spreadsheets. Good luck stringing all of that together.

It’s for all of these reasons that ERP’s days are numbered. The Subscription Economy demands new ways of both measuring and monetizing customer relationships.  Companies must break out of the shackles of ERP if they are to succeed in this new world. Or, risk being buried alongside it.

Original post by Tien Tzuo

Instalando JBossAS Tools para Eclipse Juno

Para a instalação do JbossAS Tools, onde temos as ferramentas para usar o JBoss 6 Server no Eclipse Juno, use o “Help->Install New Software“, cole no “work with:” a
seguinte URL http://download.jboss.org/jbosstools/updates/development/juno/ — aguarde um pouquinho, e escolha para instalar on itens conforme figura abaixo:

Abra o item “Abridged JBoss Tools 3.3“, e instale “Hibernate Tools“, “JBoss Archive Tools“,  “JBossAS Tools” e “JMX Console“…

Dica: Não basta fazer restart no Eclipse, tem que sair e depois abrir novamente.

nautilus-open-terminal, a terminal quick launch

Tonite it’s getting late but I wanted to post something that is useful for quickly getting to the shell from any GUI location. The package nautilus-open-terminal does just what you might guess it does. It allows you to launch a gnome-terminal from a right-click within nautilus.

You might remember I blogged about something similar long-long ago with nautilus scripts.  This is based on the same idea, but now wrapped in a nice shiny deb package.  From the package description:

"Nautilus plugin for opening terminals in arbitrary local paths nautilus-open-terminal is a proof-of-concept Nautilus extension which allows you to open a terminal in arbitrary local folders."

To install this quick-launch to the terminal simply run:

sudo apt-get install nautilus-open-terminal

You may need to restart gnome / nautilus for the change to take effect, but afterwards you’ll have a “open terminal” button on your right-click menu anywhere within nautilus or gnome-desktop area.  Enjoy.

Usando Maven da maneira fácil

Introdução

Apache Maven é um projeto de software e ferramentas de compreensão. Baseado no conceito de um Project Object Model (POM), o Maven pode gerenciar um projeto da construção, elaboração de relatórios e documentação a partir de uma peça central de informações. Maven pode fazer mais do que apenas construir software – mas pode ajudar com os testes, executar aplicações web e produzir relatórios sobre os projetos, bem como qualquer número de outras tarefas previstas pelo plug-ins. Esta documentação é para aqueles que têm o código fonte num projeto que deseja usar com o Maven, e gostaria de saber como usar Maven para construí-lo (ou executar outras tarefas comuns). Essa documentação é útil para novos usuários Maven. Download

Instalação do Maven

Maven é um aplicativo Java, então você deve ter necessariamente o Java instalado no seu ambiente. Instale (unzip) num diretório de sua preferência (eu gosto /opt). Após a instalação, e colocar o ${maven}/bin no path, crie a variável de ambiente M2_HOME apontando pro Maven.

set M2_HOME=c:\Java\apache-maven-3.0.2
set PATH=%M2_HOME%\bin;%PATH%

ou

export M2_HOME=/opt/apache-maven-3.0.2
PATH=$M2_HOME/bin:$PATH

Para testar, use o comando abaixo numa console:

mvn --version

Ela deve imprimir a sua versão do Maven, por exemplo:

Apache Maven 3.0 (r1004208; 2010-10-04 08:50:56-0300)
Java version: 1.6.0_23
Java home: /opt/jdk1.6.0_23/jre
Default locale: pt_BR, platform encoding: UTF-8
OS name: "linux" version: "2.6.35-25-generic-pae" arch: "i386" Family: "unix"

Configurando o Maven

Por default o Maven será executado com padrões sensíveis pré-configurados, sendo assim você pode ir rodando direto. No entanto, se você estiver operando em um ambiente restrito ou atrás de um firewall, talvez seja necessário preparar-se para executar o Maven, uma vez que requer acesso de gravação para o diretório home: a) ~/.m2 no Linux e Mac OS X b) C:\Documents and Settings\username\.m2 no Windows) e acesso à rede para baixar as dependências binárias (maven repo).

A Configuração do Maven ocorre em três níveis

Projeto – configuração mais estática ocorre no pom.xml do projeto

Instalação – esta configuração é adicionada uma única vez para uma instalação Maven

Usuário – esta é a configuração específica para um determinado usuário A separação é muito clara – o projeto define a informação que se aplica ao projeto, não importa quem está construindo, enquanto as outras duas definições, para o ambiente atual.

Nota: a instalação e configuração do usuário não podem ser usados para adicionar informações sobre o projeto compartilhado, como por exemplo, a criação, ou para toda a empresa. Para isso, você deve ter em seus projetos uma forma de herdar de um projeto pai, um pom.xml para toda a empresa. Você pode especificar a configuração de usuário em ${user.home}/.m2/settings.xml. A referência completa para o arquivo de configuração está disponível aqui. Esta seção irá mostrar como fazer algumas pequenas configurações comuns. Observe que o arquivo não é necessário, nesse caso, a configuração padrão será utilizada se não esse não for encontrado.

O POM

O arquivo pom.xml é o núcleo de uma configuração do projeto no Maven. É o único arquivo de configuração que contém a maioria das informações necessárias para construir um projeto no jeito que você quer. O POM é enorme e pode ser assustador em sua complexidade, mas não é necessário entender todos os meandros, apenas usá-lo eficazmente. O POM do projeto é:

<project
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelversion>4.0.0</modelversion>
  <groupid>com.mycompany.app</groupid>
  <artifactid>my-app</artifactid>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  Maven Quick Start Archetype
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupid>junit</groupid>
      <artifactid>junit</artifactid>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>