terça-feira, 20 de dezembro de 2011

Geração de ID's para Oracle e MySql usando Hibernate


Aqui você tem exemplos de geração automática de ID's para banco de dados Oracle e MySql usando Hibernate.

Oracle

...

@Entity
@Table(name = "grupo")
public class Grupo implements GenericModel {


@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GRUPO_ID_SEQ")
@SequenceGenerator(name = "GRUPO_ID_SEQ", sequenceName = "GRUPO_ID_SEQ", allocationSize = 1)
@Column(nullable=false)
private Long id_grupo;

...


A sequence GRUPO_ID_SEQ deve existir no banco de dados.

Considerando que MySql não tem sequences, se você tentar usar o código acima com MySql você terá a  exceção abaixo em tempo de execução:

Caused by: org.hibernate.MappingException: Dialect does not support sequences
at org.hibernate.dialect.Dialect.getSequenceNextValString(Dialect.java:619)
at org.hibernate.id.SequenceGenerator.configure(SequenceGenerator.java:88)
at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:66)
at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:127)


MySQL

...
@Entity
@Table(name = "grupo")
public class Grupo implements GenericModel {


@Id
@GeneratedValue
@Column(nullable=false)
private Long id_grupo;

...


O campo id_grupo deve ser marcado como auto incremento no MySql.

segunda-feira, 12 de dezembro de 2011

PASSEI: 1Z0-894 Oracle Certified Expert Java Platform, Enterprise Edition 6 JavaServer Pages and Servlet Developer

Fiz a prova no dia 09/12 e consegui passar! Raspando, mas passei.

Estava tirando 70% nos Mocks e esperava passar com uma pontuação de 75% ou 80%, mas a prova foi mais difícil do que eu esperava e passei com 68%.

Como havia postado 22/09, eu baseei meus estudos no Mock e Study Guide da EPractize Labs, porque eu já havia lido o livro Head First J2EE1.4 da Katy Sierra algumas vezes em outras ocasiões. Também dei uma lida na spec de Servlet 3.0.

Eu não recomendo a EPractize Labs. O Study Guide é muito superficial e o Mock tem muitos erros. Além disso o Mock não está coerente com a prova real. A prova não cobra quase nada de Custom Tags e cobra muito da spec de Servlet 3.0, mas o Mock está ao contrário.

O que eu acredito que me salvou foi a página do Piotr (http://piotrnowicki.com/2011/03/jee-6-scwcd-mock-questions/) que tem 67 questões focadas na especificação de Servlet 3.0 e também o Mock da Enthuware (http://enthuware.com/index.php/mock-exams/oracle-certified-expert/oce-jsp-servlet-mock-questions).

Esse Mock é mais barato e a qualidade dele é infinitamente maior. A prova disso é que além de ser 100% Test Pass Garantee, eles devolvem o dinheiro caso você encontre 3 erros. Muitas questões do exame foram bem parecidas com as do Mock.

A minha dica para quem for se preparar para essa prova é:

* Estudar o livro Head First Servlets & JSP, segunda edição (JEE5): http://shop.oreilly.com/product/9780596516680.do?green=25526262438&cmp=af-mybuy-9780596516680.IP
* Estudar a Spec JSR-315 de Servlets 3.0: http://jcp.org/aboutJava/communityprocess/mrel/jsr315/index.html
* Responder as questões do Piotr
* Fazer o Mock do Enthuware

Seguindo esses passos com tempo, com certeza você se sairá melhor do que eu :-)

Bons estudos!