快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

使用Hibernate 连接SQL Server 2000


以下代码在 JDK 5.0, Hibernate 2.1, SQL Server 2000 SP3 中测试通过。


 


 



       第一次使用Hibernate作持久层,感觉使用起来还是比较复杂的,尤其是调试起来很不方便。Hibernate 基于反射的机制虽然很灵活,但明显给跟踪代码制造了障碍,给出的非常信息量也太少。个人感觉其改进的余地还很大,比如Java新增加了Annotation语法后,是否可使用它来定义ORM,而取代hbm.xml的形式。

       好了,进入正题。

       首先,必须配置数据库,下面以在数据库yufan中的操作为例。

       CREATE TABLE CUSTOMER(CID INTEGER NOT NULL PRIMARY KEY,  USERNAME VARCHAR(12) NOT NULL,  PASSWORD VARCHAR(12));







       然后是一个数据对象,必须为它的每个字段提供读写属性方式,Hibernate 会用反射来检索。

// Customer.java

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;







    }







}


 


 



然后是Hibernate的映射Customer.hbm.xml


 


 



<?xml version="1.0" encoding="utf-8" ?>







<!DOCTYPE hibernate-mapping PUBLIC







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







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







<hibernate-mapping>







<class name="Customer" table="Customer" proxy="Customer">







<id name="id" column="CID">







<generator class="increment"/>







</id>







<property name="username" column="USERNAME" />







<property name="password" column="PASSWORD" />







</class>







</hibernate-mapping>


 


 



类和映射结合在一起,定义了ORM。


 


 



下面是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">







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







<property name="connection.driver_class">







com.jnetdirect.jsql.JSQLDriver







</property>







<property name="connection.url">







jdbc:JSQLConnect://localhost:1433;database=yufan;







</property>







<property name="connection.username">







sa







</property>







<property name="connection.password">







yufan







</property>







<property name="dialect">







net.sf.hibernate.dialect.SQLServerDialect







</property>







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







</session-factory>







</hibernate-configuration>


 


 



重要的property包括connection.driver_class,指定JDBC数据库驱动。connection.url 制定数据库的Url。我使用的是JSQLDriver,功能上比MS 的 JDBC 驱动强盛。但必须注重的是,在指定数据库的时候,必须使用database= 或 databaseName=的语法,而DatabaseName则会出错。MS的驱动则无此问题。我刚碰到此问题时真是茫然无绪。。。最后发现是如此。。。


 


 



在这个文件中,不能使用XML注释,感觉是Hibernate的缺陷。

     最后是Test.java

import net.sf.hibernate.*;







import net.sf.hibernate.cfg.*;








 


 



public class Test {








 


 



    public static void main(String[] args) {







        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.setUsername("customer" + i);







                customer.setPassword("customer");







                session.save(customer);







            }








 


 



            tx.commit();







            session.close();







        }







        catch (HibernateException e) {







            e.printStackTrace();







        }







    }







}








 


 



好了,在项目中添加对Hibernate库文件的引用,编译执行,你会在数据库中找到新添加的记录。


 


 


代码部分取自史上最简朴的Hibernate入门简介by watano_cc,根据SQL Server改动。





返回类别: 教程
上一教程: Java新手上路大全
下一教程: struts设计上的一点想法

您可以阅读与"使用Hibernate 连接SQL Server 2000"相关的教程:
· hibernate连接sqlserver2000问题的解决(父子关系同时保存时发生 one-to-many &amp; many-to-one)
· JDBC连接SQL SERVER2000
· JSP连接各类数据库大全SQL SERVER2000 JDBC驱动的完整安装及测试
· JSP连接SQL SERVER 2000系统配置
· JBuilder9+SQL SERVER 2000数据库连接技巧
    微笑服务 优质保证 索取样品