手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

HelloWorld之Hibernate版

[日期:2014-04-01] 来源:CSDN  作者:gobitan [字体: ]

摘要:Hello World之Hibernate版。Hibernate是一个数据库ORM(Object/RelationMapping)框架。这里以Hello World命名,但涉及数据库,因此实际上是以User表为例,这里数据库采用MySQL。

第一步:下载Hibernate依赖包

这里采用直接下载,也可以采用maven或者gradle来管理。下载地址:http://sourceforge.net/projects/hibernate/files/hibernate3/,选择hibernate3最新的版本3.6.10.然后将下载的包解压。同时也需要下载MySQL的jdbc驱动jar包。下载地址:http://dev.mysql.com/downloads/connector/j/5.0.html

第二步:建Java工程

用Eclipse建立一个名为HelloHibernate的工程,将如下依赖的jar包加入工程依赖中,包括:

hibernate-distribution-3.6.10.Final\hibernate3.jar

hibernate-distribution-3.6.10.Final\lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final

hibernate-distribution-3.6.10.Final\lib\required下的所有jar包

mysql-connector-java-5.0.8\mysql-connector-java-5.0.8-bin.jar

第三步:创建数据库

这里假设MySQL数据库已经安装好了。创建名为dennis的数据库,并用如下SQL创建user表;

CREATE TABLE `user` (
  `id`varchar(20) NOT NULL,
  `name`varchar(20) NOT NULL,
  PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

第四步:添加hibernate.cfg.xml配置文件
 
先在src目录下新建hibernate.cfg.xml文件,内容如下:

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE hibernate-configurationPUBLIC
"-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
  <propertyname="hibernate.connection.url">jdbc:mysql://localhost/dennis</property>
  <propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <propertyname="hibernate.connection.username">root</property>
  <propertyname="hibernate.connection.password">123456</property>
  <propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>
  <propertyname="hibernate.show_sql">true</property>
  <mappingresource="cn/hello/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

注意:上述的配置,如果数据库不在本机,需要将localhost改为数据库的IP地址。同时注意数据连接名和密码是否与你的MySQL配置相符。
 
第五步:添加表映射配置文件
 
先在src目录下建立cn.hello包,然后在该包下新建User.hbm.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">
<hibernate-mapping>
<!-- 默认表名 与类名一致,也可以通过设置class的table属性来设置表名 -->
<class name="cn.hello.User">
  <id name="id">
    </id>
  <property name="name"/>
</class>
</hibernate-mapping>

第六步:创建POJO类User

在cn.hello包下新建User类,代码如下:

package cn.hello;
 
public class User {
      private String id;
      private String name;
      public String getId() {
            return id;
      }
      public void setId(String id) {
            this.id = id;
      }
      public String getName() {
            return name;
      }
      public void setName(String name) {
            this.name = name;
      }
}

第七步:建立测试主类HelloHibernate.java
 
在cn.hello包下新建HelloHibernate类,代码如下:

package cn.hello;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
public class HelloHibernate {
 
      public static void main(String[] args) {
            Configuration cfg = new Configuration().configure();
            SessionFactory sessionFactory =cfg.buildSessionFactory();
         
            Session session =sessionFactory.openSession();
            session.beginTransaction();
 
            User user = new User();
            user.setId("18030620225");
        user.setName("DennisHu");
 
        session.save(user);
        session.getTransaction().commit();
     
        sessionFactory.close();
      }
}

第八步:运行程序

查看数据库User表中已经增加一条记录。

附:常见错误及解决办法

1. Exceptionin thread "main" java.lang.NoClassDefFoundError:javax/persistence/EntityListeners

解决办法:原因是缺失jpa的jar包,将hibernate-jpa-2.0-api-1.0.1.Final.jar加上;

2. Exception in thread "main" org.hibernate.HibernateException :'hibernate.dialect' must be set when no Connection available

解决办法:原因是new Configuration()之后,未执行configure方法;需要改为Configurationcfg =new Configuration().configure();

本文结束!

Hibernate 的详细介绍请点这里
Hibernate 的下载地址请点这里

Hibernate 中文手册 PDF http://www.linuxidc.com/Linux/2013-10/91208.htm

linux
相关资讯       hibernate  HelloWorld 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵���中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款