Hibernate conf via Spring
URL: mysql.com/doc
java. magnolia. apache. spring. hibernate. mobile.
Hibernate conf via Spring
URL: mysql.com/doc
Hibernate legt Mappingtabellen ohne primary Key an. Wenn dennoch jeder Entry nur ein mal vorkommen soll, macht es Sinn, als Datentyp keine List oder Collection sondern ein Set zu deklarieren.
Siehe Hibernate Manual: 2.2.5.3. Collections
There are dozens of Java frameworks out there, but most of them require you to learn special coding techniques and new, often rigid, patterns of development. Wicket is different. As a component-based web application framework, Wicket lets you build maintainable enterprise-grade web applications using the power of plain old Java objects (POJOs), HTML, Ajax, Spring, Hibernate, and Maven. Wicket automatically manages state at the component level, which means no more awkward HTTPSession objects. Its elegant programming model enables you to write rich web applications quickly.
Wicket in Action is an authoritative, comprehensive guide for Java developers building Wicket-based web applications. This book starts with an introduction to Wicket’s structure and components, and moves quickly into examples of Wicket at work. Written by two of the project’s earliest and most authoritative experts, this book shows you both the “how-to” and the “why” of Wicket. As you move through the book, you’ll learn to use and customize Wicket components, how to interact with other technologies like Spring and Hibernate, and how to build rich, Ajax-driven features into your applications.
Weitere Infos auf manning.com
MySQL in Version 5 will gern und viel seine Tabellen mit dem characterEncoding latin1_swedish_ci anlegen. Das führt jedoch bei Strings mit Sonderzeichen (zum Beispiel Buchstaben aus dem griechischen Alphabet) zu einigen Problemem. Ein generelles Encoding auf utf8 löst die meisten.
Leider kann Hibernate von Haus aus dieses Encoding nicht einstellen. Verschiedene Testes führen nicht zum Erfolg:
Versuch 1: der Entity-Annotation einen Parameter mitgeben. Leider gibt es hier aber keinen Paramter der diese Einstellung verwalten kann. Auch ein alter table nach dem @Entity via @SQLUpdate(sql=“ALTER TABLE …. CHARACTER SET utf8 COLLATE utf8_general_ci;“) führt nicht zum Erfolg.
Versuch 2: in der Konfiguration hibernate.cfg.xml die Connection URL anpassen:
<property name=“connection.url“> jdbc:mysql://server/database?useUnicode=true&characterEncoding=UTF8 </property>
… doch in bezug auf das Anlegen der Tabellen zeigt dies keine Wirkung.
Versuch 3: Einen eigenen SQL Dialekt schreiben! das geht bei Hibernate denkbar einfach, da man die bestehenden Dialekte überschreiben kann.
import org.hibernate.dialect.MySQLMyISAMDialect;
/**
* MySQL Dialect for using utf8 table types
*/
public class MysqlDialectUtf8 extends MySQLMyISAMDialect {
public String getTableTypeString() {
return “ ENGINE=MyISAM DEFAULT CHARSET=utf8″;
}
}
In der hibernate.cfg.xml wird nun einfach auf den eigenen Dialect verwiesen:
<property name=“dialect“>
de.my-container.project.hibernate.dialect.MysqlDialectUtf8
</property>
et voila. Die Tabellen werden nun mit dem characterEncoding UTF 8 angelegt, womit Sonderzeichen keine Probleme mehr machen!