标签:
什么是hibernate?
hibernate和mybatis
相同点:Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。不同点:
mybatis:小巧、方便、高效、简单、直接、半自动
hibernate:强大、方便、高效、复杂、绕弯子、全自动
c、提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可),其中的配置如下(针对mysql),小伙伴们可以自己查查其他的数据库该如何进行配置。ok下面开始demo:
第一步、编写hibernate.cfg.xml文件,完成基本的配置,代码如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<!-- MySql数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库名称 -->
<property name="hibernate.connection.url"> jdbc:mysql:///hibernate_first</property>
<!-- 数据库的用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库的密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- 方言:为每一种数据库提供适配器,方便转换 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式排版 -->
<!-- <property name="hibernate.format_sql">true</property> -->
<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
第二步、建立实体类User.java代码如下所示:
package com.bjpowernode.hibernate;
import java.util.Date;
public class User {
private String id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
第三步、编写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 name="com.bjpowernode.hibernate.User">
<id name="id">
<generator class="uuid"></generator>
</id>
<property name="name"/>
<property name="password"/>
<!-- 下面这种写法获取不到时间,小编也不知道为什么,还请小伙伴多多指教 -->
<!-- <properties name="createTime"/>
<properties name="expireTime"/> -->
<property name="expireTime" column="expireTime" not-null="false" type="date"/>
<property name="createTime" column="createTime" not-null="false" type="date"/>
</class>
</hibernate-mapping>
第四步、将User.hbm.xml文件加入到hibernate.cfg.xml文件中,代码如下所示: <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<!-- MySql数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库名称 -->
<property name="hibernate.connection.url"> jdbc:mysql:///hibernate_first</property>
<!-- 数据库的用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库的密码 -->
<property name="hibernate.connection.password">123456</property>
<!-- 方言:为每一种数据库提供适配器,方便转换 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式排版 -->
<!-- <property name="hibernate.format_sql">true</property> -->
<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
第五步、编写工具类ExoprtDB.java,将hbm生成ddl,也就是hbm2ddl,代码如下所示:package com.bjpowernode.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
* 将hbm生成ddl
* @author Administrator
*
*/
public class ExportDB {
public static void main(String[] args) {
//默认读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}
第六步、建立客户端类Client,添加用户数据到myslq,代码如下所示:package com.bjpowernode.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Client {
public static void main(String[] args){
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//建立SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
//取得session
Session session = null;
try{
session = factory.openSession();
//开启事物
session.beginTransaction();
User user = new User();
user.setName("张三");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//保存user对象
session.save(user);
//提交事物
session.getTransaction().commit();
}catch (Exception e){
e.printStackTrace();
//回滚事物
session.getTransaction().rollback();
}finally{
if (session != null){
if(session.isOpen()){
//关闭session
session.close();
}
}
}
}
}
最后,让我们一起来看看效果,如下截图所示:
小编寄语:该博文小编主要简单的介绍了hibernate的相关知识,介绍了什么是hibernate、hibernate的优缺点、hibernate和mybatis的对象,最后简单的介绍了一个入门的demo,通过上面的demo我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等,随着学习的深入,这些内容小编都会一一相关介绍,SSH之旅,未完待续......
【SSH系列】-- hibernate基本原理&&入门demo
标签:
原文地址:http://blog.csdn.net/u010850027/article/details/51591661