第一个Hibernate程序

类别:Java 点击:0 评论:0 推荐:

使用Eclipse

建立工程,源码目录为src 输出目录为bin

基础类FontClass 有字段:long recordID、String fontName、Timestamp addTime 以及相应的set、get方法

对应的数据库表为

Font

CREATE TABLE font(

  recordID bigint(20) NOT NULL auto_increment,

  fontName varchar(50) NOT NULL default '隶书',

  addTime Timestamp,

  PRIMARY KEY  (recordID)

) TYPE=MyISAM;

 

建立对应FontClass的hbm文件

font.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

   "-//Hibernate/Hibernate Mapping DTD//EN"

   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

 

<hibernate-mapping>

    <class name=" FontClass" table="font">

        <id name="recordID" column="recordID">

           <generator class="increment"/>

       </id>

        <property name="fontName"/>

        <property name="addTime"/>

    </class>

</hibernate-mapping>

 

在src下面建立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-2.0.dtd">

 

<hibernate-configuration>

    <session-factory name="java:/hibernate/HibernateFactory" >

 

       <!-- local connection properties -->

       <property name="hibernate.connection.url">jdbc:mysql://localhost/db</property>

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

       <property name="hibernate.connection.username">xxx</property>

       <property name="hibernate.connection.password">xxx</property>

       <!-- property name="hibernate.connection.pool_size"></property -->

 

       <!-- dialect for MySQL -->

        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

 

        <property name="hibernate.show_sql">true</property>

        <mapping resource="font.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

编写测试用例

 

SessionFactory factory = new Configuration().configure().buildSessionFactory();

Session s = factory.openSession();

Transaction tx = s.beginTransaction();

MMSTemplateFontInfoClass font = new MMSTemplateFontInfoClass();

font.setFontName("隶书");

s.save(font);       

tx.commit();

s.flush();

查询可以使用

List list = s.find("from FontClass where fontName='草书'");

这里要注意数据库的字符集要使用gbk

或者使用

Query q = s.createQuery("from FontClass");

        //  这句话的意思是说查询结果从第几行开始列出数据

        q.setFirstResult(0);

        //  这句话的意思是取多少条数据,就跟SQL SERVER的TOP方法和MYSQL的LIMIT方法一样的意思。

        q.setMaxResults(3);

        //  得到一个ScrollableResults,可滚动的,如果你的数据库支持游标自由移动的话可以加上,

        //  也就是说可以判断查询结果有没有值,或者移动到下一行记录等等。

        //ScrollableResults sc = q.scroll();

        //  返回一个List接口,用来遍历结果集

        list = q.list();

本文地址:http://com.8s8s.com/it/it11383.htm