因为我的例子是连接Sql Server 2000的数据库。所以,你得首先安装好Sql Server 2000。然后创建一个student的数据库实例,并创建一张student_table的表。主要包括以下4个字段:
id varchar 32字节 主键
stuName varchar 10字节
cardId varchar 10字节
age int
如果你用的是Workshop或者是别的带有Hibernate数据库联接IDC工具的话,后面的工作就简单了。我们这里先来自己手动写一个。我先说以下,创建后的目录结构大致如下:
src(目录)
BusinessManager(包)
BM.java
model(包)
StudentTable.java
StudentTable.Student.hbm.xml
persistence(包)
DAOImp.java
HibernateUtil.java
hibernate.cfg.xml
lib(目录)
antlr-2.7.6.jar
asm-attrs.jar
asm.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-lang-1.0.1.jar
commons-logging-1.0.4.jar
dom4j-1.6.1.jar
ehcache-1.2.jar
jta.jar
log4j-1.2.11.jar
msbase.jar
mssqlserver.jar
msutil.jar
上面已将需要的库文件都包含了,至于每个文件都是做什么的你可以去分别找一下资料了解一下。这里特别要说明的是最后那3个ms开头的文件,这是微软官方发布的用户java连接数据库的驱动文件,你可以去微软网站上下载。注意3个都必须加在进来。还有要提醒大家的是,不是拷贝到lib文件夹下就行了的,主要还是在eclipse的“项目-〉属性-〉构建路径-〉库”中,将这些库都加载进来,否则编译时会依然找不到这些库的。
下面分别是源文件:
import java.util.List;
import persistence.DAOImp;
import model.StudentTable;
public class BM
...{
/** *//**
* @param args
*/
public static void main(String[] args)
...{
// TODO 自动生成方法存根
// 新建学生
StudentTable stu = new StudentTable();
stu.setStuName("Tom");
stu.setCardId("96021313");
stu.setAge(30);
DAOImp.createStu(stu);
// 修改学生
// List list = DAOImp.getAllStu();
// StudentTable stu = (StudentTable)list.get(0);
// stu.setStuName("Jarry");
// stu.setCardId("96031105");
// if (stu.getAge() < 18)
// stu.setAge(18);
// DAOImp.mdfStu(stu);
// 删除学生
// List list = DAOImp.getAllStu();
// StudentTable stu = (StudentTable)list.get(0);
// DAOImp.delStu(stu.getId());
}
}
将注释处的内容逐个执行,实现对数据库的添加,修改,删除。注意修改和删除必须在数据库中有记录,否则会报告错误。
import org.apache.commons.lang.builder.ToStringBuilder;
public class StudentTable implements Serializable ...{
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
private String id;
private Integer age;
private String cardId;
private String stuName;
public StudentTable() ...{
}
public String getId() ...{
return this.id;
}
public void setId(String id) ...{
this.id = id;
}
public Integer getAge() ...{
return this.age;
}
public void setAge(Integer age) ...{
this.age = age;
}
public String getCardId() ...{
return this.cardId;
}
public void setCardId(String cardId) ...{
this.cardId = cardId;
}
public String getStuName() ...{
return this.stuName;
}
public void setStuName(String stuName) ...{
this.stuName = stuName;
}
public String toString() ...{
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
}
import java.util.List;
import model.StudentTable;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class DAOImp
...{
static Session session = null;
public static void createStu(StudentTable stu)
...{
try
...{
session = HibernateUtil.currentSession();
System.out.println(session);
Transaction tx = session.beginTransaction();
session.save(stu);
tx.commit();
}
catch (HibernateException e)
...{
e.printStackTrace();
}
finally
...{
HibernateUtil.closeSession(session);
}
}
public static void delStu(String id)
...{
try
...{
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
StudentTable stu = (StudentTable)session.get(StudentTable.class, id);
session.delete(stu);
tx.commit();
} catch (HibernateException e)
...{
// TODO 自动生成 catch 块
e.printStackTrace();
} finally
...{
HibernateUtil.closeSession(session);
}
}
public static void mdfStu(StudentTable stu)
...{
try
...{
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
session.update(stu);
tx.commit();
} catch (HibernateException e)
...{
// TODO 自动生成 catch 块
e.printStackTrace();
} finally
...{
HibernateUtil.closeSession(session);
}
}
public static List getAllStu()
...{
List list = null;
try
...{
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Query q = session.createQuery("from StudentTable");
list = q.list();
tx.commit();
} catch (HibernateException e)
...{
// TODO 自动生成 catch 块
e.printStackTrace();
} finally
...{
HibernateUtil.closeSession(session);
}
return list;
}
}
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil
...{
private static final SessionFactory sessionFactory;
static
...{
try
...{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
catch(HibernateException ex)
...{
throw new RuntimeException("Exception building SessionFactory;"
+ ex.getMessage(), ex);
}
}
public static Session currentSession() throws HibernateException
...{
Session s = sessionFactory.openSession();
return s;
}
public static void closeSession(Session s)
...{
if (s != null)
s.close();
}
}
以下是两个xml的文件源码,
StudentTable.Student.hbm.xml
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
name="model.StudentTable"
table="student_table"
lazy="false"
>
<id
name="id"
type="string"
column="id"
length="32"
>
<generator class="uuid" />
</id>
<property
name="age"
type="integer"
column="age"
length="10"
/>
<property
name="cardId"
type="string"
column="cardId"
length="10"
/>
<property
name="stuName"
type="string"
column="stuName"
length="20"
/>
<!-- Associations -->
</class>
</hibernate-mapping>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:microsoft:sqlserver://lmvs2003:1433;DatabaseName=student</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">sa</property>
<mapping resource="model/StudentTable.Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>