簡體   English   中英

使用Hibernate創建數據庫表

[英]Creation of the database tables with Hibernate

人!

我使用Servlets / JBoss / Hibernate / Mysql創建了一個小項目。

我將Hibernate自動生成表。 我的問題僅僅是:這些表何時生成? 當我抬起JBoss或在瀏覽器中調用servlet時應該創建表嗎?

因為我意識到只有在調用我的一個Servlet時才創建它們,並且我想象過當我提升JBoss時將創建它們。

對不起,很傻。

這是我的課:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="estacoes")
public class Estacao {

@Id
@GeneratedValue
private int id;

private String nome;
private String endereco;
private String temperatura;
private String energia;
private String porta;
private String sinal;    
private String bateria;

...getters/setters...

我的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

<persistence-unit name="arduinoserver">

    <!-- provedor/implementacao do JPA -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java:jboss/datasources/MysqlDS</non-jta-data-source>

    <!-- entidade mapaeada -->    
    <class>arduinoserver.beans.Estacao</class>

    <properties>
        <!-- propriedades do hibernate -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.connection.charSet" value="UTF-8" />
    </properties>
</persistence-unit>

還有我的DAO:

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import arduinoserver.beans.Estacao;

public class EstacaoDAO {

protected EntityManager entityManager;

public EstacaoDAO() {
    entityManager = getEntityManager();
}

private EntityManager getEntityManager() {
    EntityManagerFactory factory =     Persistence.createEntityManagerFactory("arduinoserver");
    if(entityManager == null) {
        entityManager = factory.createEntityManager();
    }

    return entityManager;
}

public Estacao getById(final int id) {
    return entityManager.find(Estacao.class, id);
}

@SuppressWarnings("unchecked")
public List<Estacao> findAll() {
    return entityManager.createQuery("FROM estacoes").getResultList();
}

public void persist(Estacao estacao) {
    try {
        entityManager.getTransaction().begin();
//          entityManager.persist(estacao);
        entityManager.merge(estacao);
        entityManager.getTransaction().commit();
    } catch(Exception ex) {
        ex.printStackTrace();
        entityManager.getTransaction().rollback();
    }
}




}

據我所知,Hibernate是在創建SessionFactory時創建表的。 應用服務器不會自動自行創建一個,因此通常不會在服務器啟動時創建表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM