8

Hibernate 3構成ファイル、SessionFactory クラスを貼り付けて、この config.xml と JPA 注釈付きの Bean を構成しました。私がHibernate 4を使用していた場合、コード レベルでのコンテキストの変更、または一般的な言語の非常に幅広い違いや進歩があったかどうかを知りたいです。

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>
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.2.144:1521:xe</property>
        <property name="hibernate.connection.username">prateek</property>
        <property name="connection.password">prateek</property>
        <property name="connection.pool_size">1</property>
        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
        <mapping class="com.vaannila.domain.User1" />
    </session-factory>
</hibernate-configuration>

接続を確立する静的 Java クラス (SessionFactory Helper)

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class SessionFactoryHelper {
    private static final SessionFactory sessionFactory;

    static {
        try {            
            /*
             * Build a SessionFactory object from session-factory configuration 
             * defined in the hibernate.cfg.xml file. In this file we register 
             * the JDBC connection information, connection pool, the hibernate 
             * dialect that we used and the mapping to our hbm.xml file for each 
             * POJO (Plain Old Java Object).
             * 
             */
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable e) {
            System.err.println("Error in creating SessionFactory object." 
                + e.getMessage());
            throw new ExceptionInInitializerError(e);
        }
    }

    /*
     * A static method for other application to get SessionFactory object 
     * initialized in this helper class.
     * 
     */
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

ビーンクラス

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

@Entity
@Table(name="USER1")
public class User1 {

    private Long id;
    private String name;
    private String gender;
    private String country;
    private String aboutYou;
    private Boolean mailingList;

    @Id
    @GeneratedValue
    @Column(name="USER_ID") 
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    @Column(name="USER_NAME")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Column(name="USER_GENDER")
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }

    @Column(name="USER_COUNTRY")
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

    @Column(name="USER_ABOUT_YOU")
    public String getAboutYou() {
        return aboutYou;
    }
    public void setAboutYou(String aboutYou) {
        this.aboutYou = aboutYou;
    }

    @Column(name="USER_MAILING_LIST")
    public Boolean getMailingList() {
        return mailingList;
    }
    public void setMailingList(Boolean mailingList) {
        this.mailingList = mailingList;
    }

}
4

1 に答える 1

6

hibernate.cfg.xml

ファイルhibernate.cfg.xmlは問題ありません。hibernate-configuration-3.0.dtdのバージョンがまだ3.0であると混乱しているように見えるかもしれませんが、それはそうです。DTDは更新されませんでした。たとえば、の代わりに、名前の前に休止状態を付けた名前を使用したい場合がhibernate.show_sqlありshow_sqlます。プロパティの名前は、ドキュメントから見つけることができます。通常、使用されるDTD_locationはhttp://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd(vs. ..sourceforge ...)ですが、両方とも機能するはずです。

セッションファクトリーの構築

APIからわかるように、buildSessionFactoryは非推奨です。これが4.xでの構築方法です。

Configuration conf = new Configuration();
conf.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry();        
sessionFactory = configuration.buildSessionFactory(serviceRegistry);

ドキュメントの多くの場所で、これはまだ最新ではありません。

エンティティに注釈を付ける

通常、Beanクラスのマッピングを変更する必要はありません。理由は、通常のJPAマッピングを使用しており、Hibernate3がJPA仕様で説明されているものの実装であるためです。

于 2012-07-16T08:03:03.753 に答える