網上 Hibernate 教程多夾帶 Tomcat、Eclipse、Log4j、Struts、XDoclet、甚至 JBoss,造成「Hibernate 複雜難懂」誤解,打擊積極性。本文剝離所有無關技術,演示最小安裝與核心功能,門檻低到不能再低。
sourceforge.net/hibernate 下載最新。apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip。c:\dev\。ANT_HOME、JAVA_HOME,加入 PATH。My1stHibernate/src/ (源碼、映射文件)classes/ (編譯輸出)lib/hibernate/ (hibernate2.jar + lib/* )db/ (JDBC Driver jar)創建 hibernate_test 庫,建表 CUSTOMER (CID int PK, USERNAME varchar(12), PASSWORD varchar(12))。
Customer.javaPOJO,含 id、username、password 及 getter/setter。
Customer.hbm.xml<hibernate-mapping>
<class name="Customer" table="CUSTOMER">
<id name="id" column="CID"><generator class="increment"/></id>
<property name="username" column="USERNAME"/>
<property name="password" column="PASSWORD"/>
</class>
</hibernate-mapping>
Test.javaConfiguration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
for (int i=0; i<200; i++) {
Customer c = new Customer();
c.setUsername("customer"+i);
c.setPassword("customer");
session.save(c);
}
tx.commit();
session.close();
build.xml (Ant)定義 classpath (lib/*.jar + classes)、init (mkdir classes)、build (javac + copy 非 java 文件)、run (java Test)、clean (delete classes)。
hibernate.cfg.xml<session-factory name="Java:/hibernate/HibernateFactory">
<property name="show_sql">true</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:oci8:@hibernate_test</property>
<property name="connection.username">...</property>
<property name="connection.password">...</property>
<property name="dialect">net.sf.hibernate.dialect.Oracle9Dialect</property>
<mapping resource="Customer.hbm.xml"/>
</session-factory>
非 Oracle 用戶參考 Hibernate 包 src/hibernate.properties 替換對應值。
cd My1stHibernate && ant run
輸出 SQL 打印與 BUILD SUCCESSFUL。數據庫 CUSTOMER 表新增 200 條記錄,全程零 JDBC 代碼。換庫只需改配置文件。
此為窺冰山一角,但已跨過「環境搭建」最大心理障礙。朋友 30 分鐘跑通,激發興趣。千里之行始於足下,以此為起點邁向 Hibernate 大道。