创建Hibernate的例子的步骤

来源:互联网 发布:cydia软件源闪退 编辑:程序博客网 时间:2024/05/17 05:57

创建Hibernate的例子的步骤

创建Hibernate的配置文件
创建持久化类
创建对象-关系映射文件
通过Hibernate API编写访问数据库的代码

Hibernate配置文档的基本配置

<?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"><!-- Generated by MyEclipse Hibernate Tools.                   --><hibernate-configuration>    <session-factory>        <property name="connection.username">root</property>        <property name="connection.password">12345678</property>        <property name="connection.driver_class">            com.mysql.jdbc.Driver        </property>        <property name="connection.url">            jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8        </property>        <property name="dialect">            org.hibernate.dialect.MySQLDialect        </property>        <property name="show_sql">true</property>        <property name="format_sql">true</property>        <property name="hbm2ddl.auto">create</property>        <mapping resource="./Students.hbm.xml" />    </session-factory></hibernate-configuration>

connection.username是我们要连接的数据库的用户名
connection.password是密码
connection.driver_class是指定数据库的jdbc驱动,我用的是mysql的数据库,com.mysql.jdbc.Driver就是它的驱动的;类名
connection.url是访问数据库的地址,这里三个/的写法是一种简写,后面的参数是防止乱码的问题
dialect是方言,指定了我们使用MySql的具体方言+
以上是基本配置

show_sql一般设为true
format_sql也设为true
hbm2ddl是ddl语句的生成策略
这是一些常用属性

持久化类的创建

这里写图片描述
根据前边的配置文件,建立数据库hibernate,然后里边的结构如下,然后根据数据库来建立持久化类,一些注意事项也在代码中的注释给出

import java.util.Date;//学生类public class Students {    // 持久化类的设计原则要遵循JavaBean的设计原则    // 1.公有的类    // 2.提供公有的不带参数的默认构造方法    // 3.属性私有    // 4.属性setter/getter封装    private int sid; // 学号    private String sname; // 姓名    private String gender; // 性别    private Date birthday; // 出生日期    private String address; // 地址    public Students() {        // 公有不带参数的构造方法    }    public Students(int sid, String sname, String gender, Date birthday,            String address) {        // 为了方便生成对象,再写一个带参数的构造方法        // 右键->Source->Generate Constructor using Fields        // 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() {        // 方便测试,写一个toString方法        // Source->Generate toString        return "Students [sid=" + sid + ", sname=" + sname + ", gender="                + gender + ", birthday=" + birthday + ", address=" + address                + "]";    }}

对象-关系映射文件

然后根据前一篇文章写到的生成对象-关系映射文件的方法,来得到Students.hbm.xml

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!-- Mapping file autogenerated by MyEclipse Persistence Tools --><hibernate-mapping>    <class name="Students" table="students" catalog="hibernate">        <id name="sid" type="java.lang.Integer">            <column name="SID" />        </id>        <!-- id这个不可以写为property,把key-property改为了property,把composite删掉 -->        <property name="sname" type="java.lang.String">            <column name="SNAME" length="20" />        </property>        <property name="gender" type="java.lang.String">            <column name="GENDER" length="10" />        </property>        <property name="birthday" type="java.util.Date">            <column name="BIRTHDAY" length="10" />        </property>        <property name="address" type="java.lang.String">            <column name="ADDRESS" length="30" />        </property>    </class></hibernate-mapping>

通过Hibernate API编写访问数据库的代码

需要使用到Junit单元测试
大体的框架如下:

public class StudentsTest {    @Before    public void init(){    }    @After    public void destory(){    }    @Test    public void testSaveStudents(){    }}

需要有before来进行初始化操作,在执行测试方法之前执行。after用来在测试方法执行完之后释放资源。

在初始化的代码中要实现以下功能:
创建配置对象,是Configuration类的一个对象
创建服务注册对象
创建会话工厂对象,用配置对象来生成
然后使用会话工厂对象的openSession方法打开会话
然后打开事务
具体的实现步骤如下:

@Beforepublic void init(){    //创建配置对象    Configuration config = new Configuration().configure();    //创建服务注册对象    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();    //创建会话工厂对象    sessionFactory = config.buildSessionFactory(serviceRegistry);    //创建会话对象    session = sessionFactory.openSession();    //开启事务    transaction = session.beginTransaction();}

释放资源的部分应该先提交事务,然后关闭会话和关闭会话工厂

总的代码如下

public class StudentsTest {    private SessionFactory sessionFactory;    private Session session;    private Transaction transaction;    @Before    public void init(){        //创建配置对象        Configuration config = new Configuration().configure();        //创建服务注册对象        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();        //创建会话工厂对象        sessionFactory = config.buildSessionFactory(serviceRegistry);        //创建会话对象        session = sessionFactory.openSession();        //开启事务        transaction = session.beginTransaction();    }    @After    public void destory(){        transaction.commit();//提交事务        session.close();//关闭会话        sessionFactory.close();//关闭会话工厂    }    @Test    public void testSaveStudents(){        //生产学生对象        Students s = new Students(1,"张三丰","男",new Date(),"武当山");        //无需编写sql语句,因为我们用的hibernate是一个ORM框架,只需要保存这个对象就好了        session.save(s);//保存对象进入数据库    }}

运行测试代码可以看到已经在数据库添加了记录
这里写图片描述

原创粉丝点击