摘要: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