首先,导入hibernate插件。
在任务栏help中选择install from site
点击add。出现如下图
点击Archive,然后找到文件导入核心插件的文件地址,并安装。然后点击下一步,知道最后,然后安装等待几分钟,myeclipse会提示重启,选择yes。
然后我们检查下是否安装成功,右击项目名称--new--other,如果有图中的hibernate文件夹,则安装成功
然后接下来,我们还要导入三类jar包到web-inf/lib中。
分别是hibernate的核jar包,单元测试junit的jar
以及数据库连接驱动jdbc,共计10个,一并导入lib。
接下来,就是编写一个小程序测试了。
project结构预览
首先,我们先写hibernate配置文件,右键src,选择other,hibernate文件夹下面第一项,然后一直next。
,在src下生成的配置文件,然后我们在修改
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf-8
</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--
show_sql:是否把hibernate运行时时的sql语句输出到控制台,编码阶段用于测试 format_sql:输出到控制台的语句是否排版,便于阅读。
hbm2ddl.auto:帮助java代码生成数据库脚本。create|update|create-drop|validate,其中create是每次执行数据库,都会重新删除重建表。
dialect:是数据库方言,可以针对特殊数据库进行优化
default_schema:添加默认的数据库前缀。
-->
<property name="show_sql">false</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="po/Students.hbm.xml" /><!--mapping映射,对应src下的实体类-->
</session-factory>
</hibernate-configuration>
我们在po包里,建立个Students.java文件。
package po;
import java.util.Date;
public class Students {
private int sid;
private String sname;
private String gender;
private Date birthday;
private String address;
public Students() {
super();
}
public Students(int sid, String sname, String gender, Date birthday,
String address) {
super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender="
+ gender + ", birthday=" + birthday + ", address=" + address
+ "]";
}
}
我们再右键该Students.java文件,new-other,然后选择hibernate文件夹下的第四项
然后一直下一步,创建实体类与数据库的用映射文件Students.hdb.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-3-21 0:45:34 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="po.Students" table="STUDENTS">
<id name="sid" type="int">
<column name="SID" />
<generator class="assigned" />
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" />
</property>
<property name="gender" type="java.lang.String">
<column name="GENDER" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
</class>
</hibernate-mapping>
然后再DButil包导入HibernateUtil.java文件。改文件用于对数据库进行连接,获得连接数据库对象那个,减少每次访问数据库时候的代码复用。
package DButil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static SessionFactory sessionFactory;
private static ThreadLocal session = new ThreadLocal();
private HibernateUtil() {}
static {
Configuration cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static Session getThreadLocalSession() {
Session s = (Session) session.get();
if (s == null) {
//openSession 每次都是建立新的session对象
//getCurrentSession,用用当前已有的session
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() {
Session s = (Session) session.get();
if (s != null) {
s.close();
session.set(null);
}
}
}
然后,我们在项目名下创建个文件夹test,并在文件夹下创建个package,在package里面写个测试,看是否我,我们的hibernate能否成功。
userTest.java的代码
package ttt;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import org.junit.Test;
import po.*;
import DButil.HibernateUtil;
public class userTest {
public boolean saveUser(Students user) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getThreadLocalSession();
tx = s.beginTransaction();
s.save(user);
tx.commit();
return true;
} finally {
HibernateUtil.closeSession();
}
}
@Test
public void testUser() {
//main.listMemo();
saveUser(new Students(1,"333","3344",new Date(),"333"));
}
}
然后右键,run as,。
junit视图若是显示绿色条,则运行成功。
数据库自动已经创建