手把手教你Hibernate工程

Hibernate介绍及环境搭建:http://blog.csdn.net/ljheee/article/details/52475798

Hibernate操作一对一关系:http://blog.csdn.net/ljheee/article/details/52593662

Hibernate操作一对多关系:http://blog.csdn.net/ljheee/article/details/52599447

      使用Hibernate简化了开发流程,但是使用Hibernate需要了解创建工程的细节。通过一段时间的学习,发现使用Hibernate创建工程有很多注意点,而且对于初学者来说,很容易出错,今儿特总结一下。

一、环境搭建

         1、首先默认是需要Java环境支持的,还需要安装数据库,可参阅http://blog.csdn.net/ljheee/article/details/50810570配置好Java JDK等基础环境。

         2、下载Hibernate库(jar包)

         http://download.csdn.net/detail/ljheee/9625583

         3、准备数据库驱动

         http://download.csdn.net/detail/ljheee/9625612

         4Eclipse版本

               eclipse-jee-mars-2-win32-x86_64.zip这个版本的Eclipse是支持动态Web工程的,如果要使用Hibernate,还需要在Eclipse中安装一个插件。这个步骤很简单,在有网          络条件下,打开Eclipse,选择工具栏菜单help---->Eclipse Marketplace,然后在搜索框搜索Hibernate,选JBoss Tools,点击安装即可自动完成。

二、Hibernate正向工程

1、新建一个普通Java工程。

2、右击工程,选工程路径:添加Hibernate相关类库jar

3、右击工程,选工程路添加数据库驱动

4、创建一个数据库连接DataBaseConnection

        先在自己电脑的数据库上创建一个数据库,以作测试。

        Eclipse成功安装插件后,会增加几个图标,如下图1 红色箭头指示的一个显蓝色“数据库”图案:

1

       若你的Eclipse右上角没有这个,可以点击搜索框右边那个矩形按钮,选DataBase Development,如下图2

2

        选择DataBase Development后,Eclipse界面视图就会切换,此时左侧导航如下图3

3

        右击第一个文件夹DataBase Connections,点击New,转到创建数据库连接界面,如下图4

4

        我用的是MySQL数据库,可以根据自己安装的数据库,选择相应的。下面的Name指定数据库连接名MySQL2test,这个命名自定义。点击Next

        数据库都支持创建用户和授予权限。我用MySQL创建了abc用户,输入用户密码。红色矩形框中的是已存在的数据库名。点击Test Connection,测试一下数据库连接是否成功,如图5 代表Ping成功,即已成功连接到数据库mysql,这是使用Hibernate做对象持久化操作的基础。

5

        点击Finish完成数据库连接的创建。

5、创建Hibernate配置文件(hibernate.cfg.xml)

       右击工程,点击new--->Other,找到Hibernate选项,并展开,如下图6

6

        选第一个Hibernate Configuration File。点击Next如下图7

7

        点击红色椭圆“Get values from Connection”弹出小对话框,选择刚才创建好的数据库连接MySQL2test,点OK后部分内容已从数据库连接中获取帮你填好了。其中数据库方言DataBase dialect选相应的数据库类型,我使用的是MySQL。如下图8

8

        最后,把下面的一个选项勾选了---Create a consoleconfiguration同时创建一个控制台配置文件。如下图9

9

        点击Next,如下图10:其中版本号选4.3。点击Finish完成。

10

6、编写POJO:Plain Ordinary JavaObject普通的Java类。

packagecom.ljheee.hello;

importjava.util.Date;

/**

 * 实体类

 * @author ljheee

 *

 */

public class Event {

   private long id;

   private String title;

   private Date time;

   public Event() {

   }

   public Event(String title, Date time) {

      super();

      this.title = title;

      this.time = time;

   }

   public long getId() {

      return id;

   }

   public void setId(long id) {

      this.id = id;

   }

   public String getTitle() {

      return title;

   }

   public void setTitle(String title) {

      this.title = title;

   }

   public Date getTime() {

      return time;

   }

   public void setTime(Date time) {

      this.time = time;

   }

   @Override

   public String toString() {

      return "Event [id=" + id + ",title=" + title + ", time=" + time + "]";

   }

}

7、给这个实体类创建映射文件(classname.hbm.xml)

       右击Event类,点击new--->Other,找到Hibernate选项,并展开,选HibernateXML Mapping File。点击NextAddClass选中Event类,Finish完成。

Event类是映射文件解析:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--Generated 2016-9-20 21:50:39 by Hibernate Tools 3.5.0.Final -->

<hibernate-mapping>

    <class name="com.ljheee.hello.Event"table="EVENT">

        <id name="id" type="long">

            <column name="ID" />

            <generator class="assigned" />

        </id>

        <property name="title" type="java.lang.String">

           <column name="TITLE"/>      

        </property>

        <property name="time" type="java.util.Date">

            <column name="TIME" />

        </property>

    </class>

</hibernate-mapping>

        因为数据库连接MySQL2test已经指定了数据库连接的用户、要连接的哪一个数据库等信息。此映射文件,就是把一个Java实体类映射到指定数据库中的一张关系表,那么这个类的一个个字段,也会相应的成为表中的一列;一个Java对象就对应表中一条记录。

说明:

1<class name="com.ljheee.hello.Event"table="EVENT">

Event类映射到EVENT表,如果表不存在,会自动创建。

2<id name="id"type="long">

            <column name="ID" />

            <generator class="native" />

        </id>

Event类中的字段id作为表的主键。Generator主键生成器指定生成方式数据库native原生方式。

3<property name="title"type="java.lang.String">

           <column name="TITLE"/>

Event类中的title字段作为表中一列TITLE

8、编辑Hibernate配置文件

如下图11,增加类的映射文件。

11

9、编写测试类,增删改查数据

package com.ljheee.hello;

importjava.util.Date;

importorg.hibernate.Session;

importorg.hibernate.SessionFactory;

importorg.hibernate.boot.MetadataSources;

importorg.hibernate.boot.registry.StandardServiceRegistry;

importorg.hibernate.boot.registry.StandardServiceRegistryBuilder;

 

publicclass Test {

       public static void main(String[] args) {        

              //注册

              StandardServiceRegistry registry =new StandardServiceRegistryBuilder().configure().build();      

              //会话工厂

              SessionFactory factory = newMetadataSources(registry).buildMetadata().buildSessionFactory();

             

              Session session =factory.openSession();//获得会话工厂

              session.beginTransaction();//开启事务         

              //存储对象

              session.save(newEvent("A", new Date()));//一行搞定

              session.save(newEvent("B", new Date()));

              session.getTransaction().commit();

              session.close();

       }

}

因为类的映射文件中Generator主键生成器指定生成方式数据库native原生方式。MySQL支持主键递增,一次创建一个Event对象,可以不赋值id

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值