Hibernate_4.2.4_Helloword

来源:互联网 发布:mac 简体双拼输入法 编辑:程序博客网 时间:2024/05/21 00:48

这是基于Hibernate4.2.4的Helloword基本例子,使用Jdk1.8+eclipse+Hibernate插件
1.使用eclipse创建一个简单的Java项目:
2.创建lin包
导入hibernate-release-4.2.4.Final\lib\required里面的全部的jar包。
3.在src目录下面创建hibernate.cfg.xml文件

    <?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.url">jdbc:mysql://localhost:3306/mvc</property>        <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">root</property>        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!-- Hibernate的基本信息 -->        <!-- Hibernate使用的方言 -->        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>        <!-- 是否在控制台打印sql -->        <property name="hibernate.show_sql">true</property>        <!-- 是否格式化sql -->        <property name="hibernate.format_sql">true</property>        <!-- 自动生成数据表的策略 -->        <!--         create:会根据.hbm.xml文件生成新的数据表,每次都会删除上一次的表,重新生成表         create-drop:会根据.hbm.xml文件生成新的数据表,但SessionFactory一关闭,表就自动删除         update:最常用的属性,会根据.hbm.xml文件生成新的数据表,若.hbm.xml文件和数据表中对应的数据表结构不不同,Hibernate会更新数据表结构,但不会删除已经有的列和行         validate:会和数据表进行比较,若.hbm.xml文件中的列在数据表中不存在,则抛出异常         -->        <property name="hibernate.hbm2ddl.auto">update</property>        <!-- 指定映射的 .hbm.xml 文件 -->        <mapping resource="Hibernate_010/News.hbm.xml" />    </session-factory></hibernate-configuration>

4.创建实体类 src/Hibernate_010/New.java

package Hibernate_010;import java.util.Date;public class News {    private Integer id;    private String title;    private String content;    private Date time;    public Integer getId() {       return id;    }    public void setId(Integer id) {       this.id = id;    }    public String getTitle() {       return title;    }    public void setTitle(String title) {       this.title = title;    }    public String getContent() {       return content;    }    public void setContent(String content) {       this.content = content;    }    public Date getTime() {       return time;    }    public void setTime(Date time) {       this.time = time;    }    public News() {    }    public News(String title, String content, Date time) {       super();       this.title = title;       this.content = content;       this.time = time;    }    @Override    public String toString() {       return "News [id=" + id + ", title=" + title + ", content=" + content + ", time=" + time + "]";    }}

5.创建News实体类的映射文件News.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-3-3 20:55:52 by Hibernate Tools 3.5.0.Final --><hibernate-mapping>    <class name="Hibernate_010.News" table="NEWS" >        <id name="id" type="java.lang.Integer">            <column name="ID" />            <!-- 制定主键生成方式:native  使用数据库底层的生成方式 -->            <generator class="native" />        </id>        <property name="title" type="java.lang.String">            <column name="TITLE" />        </property>        <property name="content" type="java.lang.String">            <column name="CONTENT" />        </property>        <property name="time" type="java.util.Date">            <column name="TIME" />        </property>    </class></hibernate-mapping>

6.加入Junit4 创建Test/Test_010.java

package Test;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import Hibernate_010.News;public class Test_010 {    //在生产环境中,session和Transaction不能作为成员变量,有并发的危险    //Session的工厂 一个应用只初始化一个SessionFactory资源    //session 是单线程对象是Hibernate的运作中心    //相当于JDBC里面的Connection     private SessionFactory sessionFactory ;    private Session session;    private Transaction transaction;    @Before    public void init() {        System.out.println("----------init-------------");        //加载Hibernate配置文件 对应hibernate.cfg.xml        Configuration configuration = new Configuration().configure();        ServiceRegistry serviceRegistry =                 new ServiceRegistryBuilder().applySettings(configuration.getProperties())                                            .buildServiceRegistry();        // 4.0之前的创建方式        // sessionFactory = configuration.buildSessionFactory();        sessionFactory = configuration.buildSessionFactory(serviceRegistry);        session = sessionFactory.openSession();        // 开启事务 所有持久层应该在事务管理下进行            //commit        提交相关联的session实例            //rollback      撤销事务操作            //wasCommitted  检查事务是否提交        transaction = session.beginTransaction();    }    @Test    public void insertTest()  {        System.out.println("----------insertTest-------------");        News news = new News("新闻", "内容", new Date());        //保存到session        session.save(news);        //session查询ID=1        //News n = (News) session.get(News.class, 1);        //System.out.println(n);    }    @After    public void destroy(){        System.out.println("----------destroy-------------");        //事务提交        transaction.commit();        //关闭session        session.close();        //关闭sessionFactory        sessionFactory.close();    }}

7.到了现在,Hibernate的基本环境已经配置完成了。

1 0
原创粉丝点击