Этот учебник изменит предыдущий пример Maven 2 + Hibernate 3.2 + MySQL (сопоставление XML) и заменит файл сопоставления XML в режиме гибернации кодом аннотации.
Инструменты и технологии, используемые в этой статье:
- Maven 2.2.1
- JDK 1.6.0_13 JDK 1.6.0_13
- Впадать в спячку 3.2.3.GA
- MySQL 5.0
1. Создание инфраструктуры проекта
Создание инфраструктуры проекта в Maven + Гибернация (файл сопоставления XML) + Пример MySQL
2. Добавить репозиторий JBoss
Репозиторий JBoss в pom.xml
требуется для загрузки библиотеки аннотаций Hibernate.
JBoss repository http://repository.jboss.com/maven2/
3. Добавить зависимость аннотации гибернации
Добавьте зависимость hibernate-аннотации и hibernate-commons-аннотации в 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.mkyong.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
” для использования ” Аннотации конфигурации ” вместо ” Конфигурации ” для создания фабрики сеансов гибернации.
Ранее использовалось “Конфигурация” – Для файла отображения XML в режиме гибернации
return new Configuration().configure().buildSessionFactory();
Измените его на “Аннотацияконфигурация” – Для поддержки аннотаций спящего режима
return new AnnotationConfiguration().configure().buildSessionFactory();
Файл: HibernateUtil.java
package com.mkyong.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.mkyong.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 = "mkyong", 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. Удалить существующий XML-файл отображения гибернации
Удалить существующий XML–файл отображения гибернации – “Stock.hbm.xml ” , этого больше не требуется.
8. Обновить файл конфигурации гибернации
Обновите файл конфигурации гибернации – hibernate.cfg.xml .
Ранее у него был XML-файл отображения Hibernate с тегом “ресурс отображения”
Измените его на класс модели с тегом “класс сопоставления”
Файл: hibernate.cfg.xml
false com.mysql.jdbc.Driver password jdbc:mysql://localhost:3306/mkyong root org.hibernate.dialect.MySQLDialect true
9. Обзор структуры проекта
Похоже, что несколько файлов были изменены, просмотрите их и убедитесь, что структура папок следующая:
10. Запустите его и посмотрите результат
Запустите свой App.java , он вставит новую запись в таблицу “Запасы”. Результат должен быть таким же, как и в предыдущем примере файла отображения XML в режиме гибернации.
Maven + Hibernate + MySQL ... Hibernate: insert into mkyong.stock (STOCK_CODE, STOCK_NAME) values (?, ?)
Сделано.
Оригинал: “https://mkyong.com/hibernate/maven-hibernate-annonation-mysql-example/”