我的开发环境准备
Eclipse3.0
hibernate- 3.2.0 .ga.zip
MicroSoft SQL SERVER2000,
用户名:sa,密码:123
数据库驱动:jtds-1.2.jar
解压hibernate- 3.2.0 .ga.zip
我的解压到了C:\TDdownload\hibernate- 3.2.0 .ga\hibernate-3.2,解压位置可以任意,这里列出来只是为了方便叙述, 在后文中我把C:\TDdownload\hibernate-3.2.0.ga\hibernate-3.2称之为:$Hibernate_Home
SQL Server 2000 JDBC 驱动
我的驱动程序在位置是:C:\TDdownload\jtds-1.2-dist(1)\ jtds-1.2.jar
1.
在SQL SERVER2000中建立数据库hibernate,在建立表t1:字段有id(int 主键) name(varchar) address(varchar)
2.
在Eclipse新建一个工程:hibernate, 右键点击hibernate,在菜单中选“Properties”->“Java Build Path”->“Add External JARs”
需要加入JAR文件如下:jtds-1.2.jar 、hibernate3.jar,路径上文已提!
还有把 $Hibernate_Home\lib下的文件全部也加入到工程,(不是所有的文件都是必需的)
3.import
文件hibernate.properties和log4j.properties到工程下,这两个文件在C:\TDdownload\hibernate- 3.2.0 .ga\hibernate-3.2\etc下可以找到(方法:点击file―>import
à
…
)
文件结构如图:
4.
配置hibernate.properties
在hibernate.properties中默认的数据库是HypersonicSQL,把那几行全部注释掉
找到
## MS SQL Server
#hibernate.dialect net.sf.hibernate.dialect.SQLServerDialect
#hibernate.connection.username sa
#hibernate.connection.password sa
## JSQL Driver
#hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver
#hibernate.connection.url jdbc:JSQLConnect://1E1/test
修改为
## MS SQL Server
hibernate.dialect org.hibernate.dialect.SQLServerDialect
hibernate.connection.username sa
hibernate.connection.password 123
## JSQL Driver
hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
hibernate.connection.url jdbc:jtds:sqlserver://localhost:1433/hibernate
5.
建立一个pojo Hello_Bean.java
import java.io.Serializable;
public class Hello_Bean implements Serializable {
private String name;//
这里name与address和id的名字可以自己定,不会有什么影响.但get与set方法不可以。因为那得跟数据库与配置文件对应。
private String address;
private int id;
public Hello_Bean() {
}
public Hello_Bean(String name, String address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id)
{
this.id = id;
}
}
6.
Hello_Bean
.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="Hello_Bean" table="t1" >
<id name="id" column="id">
<generator class="identity"/>
</id>
<property name="name" type="string" update="true" insert="true" column="name" />
<property name="address" type="string" update="true" insert="true" column="address" />
</class>
</hibernate-mapping>
7.
测试文件Hello.java
import org.hibernate.cfg.Configuration;
import org.hibernate.*;
import org.hibernate.tool.hbm2ddl.*;
import org.hibernate.Session;
import org.hibernate.Query;
import org.hibernate.Hibernate;
import org.hibernate.type.*;
import org.hibernate.Transaction;
import org.hibernate.ScrollableResults;
import java.util.*;
public class Hello {
public Hello() {
}
public static void main(String[] args) throws Exception {
Configuration cfg = new Configuration().addClass(Hello_Bean.class);
SessionFactory sessions = cfg.buildSessionFactory();
Session session = sessions.openSession();
Transaction tran=null;
tran=session.beginTransaction();
Hello_Bean my_hibernate = new Hello_Bean();
my_hibernate.setName("11");
my_hibernate.setAddress("22");
session.save(my_hibernate);
session.flush();
tran.commit();
// Query
方法查询数据
Hello_Bean my_hibernate1= null;
Query q = session.createQuery("from Hello_Bean");
session.flush();
List l=q.list();
for(int i=0;i<l.size();i++){
my_hibernate1= (Hello_Bean) l.get(i);
System.out.println(my_hibernate1.getName()); }
//
修改数据
tran=session.beginTransaction();
Query qq=session.createQuery("from Hello_Bean");
Hello_Bean my_hibernate3=(Hello_Bean)session.load(Hello_Bean.class,new Integer(1));
//
这里的new Integer(1)意思是修改表中id为1的那一行数据,必须是一个包装类的对象,如果使用int的话会出错。这里你要确保表t1里有id为1的记录,不然你可以把修改数据这一段注释掉。
my_hibernate3.setName("zhangls");//
把id为1的那一行数据的name字段值改为" zhangls "
session.flush();
tran.commit();
}
}
8.
操作结果
你将发现表t1中会多出一条记录:name:11,address:22
[url]http://blog.sina.com.cn/u/1232107653[/url]