2011-08-16 80 views
0

我對Hibernate很陌生,只想查詢最初的基礎知識。hibernate主要方法調用

我已經建立了我的Hibernate bean作爲這樣...

package com.behaviour.chapter1; 

import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class User { 

    private int userId; 
    private String firstName; 

    @Id 
    public int getUserId() { 
     return userId; 
    } 
    public void setUserId(int userId) { 
     this.userId = userId; 
    } 
    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
} 

我有我的配置和hibernate.cfg.xml的數據庫連接。我的問題很簡單,我如何從一個主要方法實際調用它並在Hibernate3.6.6中使用它?我在線上學習了一個教程,但是它是用於Hibernate3.2的,它看起來有點不同。如果任何人都可以向我展示調用這個bean的一個非常簡單的主要方法,創建一個新用戶(這將在此表中創建一個用戶),這將不勝感激。同時 - 如果任何人有任何良好的Hibernate的教程鏈接,將是巨大的:)

感謝,

回答

4

有這樣的幾個方面,它是設計的選擇,一個基本的方式來實現,這將是從hibernate.cfg.xml文件中創建會話工廠的問題。確保文件可以位於你的類路徑中。

而使用下面的類,創建然後用於打開一個會話工廠對象新的Session

public class HibernateUtil 
    { 
    private static final SessionFactory sessionFactory; 

    static 
    { 
     try 
     { 
     // Create the SessionFactory from hibernate.cfg.xml 
     sessionFactory = new Configuration().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 class DaoFactory 
{ 
    public void create(Object obj)throws Exception 
    { 
    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 
    session.save(obj); 
    session.getTransaction().commit(); 
    } 
} 

Main

public static void main(String[] args) 
{ 
    try 
    { 
    User user = new User(); 
    user.setFirstName("david99world"); 
    DaoFactory factory = new DaoFactory(); 
    factory.create(user); 
    } 
    catch(Exception ex) 
    { 
    ex.printStackTrace(System.out); 
    } 
} 

編輯

hibernate.cfg.xml應該是這個樣子:

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
<!-- Database connection settings --> 
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.url">jdbc:mysql://localhost:3306/test</property> 
<property name="connection.username">root</property> 
<property name="connection.password">root</property> 

<!-- JDBC connection pool (use the built-in) --> 
<property name="connection.pool_size">1</property> 

<!-- SQL dialect --> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 

<!-- Enable Hibernate's automatic session context management --> 
<property name="current_session_context_class">thread</property> 

<!-- Disable the second-level cache --> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

<!-- Echo all executed SQL to stdout --> 
<property name="show_sql">true</property> 

<!-- Drop and re-create the database schema on startup --> 
<property name="hbm2ddl.auto">none</property> 

<mapping class="com.behaviour.chapter1.User"/> 

</session-factory> 
</hibernate-configuration> 
+0

啊,非常感謝你:)我可以問一下,你有我可以使用的模板hibernate.cfg.xml嗎?我嘗試了上面的內容,但是我得到的錯誤幾乎100%肯定是由於缺少一個或兩個屬性的XML文件。 – david99world

+0

查看編輯答案。 – Bitmap

+0

你是如何配置Hibernate的? –

1

我假設你已經設置了你的persistence.xml。如果是這樣,您可以使用以下Java代碼。你必須用你的JDBC設置數據和持久性單元替換「...」。

private static final String PERSISTENCE_UNIT = "..."; 

final Map<String, String> properties = new HashMap<String, String>(); 
properties.put("javax.persistence.jdbc.driver", "..."); 
properties.put("javax.persistence.jdbc.url", "..."); 
properties.put("javax.persistence.jdbc.user", "..."); 
properties.put("javax.persistence.jdbc.password", "..."); 

final EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT, properties); 
final EntityManager em = emf.createEntityManager(); 

User user = new User(); 
user.setUserID(0); 
user.setFirstName("David"); 

em.getTransaction().begin(); 
em.persist(user); 
em.getTransaction().commit(); 

HTH

+0

啊,非常感謝你,我還沒有安裝的persistence.xml;你能給我舉個例子嗎?另外,我仍然不確定要用什麼來填充PERSISTANCE_UNIT?你能給個例子嗎? – david99world