本文配置环境:
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包名/r
->add->选择你hibernate解压到的目录,选中该目录下的hibernate2.jar与lib目录下的所有jar包,再把你的MYSQL驱动包也加进去
然后一直按OK,next。
新建一个类,名为Hello_Bean.java,代码如下:
package hibernate;
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包名/r
->add->选择你hibernate解压到的目录,选中该目录下的hibernate2.jar与lib目录下的所有jar包,再把你的MYSQL驱动包也加进去
然后一直按OK,next。
新建一个类,名为Hello_Bean.java,代码如下:
package hibernate;
import java.io.Serializable;
public class Hello_Bean
implements Serializable {
implements Serializable {
private String name; //这里name与address和id的名字可以自己定,不会有什么影响.但get与set方法不可以。因为那得跟数据库与配置文件对应。
private String address;
private String id;
public Hello_Bean() {
}
public Hello_Bean(String name, String address) { //构造函数,看完本章以后相信你会明白的了
this.name = name;
this.address = address;
}
this.name = name;
this.address = address;
}
public String getName() { //此方法名必须与Hello_Bean.hbm.xml文件里的对应的名字一样,下面会详细讲
return name;
}
return name;
}
public void setName(String name) {
this.name = name;
}
this.name = name;
}
public String getAddress() {
return address;
}
return address;
}
public void setAddress(String address) {
this.address = address;
}
this.address = address;
}
public String getId() { //必须的方法
return id;
}
return id;
}
public void setId(String id) { //必须的方法
this.id = id;
}
}
完成这一步以后编译/r
将hibernate解压后的目录下的src文件夹里的hibernate.properties与log4j.properties文件复制到你的工程目录的classes目录下
(例如hibernate/classes/目录下),
打开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请改为你自己的
自己创建test数据库
完成以后创建一个空的文件,保存在你工程的类文件同个文件夹里(例如hibernate/classes/hibernate/目录下),文件名为: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" unsaved-value="null" column="i_d">
this.id = id;
}
}
完成这一步以后编译/r
将hibernate解压后的目录下的src文件夹里的hibernate.properties与log4j.properties文件复制到你的工程目录的classes目录下
(例如hibernate/classes/目录下),
打开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请改为你自己的
自己创建test数据库
完成以后创建一个空的文件,保存在你工程的类文件同个文件夹里(例如hibernate/classes/hibernate/目录下),文件名为: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" unsaved-value="null" column="i_d">
<generator class="uuid.hex"/>
</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的值为要生成的字段名,可以自由修改,没有影响。
<property name="name" type="string" update="true" insert="true" column="name" />这里的name值"name"跟Hello_Bean.java里的getName方法对应,column为要生成的字段名/r
<property name="address" type="string" update="true" insert="true" column="address" />
分别添加一个字段name与address,注意这里的type属性类型为string,如果这里的类型与Hello_Bean.java里设置的类型不一样会出错。
修改完以后保存。
最后在JB里新建一个类,名字为Hello.java,我会一步步解释,代码如下:
package hibernate;
</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的值为要生成的字段名,可以自由修改,没有影响。
<property name="name" type="string" update="true" insert="true" column="name" />这里的name值"name"跟Hello_Bean.java里的getName方法对应,column为要生成的字段名/r
<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.SessionFactory;
import net.sf.hibernate.tool.hbm2ddl.SchemaExport;
import net.sf.hibernate.Session;
/**
* @author
* QQ:
*/
* @author
* QQ:
*/
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对象/r
Session session = sessions.openSession(); //再用SessionFactory的openSession方法得到一个session
new SchemaExport(cfg).create(true, true); //这句意思是创建表,第一次运行以后,就是创建完表以后再把这行加上注释。如果建表以后不把这一句注释掉的话会删掉以前创建的表再重新建一个。
Hello_Bean my_hibernate = new Hello_Bean(); //得到一个Hello_Bean对象/r
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();
}
}
最后运行就可以了。
如果大家有什么不清楚的,可以下载这篇文章的例子看看,运行一下。
下载完以后用JB打开hibernate.jpx就可以了。用之前把hibernate和MYSQL的驱动加进去,方法如果不知道再看看本章开头部分。
常见错误:
Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
如果出现这行错误说明你的xml配置文件有不规范的字符,检查下。
net.sf.hibernate.MappingException: Error reading resource: hibernate/Hello_Bean.hbm.xml
如果出现这行错误说明你的hibernate的XML配置文件有错/r
net.sf.hibernate.MappingException: Resource: hibernate/Hello_Bean.hbm.xml not found
如果出现这行错误说明hibernate的XML配置文件没有找到,你应该把XML文件放在与你的类文件同个目录下,本文中是放在hibernate/classes/hibernate/目录下,也就是跟Hello_Bean.class类文件一起。
net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean
如果出现这行错误说明你的xml文件里设置的字段名name的值与Hello_Bean.java类里的getXXX或setXXX方法不一致。
net.sf.hibernate.HibernateException: JDBC Driver class not found: org.gjt.mm.mysql.Driver
如果出现这行错误说明你的MYSQL驱动没有加进JB库里或者不在CLASSPATH里。
(声名:本文来自网上一个网友,经过本人的修改)
Configuration cfg = new Configuration().addClass(Hello_Bean.class); //用Hello_Bean.class类初始化
SessionFactory sessions = cfg.buildSessionFactory(); //用buildSessionFactory方法得到一个SessionFactory对象/r
Session session = sessions.openSession(); //再用SessionFactory的openSession方法得到一个session
new SchemaExport(cfg).create(true, true); //这句意思是创建表,第一次运行以后,就是创建完表以后再把这行加上注释。如果建表以后不把这一句注释掉的话会删掉以前创建的表再重新建一个。
Hello_Bean my_hibernate = new Hello_Bean(); //得到一个Hello_Bean对象/r
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();
}
}
最后运行就可以了。
如果大家有什么不清楚的,可以下载这篇文章的例子看看,运行一下。
下载完以后用JB打开hibernate.jpx就可以了。用之前把hibernate和MYSQL的驱动加进去,方法如果不知道再看看本章开头部分。
常见错误:
Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
如果出现这行错误说明你的xml配置文件有不规范的字符,检查下。
net.sf.hibernate.MappingException: Error reading resource: hibernate/Hello_Bean.hbm.xml
如果出现这行错误说明你的hibernate的XML配置文件有错/r
net.sf.hibernate.MappingException: Resource: hibernate/Hello_Bean.hbm.xml not found
如果出现这行错误说明hibernate的XML配置文件没有找到,你应该把XML文件放在与你的类文件同个目录下,本文中是放在hibernate/classes/hibernate/目录下,也就是跟Hello_Bean.class类文件一起。
net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean
如果出现这行错误说明你的xml文件里设置的字段名name的值与Hello_Bean.java类里的getXXX或setXXX方法不一致。
net.sf.hibernate.HibernateException: JDBC Driver class not found: org.gjt.mm.mysql.Driver
如果出现这行错误说明你的MYSQL驱动没有加进JB库里或者不在CLASSPATH里。
(声名:本文来自网上一个网友,经过本人的修改)