因为我的例子是连接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.xmllib(目录) 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的“项目-〉属性-〉构建路径-〉库”中,将这些库都加载进来,否则编译时会依然找不到这些库的。
下面分别是源文件:
package BusinessManager; 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 java.io.Serializable; 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(); }} package persistence; 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; } } package persistence; 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 <? xml version="1.0" ?> <! 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 > HibernateUtil.cfg.xml <! 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 ="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 >