编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
Hibernate 入门,,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> JAVA 专区 >> Hibernate 技术 >> 文章正文
【字体:
Hibernate 入门   进入问吧

本站地址:http://www.bajiao123.com

作者:本站    文章来源:网络    点击数:    更新时间:2007-1-10    

Hibernate 入门

     发布者: 发布时间:2006-11-20 Hibernate 入门(原创) 2004/08/22
作者:雨伞(geezer)

----------------------------------------------

本文配置环境:
JBuilder X
jdk 1.4.2
Mysql 4.0.11 驱动:mm.mysql-2.0.4-bin.jar(org.gjt.mm.mysql.Driver)
Hibernate 2.1

解压Hibernate

打开JB,新建工程,名为:hibernate
加入Hibernate需要的包与MYSQL驱动
步骤:file->new project->name中输入hibernate,directory选择你要存放本工程的路径->next

->required libraries->add->new->name中输入你要设置的hibernate包名

->add->选择你hibernate解压到的目录,选中该目录下的hibernate2.jar与lib目录下的所有jar包,再把你的MYSQL驱动包也加进去

然后一直按OK,next。

新建一个类,名为Hello_Bean.java,代码如下:



package hibernate;

import java.io.Serializable;

/**
* @author geezer
* QQ:9986986 MSN:geezer_hot@hotmail.com
*/

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() {//此方法名必须与Hello_Bean.hbm.xml文件里的对应的名字一样,下面会详细讲
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;
}


}



完成这一步以后编译

将hibernate解压后的目录下的src文件夹里的hibernate.properties与log4j.properties文件复制到你的工程目录的classes目录下

(例如hibernateclasses目录下),

打开hibernate.properties文件,找到

## HypersonicSQL

hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost
hibernate.connection.url jdbc:hsqldb:test
hibernate.connection.url jdbc:hsqldb:.

改为

## HypersonicSQL

#hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
#hibernate.connection.driver_class org.hsqldb.jdbcDriver
#hibernate.connection.username sa
#hibernate.connection.password
#hibernate.connection.url jdbc:hsqldb:hsql://localhost
#hibernate.connection.url jdbc:hsqldb:test
#hibernate.connection.url jdbc:hsqldb:.

再找到

## MySQL

#hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
#hibernate.connection.driver_class org.gjt.mm.mysql.Driver
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username root
#hibernate.connection.password

改为


## MySQL

hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/test
hibernate.connection.username root
hibernate.connection.password

上面的URL请改为你自己的

完成以后创建一个空的文件,保存在你工程的类文件同个文件夹里(例如hibernateclasseshibernate目录下),文件名为: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="hibernate.Hello_Bean" table="test_hibernate" >

<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>



稍微解释一下,<class name="hibernate.Hello_Bean" table="test_hibernate" >里的name指你的生成表的类,

table则指定你要创建的数据库表的名字,可以自由修改,没有影响.

<id name="id" column="id">设置主键ID,这里name的值id跟Hello_Bean.java里的方法getId与setId对应,不用管这个,hibernate会自动调用,配置好就可以了,column的值为要生成的字段名,可以自由修改,没有影响。

<generator class="identity"/>属性让主键的ID自增(插入数据的时候自动加1)

<property name="name" type="string" update="true" insert="true" column="name" />这里的name值"name"跟Hello_Bean.java里的getName方法对应,column为要生成的字段名
<property name="address" type="string" update="true" insert="true" column="address" />

分别添加一个字段name与address,注意这里的type属性类型为string,如果这里的类型与Hello_Bean.java里设置的类型不一样会出错。

修改完以后保存。

最后在JB里新建一个类,名字为Hello.java,我会一步步解释,代码如下:



package hibernate;

import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.tool.hbm2ddl.SchemaExport;
import net.sf.hibernate.Session;
import net.sf.hibernate.Query;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.type.LongType;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.ScrollableResults;
import java.util.*;

/**
* @author geezer
* QQ:9986986 MSN:geezer_hot@hotmail.com
*/


public class Hello {


public Hello() {


}

public static void main(String[] args) throws Exception {

Configuration cfg = new Configuration().addClass(Hello_Bean.class);//用Hello_Bean.class类初始化

SessionFactory sessions = cfg.buildSessionFactory();//用buildSessionFactory方法得到一个SessionFactory对象

Session session = sessions.openSession();//再用SessionFactory的openSession方法得到一个session



new SchemaExport(cfg).create(true, true);//这句意思是创建表,第一次运行以后,就是创建完表以后再把这行加上注释。如果建表以后不把这一句注释掉的话会删掉以前创建的表再重新建一个。




Hello_Bean my_hibernate = new Hello_Bean();//得到一个Hello_Bean对象

my_hibernate.setName("my_name");//设置Hello_Bean对象的name值为my_name,这里其实就是说把字符串my_name当作数据库字段name的值.数据库字段name与Hello_Bean类里的getName,setName方法是对应的。形成一个映射关系。

my_hibernate.setAddress("my_address");//如上

session.save(my_hibernate);//这句很重要,将my_hibernate对象写进数据库(my_hibernate对象里的name与address我们刚刚已经设置了值了,会直接把name,address的值写进数据库去)

session.flush();
session.close();


//上面是一个简单的插入数据与第一次运行建表的介绍,下面我再介绍删除与修改的方法,下面的代码我都加了注释,自己需要什么方法(删除,修改,循环数据库的值)就把注释去掉就可以了
HSQL比较简单,大家看一下例子就应该明白了,这里就不讲了。
遍历数据库的方法有三种,分别是Query,find,iterate,Query和find返回一个List接口,iterate返回一个Iterator,具体方法可以查看这些类得知。

//删除数据
/*
int a=session.delete("from Hello_Bean where id=1");//如果没有找到id为1的数据那么返回0,如果找到返回1,这里的Hello_Bean是我们的Hello_Bean类,他跟数据库表对应,所以我们在这里是直接用Hello_Bean来代码数据库表的。
System.out.println(a);
session.flush();
session.close();

*/

//Query方法查询数据
/*
Hello_Bean my_hibernate = null;
Query q = session.createQuery("from Hello_Bean");
// Query q = session.createQuery("from Hello_Bean where name=?");//这里的?跟JDBC的PreparedStatement方法的差不多,只不过这里的是以0开始,jdbc的是1开始。
// q.se

[1] [2] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营