初试Hibernate

    Hibernate是现在炙手可热的ORM工具,最近终于成功使用它做了一个小小的例子,算是入了门。下面就谈谈这个例子吧。

    该范例运行的环境是:JBuilder9 + SQL Server 2000 + Hibernate3.1。 首先下载hibernate3.1压缩包,解压到某个文件夹下,称为%hibernate%。 用SQL Server2000建立一个表,命名为CUSTOMER,表的结构如下: 

                             字段    |          类型         |
                           ----------+-----------------------+-------
                              CID    |            int        | 主键
                            USERNAME |     varchar(12)       | not null
                            PASSWORD |     varchar(12)       |


    用JBuilder9新建一个project,命名为example,我们用%example%表示该项目的文件夹。在菜单中选择:project -> project properties -> Required Libraries,加入%hibernate%/lib下的jar文件以及%hibernate%下的hibernate3.jar。 
    根据我们建立的CUSTOMER表,建立一个和它对应的类Customer,代码如下:

        import java.lang.String;

        public class Customer
        {
              private int id;
              private String username;
              private String password;

              public int getId()
              {
                   return id;
              }
              public String getPassword()
              {
                   return password;
              }
              public String getUsername()
              {
                    return username;
              }
              public void setId(int id) 
              {
                    this.id = id;
              }
             public void setPassword(String password)
             {
                    this.password = password;
             }
             public void setUsername(String username)
             {
                   this.username = username;
             }
       } 

    这个类就是CUSTOMER表的映射,我们用一个XML文件定义这种映射,命名为Customer.hbm.xml。内容如下:

        <?xml version="1.0"?>
        <!DOCTYPE hibernate-mapping PUBLIC
           "-//Hibernate/Hibernate Mapping DTD//EN"
           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

        <hibernate-mapping>
        <class name="Customer" table="CUSTOMER">
              <id name="id" column="CID"> //定义主键的映射
              </id>
              <property name="username" column="USERNAME" /> //定义字段的映射 
              <property name="password" column="PASSWORD" /> 
        </class> 
        </hibernate-mapping>

    此外,还需要一个XML文件定义hibernate的相关参数,命名为hibernate.cfg.xml。内容如下:

        <?xml version="1.0" encoding="utf-8" ?>
        <!DOCTYPE hibernate-configuration
           PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

        <hibernate-configuration>

        <session-factory name="java:/hibernate/HibernateFactory">
            <property name="show_sql">true</property> 
            <property name="connection.driver_class">
                     sun.jdbc.odbc.JdbcOdbcDriver //定义数据驱动
            </property>
            <property name="connection.url">
                     jdbc:odbc:SQL Server //定义数据库URL
            </property>
            <property name="connection.username">
                    sa //定义数据库密码
            </property>
            <property name="connection.password">
            </property>
            <property name="dialect">
                   org.hibernate.dialect.SQLServerDialect
            </property>

            <mapping resource="Customer.hbm.xml" />
        </session-factory>

        </hibernate-configuration> 

    选择make project编译源代码,然后把上面的两个xml文件放到%example%/classes下面,同时把%hibernate%/etc下面的文件log4j.properties一并复制到%example%/classes下面。 

    为了测试hibernate的效果,我们再编写一个test.java文件加入该项目,代码如下:

        import org.hibernate.*; 
        import org.hibernate.cfg.*;
        import java.lang.String;

        public class Test
        { 
             public static void main(String[] args) throws Exception 
             { 
                 try 
                 {
                      SessionFactory sf = new Configuration().configure().buildSessionFactory();
                      Session session = sf.openSession();
                      Transaction tx = session.beginTransaction();

                      for (int i = 0; i < 20; i++) 
                      {
                           Customer customer = new Customer();
                           customer.setId(i+1000);
                           customer.setUsername("customer" + String.valueOf(i));
                           customer.setPassword("good");
                           session.save(customer);
                      }
                      tx.commit();
                      session.close();

                 } catch (HibernateException e)
                  {
                       e.printStackTrace();
                  }
             }
        } 

    在该项目中运行test,可以看到在CUSTOMER表中插入了20条记录。但是我们在test.java中并没有直接调用JDBC,也没有直接使用SQL语句。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页