Maven 2 + Hibernate 3.2 + MySQL Пример (Аннотация)
Note
Эта статья устарела, и некоторая информация больше не актуальна в последней разработке Hibernate. Вам следует обратиться к этому последнему руководству -Maven 3 + Hibernate 3.6.3 + Oracle 11g Example (Annotation).
Это руководство изменит предыдущийMaven 2 + Hibernate 3.2 + MySQL Example (XML mapping) и заменит файл сопоставления XML Hibernate кодом аннотации.
Инструменты и технологии, используемые в этой статье:
-
Maven 2.2.1
-
JDK 1.6.0_13
-
Hibernate 3.2.3.GA
-
MySQL 5.0
1. Создать инфраструктуру проекта
Создать инфраструктуру проекта заMaven + Hibernate (XML mapping file) + MySQL Example
2. Добавить репозиторий JBoss
Репозиторий JBoss вpom.xml
необходим для загрузки библиотеки аннотаций Hibernate.
JBoss repository http://repository.jboss.com/maven2/
3. Добавить Hibernate аннотации зависимость
Добавьте зависимости hibernate-annotations и hibernate-commons-annotations вpom.xml
.
hibernate-annotations hibernate-annotations 3.3.0.GA hibernate-commons-annotations hibernate-commons-annotations 3.0.0.GA
Файл: pom.xml
4.0.0 com.example.common HibernateExample jar 1.0-SNAPSHOT HibernateExample http://maven.apache.org JBoss repository http://repository.jboss.com/maven2/ mysql mysql-connector-java 5.1.9 hibernate hibernate3 3.2.3.GA hibernate-annotations hibernate-annotations 3.3.0.GA hibernate-commons-annotations hibernate-commons-annotations 3.0.0.GA dom4j dom4j 1.6.1 commons-logging commons-logging 1.1.1 commons-collections commons-collections 3.2.1 cglib cglib 2.2 javax.transaction jta 1.1
4. Обновить путь к классу проекта
Введите «mvn eclipse:eclipse
» в командной строке, чтобы загрузить библиотеку зависимостей и обновить путь к классам проекта Eclipse.
5. Обновление HibernateUtil.java
Обновите «HibernateUtil
», чтобы использовать «AnnotationConfiguration» вместо «Configuration» для создания фабрики сеансов Hibernate.
Ранее использовался «Конфигурация» - для файла отображения XML Hibernate
return new Configuration().configure().buildSessionFactory();
Измените его на «AnnotationConfiguration» - для поддержки аннотаций в спящем режиме
return new AnnotationConfiguration().configure().buildSessionFactory();
Файл: HibernateUtil.java
package com.example.persistence; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new AnnotationConfiguration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } }
6. Обновить модель класса
Обновите «Stock.java», чтобы использовать аннотацию следующим образом:
Stock.java
package com.example.common; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.UniqueConstraint; @Entity @Table(name = "stock", catalog = "example", uniqueConstraints = { @UniqueConstraint(columnNames = "STOCK_NAME"), @UniqueConstraint(columnNames = "STOCK_CODE") }) public class Stock implements java.io.Serializable { private Integer stockId; private String stockCode; private String stockName; public Stock() { } public Stock(String stockCode, String stockName) { this.stockCode = stockCode; this.stockName = stockName; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "STOCK_ID", unique = true, nullable = false) public Integer getStockId() { return this.stockId; } public void setStockId(Integer stockId) { this.stockId = stockId; } @Column(name = "STOCK_CODE", unique = true, nullable = false, length = 10) public String getStockCode() { return this.stockCode; } public void setStockCode(String stockCode) { this.stockCode = stockCode; } @Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20) public String getStockName() { return this.stockName; } public void setStockName(String stockName) { this.stockName = stockName; } }
7. Удалить существующий файл отображения Hibernate XML
Удалите существующий файл отображения Hibernate XML - «Stock.hbm.xml», это больше не требуется.
8. Обновить файл конфигурации Hibernate
Обновите файл конфигурации Hibernate - hibernate.cfg.xml.
Ранее у него был XML-файл отображения Hibernate с тегом «mapping resource»
Измените его на класс модели с тегом «класс отображения»
Файл: hibernate.cfg.xml
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/example root org.hibernate.dialect.MySQLDialect true
9. Обзор структуры проекта
Похоже, что несколько файлов были изменены, проверьте его и убедитесь, что структура папок выглядит следующим образом:
10. Запустите его и посмотрите вывод
Запустите ваш App.java, он вставит новую запись в таблицу «Stock». Результат должен быть таким же, как и в предыдущем примере с файлом отображения Hibernate XML.
Maven + Hibernate + MySQL ... Hibernate: insert into example.stock (STOCK_CODE, STOCK_NAME) values (?, ?)
Готово.
Скачать -Maven-Hibernate-annotation-MySQL-Example.zip (8KB)