hibernate框架的简单实例

来源:互联网 发布:微拍网站源码带采集 编辑:程序博客网 时间:2024/05/20 11:52

**

hibernate框架的简单实例

**
Hibernate是一个成熟的对象关系映射框架,它对JDBC进行了比较完善的封装。它将POJO与数据库表建立映射关系,是一个全自动的ORM框架。hibernate可以自动生成SQL语句,自动执行,使得我们可以随心所欲的使用对象编程思维来操纵数据库,完成数据持久化的重任。
配置hibernate框架需要以下几步:
1.加入hibernate必须的jar包
这里写图片描述

由于需要和数据库打交道,所以引入数据库驱动jar包:
mysql-connector-java-5.1.40-bin.jar包

  1. 配置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"><hibernate-configuration>    <session-factory>    <!-- 配置连接数据库的信息 -->        <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">123456</property>        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="hibernate.connection.url">jdbc:mysql:///hibernettest</property>    <!--配置hibernate基本信息  -->    <!-- sql方言 -->    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>    <!-- 是否打印sql语句 -->   <property name="hibernate.show_sql">true</property>   <!-- 格式化sql语句 -->   <property name="format_sql">true</property>    <!-- 生成数据表的策略 -->    <property name="hbm2ddl.auto">create</property>    <!-- 映射 -->     <mapping resource="com/object/User.hbm.xml"/>    </session-factory></hibernate-configuration>

创建持久化类User,用于封装用户信息:

import java.sql.Date;public class User {    private Integer id;    private String username;    private String sex;    private Integer age;    private String address;    private Date createtime;    public User(int id, String username, String sex, int age, String address, Date createtime) {        super();        this.id = id;        this.username = username;        this.sex = sex;        this.age = age;        this.address = address;        this.createtime = createtime;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public Date getCreatetime() {        return createtime;    }    public void setCreatetime(Date createtime) {        this.createtime = createtime;    }}

3.创建对象-关系映射文件: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"><!-- Generated 2017-8-20 20:56:32 by Hibernate Tools 3.5.0.Final --><hibernate-mapping>    <class name="com.object.User" table="USER">        <id name="id" type="int">            <column name="ID" />            <generator class="native"/>        </id>        <property name="username" type="java.lang.String">            <column name="USERNAME" />        </property>        <property name="sex" type="java.lang.String">            <column name="SEX" />        </property>        <property name="age" type="int">            <column name="AGE" />        </property>        <property name="address" type="java.lang.String">            <column name="ADDRESS" />        </property>        <property name="createtime" type="java.sql.Date">            <column name="CREATETIME" />        </property>    </class></hibernate-mapping>

最后一步通过hibernate API编写访问数据库的代码:

import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;public class testUser {    @Test    public void test() {        SessionFactory sessionfactory=null;    Configuration configuration=new Configuration().configure();        sessionfactory=configuration.buildSessionFactory();        Session session=sessionfactory.openSession();        Transaction transaction=session.beginTransaction();        User user=new User(1, "jack", "nan", 22, "chongqingshi", new Date(new java.util.Date().getTime()));        session.save(user);        transaction.commit();        session.close();        sessionfactory.close();    }}

运行测试,控制台打印信息如下:

Hibernate:     drop table if exists USER八月 20, 2017 10:31:12 下午 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5cc69cfe] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.Hibernate:     create table USER (       ID integer not null auto_increment,        USERNAME varchar(255),        SEX varchar(255),        AGE integer,        ADDRESS varchar(255),        CREATETIME date,        primary key (ID)    ) engine=InnoDB八月 20, 2017 10:31:12 下午 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnectionINFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@319dead1] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.八月 20, 2017 10:31:12 下午 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSourcesINFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@2b52c0d6'Hibernate:     insert     into        USER        (USERNAME, SEX, AGE, ADDRESS, CREATETIME)     values        (?, ?, ?, ?, ?)八月 20, 2017 10:31:13 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stopINFO: HHH10001008: Cleaning up connection pool [jdbc:mysql:///hibernettest]

至此,表示实例能正常运行。