6.3 创建一个Hibernate项目
6.3.1 Hibernate项目开发的一般步骤
1)新建Java工程
2)导入MySQL数据库的JDBC驱动
3)导入Hibernate库
4)新建POJO文件
5)创建POJO文件对应的数据库及表
6)新建Hibernate配置文件hibernate.cfg.xml
7)新建Hibernate映射向导(就是选择数据库和数据表)文件hibernate.hbm.xml
8)编写main()函数,通过Hibernate配置文件和映射文件对POJO类进行持久化处理,将对该类的操作永久地保存到MySQL数据库中
6.3.2 项目实例(注意:根据数据库版本和hibernate版本的不同,配置、java语句也有所不同,最好根据自己的版本去找资料)
首先介绍一下如何在eclipse配置hibernate环境:
打开eclipse,点击help-->eclipse marketplace,如图输入:Hibernate 搜索,找到JBoss Tools
点击install安装
选择Hibernate Tools,点击Confrm安装。安装完成后重启eclipse,项目右键->new->other,如果有Hibernate Configuration File则说明配置成功。
接着先去官网下载需要的jar包:http://hibernate.org/orm/
点击releases-overview,选择右上角latest版本,选择需要的版本,点击download等待几秒后就开始下载了
下面按照之前说的步骤进行:
1)新建一个Java应用程序项目,命名H1。file-new-project-java-java project
2)添加mysql驱动程序。右击项目-build path-configure build path-add external jars找到你自己电脑里的数据库jar包加入
3)添加hibernate库。右键项目-build path-add libraries-user libraries-new-随便填写一个名字(我填的是hibernate)-add external jars将解压完的各个文件夹jar包都加入进来
导入后结构为:
4)创建实体类User1。在项目H1中新建java类文件,命名为User1.java。
import java.util.Date;
public class User1 {
private int id;
private String username;
private String password;
private Date createTime;
private Date expireTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
5)创建数据库及表。首先创建数据库studb,接着在此数据库中创建表user1,表结构中的每个字段应与User1类中定义的成员变量一一对应,数据类型也应该是对应的,如下图(数据库的下载、建表不再介绍):
6)新建hibernate配置文件。先新建包h1(下图是没有新建包的情况,后面觉得还是放在包里比较好),然后项目src右键-new-other-找到下图
注意:这一步版本不能选择最新的,否则点击finish会出现没有响应无法创建的情况!!!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">java</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/studb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="User1.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7)新建hibernate映射向导(就是选择数据库和数据表)
可以找到项目工作空间,找到该xml文件,用记事本打开查看或者修改,由此文件可以看出类和表的映射关系
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-12-3 8:58:57 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="h1.User1" table="user1">
<id name="id" type="int">
<column name="id" />
<generator class="increment" />
</id>
<property name="username" type="java.lang.String">
<column name="username" />
</property>
<property name="password" type="java.lang.String">
<column name="password" />
</property>
<property name="createTime" type="java.util.Date">
<column name="createTime" />
</property>
<property name="expireTime" type="java.util.Date">
<column name="expireTime" />
</property>
</class>
</hibernate-mapping>
8)编写main()函数H1.java
import java.util.Date;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class H1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
SessionFactory sf=new Configuration().configure().buildSessionFactory();
Session session=sf.openSession();
Transaction tx=session.beginTransaction();
for(int i=0;i<5;i++) {
User1 u1=new User1();
u1.setUsername("user"+i);
u1.setPassword("java");
u1.setCreateTime(new Date());
u1.setExpireTime(new Date());
session.save(u1);//将User1对象逐个保存到session中
}
tx.commit();//提交事务,将User1对象永久化保存到数据库中
session.close();
}catch(HibernateException e) {
e.printStackTrace();
}
}
}