关闭

Hibernate 第一步(2006-06-05)

654人阅读 评论(0) 收藏 举报
  • 下载Hibernate软件和ant软件,然后解压缩
  • 我第一个例子的目录层次结构如下:

              Hibernate
                              -----build.xml
                              ----src
                                        --------onlyfun.caterpillar.FirstHibernate.java
                                        --------onlyfun.caterpillar.User.java
                              ----classes
                                        --------hibernate.cfg.xml
                                        --------onlyfun
                                                                --------caterpillar
                                                                                           --------FirstHibernate.class
                                                                                           --------User.class

  •   注意我的Hibernate目录是C:/hibernate/hibernate-3.2,我把用于Mysql连接的驱动程序mysql-connector-java-3.1.11-bin房子Hibernate目录的lib子目录下
  • 首先看build.xml,这里说明了很多问题,注意
                                            
     <?xml version="1.0" encoding="GBK"?>
    <project name="hibernate" basedir="." default="run">
    <!--****************************************************************************-->
    <property environment="env" />
    <property name="hibernateDir" value="C:/hibernate/hibernate-3.2"/>
    <property name="srcdir" value="src"/>
    <property name="classesDir" value="classes"/>
    <!--****************************************************************************-->
    <!-- 定义Hibernate和它所有JAR的classpath -->
    <path id="hibernate.lib.path">
            <fileset dir="${hibernateDir}/lib">
                <include name="**/*.jar"/>
            </fileset>

                     <fileset dir="${hibernateDir}">
                                         <include name="hibernate3.jar"/>
                    </fileset>
            </path>
           <!--定义class-->

             <path id="project.classpath">                          

                        <pathelement location="${classesDir}"/>

             </path>
        <!--****************************************************************************-->

            <!-- 创建存放编译文件的目录 -->
                <target name="init">                            
                          <mkdir dir="${classesDir}"/>
           </target>
     <!--**********************************************-->
           <!--这里开始编译-->
           <target name="compile" depends="init">          
                    <javac srcdir="${srcdir}" destdir="${classesDir}">
                                  <!-- 为编译添加Hibernate的类路径 -->
                                    <classpath refid="hibernate.lib.path" />
                   </javac>
             </target>
<!--**********************************************-->
<!--  运行编译好的类文件 -->
              <target name="run" depends="compile">         
                      <!-- 运行类 -->
                      <java classname="onlyfun.caterpillar.FirstHibernate">
                                     <!--说明这个class文件的位置-->
                                     <classpath refid="project.classpath"/>
                                     <!-- 添加Hibernate去运行Java文件 -->
                                    <classpath refid="hibernate.lib.path" />
                      </java>
                       <echo>配置成功echo>
             </target>

         </project>

  • 现在是两个类

    //现在是User类

    package onlyfun.caterpillar;
    public class User
    {
     private Integer id;
     private String name;
     private Integer age;
     // 必須要有一個預設的建構方法
     // 以使得Hibernate可以使用Constructor.newInstance()建立物件
     public User() {    }
     public Integer getId()
     {
      return id;
     }   
     public void setId(Integer id)
     {       
      this.id = id;
     }   
     public String getName()
     {       
      return name;   
     }   
     public void setName(String name)
     {
      this.name = name;  
     }       
     public Integer getAge()
     {
      return age;   
     }  
     public void setAge(Integer age)
     {      
      this.age = age;   
     }
    }

          

然后是FirstHibernate类

package onlyfun.caterpillar;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class FirstHibernate
{
 public static void main(String[] args)
 {       
  // Configuration 負責管理 Hibernate 配置訊息
  Configuration config = new Configuration().configure();
  // 根據 config 建立 SessionFactory
  // SessionFactory 將用於建立 Session
  SessionFactory sessionFactory = config.buildSessionFactory();
  // 將持久化的物件
  User user = new User();
  user.setName("caterpillar");
  user.setAge(new Integer(30));
  // 開啟Session,相當於開啟JDBC的Connection
  Session session = sessionFactory.openSession();
  // Transaction表示一組會話操作
  Transaction tx= session.beginTransaction();
  // 將物件映射至資料庫表格中儲存
  session.save(user);
  tx.commit();
  session.close();
  sessionFactory.close();
  System.out.println("新增資料OK!請先用MySQL觀看結果!");
 }
}

  • 最后是配置文件两个

    hibernate.cfg.xml文件:

    <?xml version="1.0" encoding="GB2312"?>
    <!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="show_sql">true</property>
      
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      
      <property name="connection.url">jdbc:mysql://localhost/sample</property>
      
      <property name="connection.username">root</property>
      
      <property name="connection.password">3008602</property>
      
      <mapping resource="onlyfun/caterpillar/User.hbm.xml"/>
     </session-factory>
    </hibernate-configuration>



    User.hbm.xml文件:


    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping     PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
     <class name="onlyfun.caterpillar.User" table="user">
      <id name="id" column="id" type="java.lang.Integer">
       <generator class="native"/>
      </id>
      <property name="name" column="name" type="java.lang.String"/>
      <property name="age" column="age" type="java.lang.Integer"/>
     </class>
    </hibernate-mapping>
  • 数据库结构:
    sample数据库,里面建立了一个表
    CREATE TABLE user (
        id INT(11) NOT NULL auto_increment PRIMARY KEY,
        name VARCHAR(100) NOT NULL default '',
        age INT
    );
  • 现在运行ant,然后到数据库里面查看,就发现有记录了
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:155625次
    • 积分:2704
    • 等级:
    • 排名:第14206名
    • 原创:109篇
    • 转载:8篇
    • 译文:2篇
    • 评论:28条
    最新评论