Рубрики
Без рубрики

Maven 2 + Гибернация 3.2 + Пример MySQL (Аннотация)

– Maven 2 + Гибернация 3.2 + Пример MySQL (Аннотация)

Этот учебник изменит предыдущий пример Maven 2 + Hibernate 3.2 + MySQL (сопоставление XML) и заменит файл сопоставления XML в режиме гибернации кодом аннотации.

Инструменты и технологии, используемые в этой статье:

  1. Maven 2.2.1
  2. JDK 1.6.0_13 JDK 1.6.0_13
  3. Впадать в спячку 3.2.3.GA
  4. 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/”